internal/master/persistence/h2_file_persistence.go (36 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 (
"fmt"
"sync"
"github.com/alibaba/schedulerx-worker-go/internal/utils"
)
var (
_ TaskPersistence = &H2FilePersistence{}
h2fOnce sync.Once
h2FilePersistence *H2FilePersistence
)
func GetH2FilePersistence() *H2FilePersistence {
h2fOnce.Do(func() {
var err error
h2FilePersistence, err = newH2FilePersistence()
if err != nil {
panic("NewH2FilePersistence err=" + err.Error())
}
})
return h2FilePersistence
}
type H2FilePersistence struct {
*H2Persistence
}
func newH2FilePersistence() (*H2FilePersistence, error) {
h2CP, err := NewH2ConnectionPool(WithDataSourceName(fmt.Sprintf("schedulerx2_%s_sqlite3.db", utils.GetWorkerId())))
if err != nil {
return nil, err
}
fp := &H2FilePersistence{
NewH2Persistence(),
}
fp.h2CP = h2CP
fp.taskDao = NewTaskDao(h2CP)
return fp, nil
}