93 lines
3.6 KiB
Go
93 lines
3.6 KiB
Go
/*
|
|
Copyright IBM Corp. 2016 All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package node
|
|
|
|
import (
|
|
"path/filepath"
|
|
"time"
|
|
|
|
coreconfig "github.com/hyperledger/fabric/core/config"
|
|
"github.com/hyperledger/fabric/core/ledger"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func ledgerConfig() *ledger.Config {
|
|
// set defaults
|
|
internalQueryLimit := 1000
|
|
if viper.IsSet("ledger.state.couchDBConfig.internalQueryLimit") {
|
|
internalQueryLimit = viper.GetInt("ledger.state.couchDBConfig.internalQueryLimit")
|
|
}
|
|
maxBatchUpdateSize := 500
|
|
if viper.IsSet("ledger.state.couchDBConfig.maxBatchUpdateSize") {
|
|
maxBatchUpdateSize = viper.GetInt("ledger.state.couchDBConfig.maxBatchUpdateSize")
|
|
}
|
|
collElgProcMaxDbBatchSize := 5000
|
|
if viper.IsSet("ledger.pvtdataStore.collElgProcMaxDbBatchSize") {
|
|
collElgProcMaxDbBatchSize = viper.GetInt("ledger.pvtdataStore.collElgProcMaxDbBatchSize")
|
|
}
|
|
collElgProcDbBatchesInterval := 1000
|
|
if viper.IsSet("ledger.pvtdataStore.collElgProcDbBatchesInterval") {
|
|
collElgProcDbBatchesInterval = viper.GetInt("ledger.pvtdataStore.collElgProcDbBatchesInterval")
|
|
}
|
|
purgeInterval := 100
|
|
if viper.IsSet("ledger.pvtdataStore.purgeInterval") {
|
|
purgeInterval = viper.GetInt("ledger.pvtdataStore.purgeInterval")
|
|
}
|
|
deprioritizedDataReconcilerInterval := 60 * time.Minute
|
|
if viper.IsSet("ledger.pvtdataStore.deprioritizedDataReconcilerInterval") {
|
|
deprioritizedDataReconcilerInterval = viper.GetDuration("ledger.pvtdataStore.deprioritizedDataReconcilerInterval")
|
|
}
|
|
purgedKeyAuditLogging := true
|
|
if viper.IsSet("ledger.pvtdataStore.purgedKeyAuditLogging") {
|
|
purgedKeyAuditLogging = viper.GetBool("ledger.pvtdataStore.purgedKeyAuditLogging")
|
|
}
|
|
|
|
fsPath := coreconfig.GetPath("peer.fileSystemPath")
|
|
ledgersDataRootDir := filepath.Join(fsPath, "ledgersData")
|
|
snapshotsRootDir := viper.GetString("ledger.snapshots.rootDir")
|
|
if snapshotsRootDir == "" {
|
|
snapshotsRootDir = filepath.Join(fsPath, "snapshots")
|
|
}
|
|
conf := &ledger.Config{
|
|
RootFSPath: ledgersDataRootDir,
|
|
StateDBConfig: &ledger.StateDBConfig{
|
|
StateDatabase: viper.GetString("ledger.state.stateDatabase"),
|
|
CouchDB: &ledger.CouchDBConfig{},
|
|
},
|
|
PrivateDataConfig: &ledger.PrivateDataConfig{
|
|
MaxBatchSize: collElgProcMaxDbBatchSize,
|
|
BatchesInterval: collElgProcDbBatchesInterval,
|
|
PurgeInterval: purgeInterval,
|
|
DeprioritizedDataReconcilerInterval: deprioritizedDataReconcilerInterval,
|
|
PurgedKeyAuditLogging: purgedKeyAuditLogging,
|
|
},
|
|
HistoryDBConfig: &ledger.HistoryDBConfig{
|
|
Enabled: viper.GetBool("ledger.history.enableHistoryDatabase"),
|
|
},
|
|
SnapshotsConfig: &ledger.SnapshotsConfig{
|
|
RootDir: snapshotsRootDir,
|
|
},
|
|
}
|
|
|
|
if conf.StateDBConfig.StateDatabase == ledger.CouchDB {
|
|
conf.StateDBConfig.CouchDB = &ledger.CouchDBConfig{
|
|
Address: viper.GetString("ledger.state.couchDBConfig.couchDBAddress"),
|
|
Username: viper.GetString("ledger.state.couchDBConfig.username"),
|
|
Password: viper.GetString("ledger.state.couchDBConfig.password"),
|
|
MaxRetries: viper.GetInt("ledger.state.couchDBConfig.maxRetries"),
|
|
MaxRetriesOnStartup: viper.GetInt("ledger.state.couchDBConfig.maxRetriesOnStartup"),
|
|
RequestTimeout: viper.GetDuration("ledger.state.couchDBConfig.requestTimeout"),
|
|
InternalQueryLimit: internalQueryLimit,
|
|
MaxBatchUpdateSize: maxBatchUpdateSize,
|
|
CreateGlobalChangesDB: viper.GetBool("ledger.state.couchDBConfig.createGlobalChangesDB"),
|
|
RedoLogPath: filepath.Join(ledgersDataRootDir, "couchdbRedoLogs"),
|
|
UserCacheSizeMBs: viper.GetInt("ledger.state.couchDBConfig.cacheSize"),
|
|
}
|
|
}
|
|
return conf
|
|
}
|