internal/master/persistence/h2_memory_persistence.go (32 lines of code) (raw):

/* * Copyright (c) 2023 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package persistence import "sync" var ( _ TaskPersistence = &H2MemoryPersistence{} h2mOnce sync.Once h2MemoryPersistence *H2MemoryPersistence ) func GetH2MemoryPersistence() *H2MemoryPersistence { var err error h2mOnce.Do(func() { h2MemoryPersistence, err = newH2MemoryPersistence() if err != nil { panic("NewH2MemoryPersistence err=" + err.Error()) } }) return h2MemoryPersistence } // H2MemoryPersistence is a singleton, so that only executes initTable on the first initialization type H2MemoryPersistence struct { *H2Persistence } func newH2MemoryPersistence() (*H2MemoryPersistence, error) { h2CP, err := NewH2ConnectionPool(WithDataSourceName(memoryModeDataSourceName)) if err != nil { return nil, err } fp := &H2MemoryPersistence{ NewH2Persistence(), } fp.h2CP = h2CP fp.taskDao = NewTaskDao(h2CP) return fp, nil }