2021-12-17 10:23:15 +08:00
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
//
// 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 paramtable
import (
2022-12-07 18:01:19 +08:00
"fmt"
2023-03-21 21:37:56 +08:00
"os"
2022-08-30 19:50:57 +08:00
"runtime"
2021-12-17 10:23:15 +08:00
"strconv"
2021-12-23 18:39:11 +08:00
"strings"
2021-12-17 10:23:15 +08:00
"sync"
2021-12-23 18:39:11 +08:00
"time"
2021-12-17 10:23:15 +08:00
2023-02-13 10:24:33 +08:00
"github.com/shirou/gopsutil/v3/disk"
2023-03-21 21:37:56 +08:00
"go.uber.org/zap"
2023-02-13 10:24:33 +08:00
2023-04-06 19:14:32 +08:00
config "github.com/milvus-io/milvus/pkg/config"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/util/metricsinfo"
2021-12-17 10:23:15 +08:00
)
const (
2022-10-12 15:17:23 +08:00
// DefaultRetentionDuration defines the default duration for retention which is 1 days in seconds.
2023-01-18 13:57:43 +08:00
DefaultRetentionDuration = 0
2022-04-08 20:29:33 +08:00
// DefaultIndexSliceSize defines the default slice size of index file when serializing.
2022-11-03 14:39:40 +08:00
DefaultIndexSliceSize = 16
DefaultGracefulTime = 5000 //ms
2022-12-06 22:59:19 +08:00
DefaultGracefulStopTimeout = 30 // s
2022-11-04 12:41:35 +08:00
DefaultThreadCoreCoefficient = 10
2022-09-29 18:35:02 +08:00
2023-02-28 11:13:47 +08:00
DefaultSessionTTL = 20 //s
2022-09-29 18:35:02 +08:00
DefaultSessionRetryTimes = 30
2022-10-14 17:51:24 +08:00
DefaultMaxDegree = 56
DefaultSearchListSize = 100
2022-11-21 16:35:11 +08:00
DefaultPQCodeBudgetGBRatio = 0.125
2022-10-14 17:51:24 +08:00
DefaultBuildNumThreadsRatio = 1.0
2022-11-21 19:35:11 +08:00
DefaultSearchCacheBudgetGBRatio = 0.10
2022-10-14 17:51:24 +08:00
DefaultLoadNumThreadRatio = 8.0
DefaultBeamWidthRatio = 4.0
2021-12-17 10:23:15 +08:00
)
2022-02-09 14:41:45 +08:00
// ComponentParam is used to quickly and easily access all components' configurations.
2022-02-08 20:57:47 +08:00
type ComponentParam struct {
ServiceParam
2022-02-07 10:09:45 +08:00
once sync . Once
2022-01-10 19:03:35 +08:00
2022-10-08 15:38:58 +08:00
CommonCfg commonConfig
QuotaConfig quotaConfig
AutoIndexConfig autoIndexConfig
2023-01-12 16:09:39 +08:00
TraceCfg traceConfig
2021-12-23 18:39:11 +08:00
RootCoordCfg rootCoordConfig
ProxyCfg proxyConfig
QueryCoordCfg queryCoordConfig
QueryNodeCfg queryNodeConfig
DataCoordCfg dataCoordConfig
DataNodeCfg dataNodeConfig
IndexNodeCfg indexNodeConfig
2022-12-16 15:59:23 +08:00
HTTPCfg httpConfig
2023-02-23 11:37:46 +08:00
LogCfg logConfig
2022-12-07 18:01:19 +08:00
HookCfg hookConfig
2022-12-16 15:59:23 +08:00
RootCoordGrpcServerCfg GrpcServerConfig
ProxyGrpcServerCfg GrpcServerConfig
QueryCoordGrpcServerCfg GrpcServerConfig
QueryNodeGrpcServerCfg GrpcServerConfig
DataCoordGrpcServerCfg GrpcServerConfig
DataNodeGrpcServerCfg GrpcServerConfig
IndexNodeGrpcServerCfg GrpcServerConfig
RootCoordGrpcClientCfg GrpcClientConfig
ProxyGrpcClientCfg GrpcClientConfig
QueryCoordGrpcClientCfg GrpcClientConfig
QueryNodeGrpcClientCfg GrpcClientConfig
DataCoordGrpcClientCfg GrpcClientConfig
DataNodeGrpcClientCfg GrpcClientConfig
IndexNodeGrpcClientCfg GrpcClientConfig
2023-01-12 19:49:40 +08:00
IntegrationTestCfg integrationTestConfig
2021-12-23 18:39:11 +08:00
}
2023-01-19 14:53:44 +08:00
// Init initialize once
func ( p * ComponentParam ) Init ( ) {
2021-12-23 18:39:11 +08:00
p . once . Do ( func ( ) {
2023-01-19 14:53:44 +08:00
p . init ( )
2021-12-23 18:39:11 +08:00
} )
}
2023-01-19 14:53:44 +08:00
// init initialize the global param table
func ( p * ComponentParam ) init ( ) {
p . ServiceParam . init ( )
2022-01-10 14:51:34 +08:00
2022-02-08 20:57:47 +08:00
p . CommonCfg . init ( & p . BaseTable )
2022-09-16 09:56:47 +08:00
p . QuotaConfig . init ( & p . BaseTable )
2022-10-08 15:38:58 +08:00
p . AutoIndexConfig . init ( & p . BaseTable )
2023-01-12 16:09:39 +08:00
p . TraceCfg . init ( & p . BaseTable )
2022-01-10 17:29:34 +08:00
2022-02-08 20:57:47 +08:00
p . RootCoordCfg . init ( & p . BaseTable )
p . ProxyCfg . init ( & p . BaseTable )
p . QueryCoordCfg . init ( & p . BaseTable )
p . QueryNodeCfg . init ( & p . BaseTable )
p . DataCoordCfg . init ( & p . BaseTable )
p . DataNodeCfg . init ( & p . BaseTable )
p . IndexNodeCfg . init ( & p . BaseTable )
2022-12-16 15:59:23 +08:00
p . HTTPCfg . init ( & p . BaseTable )
2023-02-23 11:37:46 +08:00
p . LogCfg . init ( & p . BaseTable )
2023-03-24 15:21:59 +08:00
p . HookCfg . init ( & p . BaseTable )
2022-12-16 15:59:23 +08:00
2023-02-23 11:37:46 +08:00
p . RootCoordGrpcServerCfg . Init ( "rootCoord" , & p . BaseTable )
p . ProxyGrpcServerCfg . Init ( "proxy" , & p . BaseTable )
p . ProxyGrpcServerCfg . InternalPort . Export = true
p . QueryCoordGrpcServerCfg . Init ( "queryCoord" , & p . BaseTable )
p . QueryNodeGrpcServerCfg . Init ( "queryNode" , & p . BaseTable )
p . DataCoordGrpcServerCfg . Init ( "dataCoord" , & p . BaseTable )
p . DataNodeGrpcServerCfg . Init ( "dataNode" , & p . BaseTable )
p . IndexNodeGrpcServerCfg . Init ( "indexNode" , & p . BaseTable )
p . RootCoordGrpcClientCfg . Init ( "rootCoord" , & p . BaseTable )
p . ProxyGrpcClientCfg . Init ( "proxy" , & p . BaseTable )
p . QueryCoordGrpcClientCfg . Init ( "queryCoord" , & p . BaseTable )
p . QueryNodeGrpcClientCfg . Init ( "queryNode" , & p . BaseTable )
p . DataCoordGrpcClientCfg . Init ( "dataCoord" , & p . BaseTable )
p . DataNodeGrpcClientCfg . Init ( "dataNode" , & p . BaseTable )
p . IndexNodeGrpcClientCfg . Init ( "indexNode" , & p . BaseTable )
2023-01-12 19:49:40 +08:00
p . IntegrationTestCfg . init ( & p . BaseTable )
2022-01-10 17:29:34 +08:00
}
2023-01-13 15:31:41 +08:00
func ( p * ComponentParam ) GetComponentConfigurations ( componentName string , sub string ) map [ string ] string {
allownPrefixs := append ( globalConfigPrefixs ( ) , componentName + "." )
return p . mgr . GetBy ( config . WithSubstr ( sub ) , config . WithOneOfPrefixs ( allownPrefixs ... ) )
2022-03-24 10:15:25 +08:00
}
2023-01-13 15:31:41 +08:00
func ( p * ComponentParam ) GetAll ( ) map [ string ] string {
return p . mgr . GetConfigs ( )
2022-04-12 19:47:33 +08:00
}
2023-02-01 16:03:51 +08:00
func ( p * ComponentParam ) Watch ( key string , watcher config . EventHandler ) {
p . mgr . Dispatcher . Register ( key , watcher )
}
2022-10-24 23:43:30 +08:00
// /////////////////////////////////////////////////////////////////////////////
2021-12-23 18:39:11 +08:00
// --- common ---
2022-01-10 19:03:35 +08:00
type commonConfig struct {
2023-01-13 15:31:41 +08:00
ClusterPrefix ParamItem ` refreshable:"false" `
2022-12-16 15:59:23 +08:00
// Deprecated: do not use it anymore
ProxySubName ParamItem ` refreshable:"true" `
RootCoordTimeTick ParamItem ` refreshable:"true" `
RootCoordStatistics ParamItem ` refreshable:"true" `
RootCoordDml ParamItem ` refreshable:"false" `
RootCoordDelta ParamItem ` refreshable:"false" `
// Deprecated: do not use it anymore
RootCoordSubName ParamItem ` refreshable:"true" `
// Deprecated: only used in metrics as ID
QueryCoordSearch ParamItem ` refreshable:"true" `
// Deprecated: only used in metrics as ID
QueryCoordSearchResult ParamItem ` refreshable:"true" `
QueryCoordTimeTick ParamItem ` refreshable:"true" `
QueryNodeSubName ParamItem ` refreshable:"false" `
// Deprecated: do not use it anymore
DataCoordStatistic ParamItem ` refreshable:"true" `
DataCoordTimeTick ParamItem ` refreshable:"false" `
DataCoordSegmentInfo ParamItem ` refreshable:"true" `
DataCoordSubName ParamItem ` refreshable:"false" `
DataCoordWatchSubPath ParamItem ` refreshable:"false" `
2023-02-15 16:20:34 +08:00
DataCoordTicklePath ParamItem ` refreshable:"false" `
2022-12-16 15:59:23 +08:00
DataNodeSubName ParamItem ` refreshable:"false" `
2023-02-09 14:28:31 +08:00
DefaultPartitionName ParamItem ` refreshable:"false" `
DefaultIndexName ParamItem ` refreshable:"false" `
2022-12-16 15:59:23 +08:00
RetentionDuration ParamItem ` refreshable:"true" `
EntityExpirationTTL ParamItem ` refreshable:"true" `
IndexSliceSize ParamItem ` refreshable:"false" `
ThreadCoreCoefficient ParamItem ` refreshable:"false" `
MaxDegree ParamItem ` refreshable:"true" `
SearchListSize ParamItem ` refreshable:"true" `
PQCodeBudgetGBRatio ParamItem ` refreshable:"true" `
BuildNumThreadsRatio ParamItem ` refreshable:"true" `
SearchCacheBudgetGBRatio ParamItem ` refreshable:"true" `
LoadNumThreadRatio ParamItem ` refreshable:"true" `
BeamWidthRatio ParamItem ` refreshable:"true" `
GracefulTime ParamItem ` refreshable:"true" `
GracefulStopTimeout ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
2022-12-16 15:59:23 +08:00
TopKLimit ParamItem ` refreshable:"true" `
StorageType ParamItem ` refreshable:"false" `
SimdType ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
2022-12-16 15:59:23 +08:00
AuthorizationEnabled ParamItem ` refreshable:"false" `
SuperUsers ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
2022-12-16 15:59:23 +08:00
ClusterName ParamItem ` refreshable:"false" `
2022-02-02 00:35:43 +08:00
2022-12-16 15:59:23 +08:00
SessionTTL ParamItem ` refreshable:"false" `
SessionRetryTimes ParamItem ` refreshable:"false" `
2023-04-03 16:44:23 +08:00
PreCreatedTopicEnabled ParamItem ` refreshable:"true" `
TopicNames ParamItem ` refreshable:"true" `
TimeTicker ParamItem ` refreshable:"true" `
2022-02-02 00:35:43 +08:00
}
2022-12-07 18:01:19 +08:00
func ( p * commonConfig ) init ( base * BaseTable ) {
// must init cluster prefix first
p . ClusterPrefix = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.cluster" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.cluster" } ,
2023-02-23 11:37:46 +08:00
DefaultValue : "by-dev" ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
2023-02-09 14:28:31 +08:00
Forbidden : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . ClusterPrefix . Init ( base . mgr )
chanNamePrefix := func ( prefix string ) string {
return strings . Join ( [ ] string { p . ClusterPrefix . GetValue ( ) , prefix } , "-" )
}
p . ProxySubName = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.subNamePrefix.proxySubNamePrefix" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.subNamePrefix.proxySubNamePrefix" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . ProxySubName . Init ( base . mgr )
// --- rootcoord ---
p . RootCoordTimeTick = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.rootCoordTimeTick" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.rootCoordTimeTick" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . RootCoordTimeTick . Init ( base . mgr )
p . RootCoordStatistics = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.rootCoordStatistics" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.rootCoordStatistics" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . RootCoordStatistics . Init ( base . mgr )
p . RootCoordDml = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.rootCoordDml" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.rootCoordDml" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . RootCoordDml . Init ( base . mgr )
p . RootCoordDelta = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.rootCoordDelta" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.rootCoordDelta" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . RootCoordDelta . Init ( base . mgr )
p . RootCoordSubName = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.subNamePrefix.rootCoordSubNamePrefix" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.subNamePrefix.rootCoordSubNamePrefix" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . RootCoordSubName . Init ( base . mgr )
p . QueryCoordSearch = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.search" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.search" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . QueryCoordSearch . Init ( base . mgr )
p . QueryCoordSearchResult = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.searchResult" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.searchResult" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . QueryCoordSearchResult . Init ( base . mgr )
p . QueryCoordTimeTick = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.queryTimeTick" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.queryTimeTick" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . QueryCoordTimeTick . Init ( base . mgr )
p . QueryNodeSubName = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.subNamePrefix.queryNodeSubNamePrefix" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.subNamePrefix.queryNodeSubNamePrefix" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . QueryNodeSubName . Init ( base . mgr )
p . DataCoordStatistic = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.dataCoordStatistic" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.dataCoordStatistic" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DataCoordStatistic . Init ( base . mgr )
p . DataCoordTimeTick = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.dataCoordTimeTick" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.dataCoordTimeTick" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DataCoordTimeTick . Init ( base . mgr )
p . DataCoordSegmentInfo = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.chanNamePrefix.dataCoordSegmentInfo" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.chanNamePrefix.dataCoordSegmentInfo" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DataCoordSegmentInfo . Init ( base . mgr )
p . DataCoordSubName = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.subNamePrefix.dataCoordSubNamePrefix" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.subNamePrefix.dataCoordSubNamePrefix" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DataCoordSubName . Init ( base . mgr )
p . DataCoordWatchSubPath = ParamItem {
2023-01-31 10:09:51 +08:00
Key : "msgChannel.subNamePrefix.dataCoordWatchSubPath" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
DefaultValue : "channelwatch" ,
PanicIfEmpty : true ,
}
p . DataCoordWatchSubPath . Init ( base . mgr )
2023-02-15 16:20:34 +08:00
p . DataCoordTicklePath = ParamItem {
Key : "msgChannel.subNamePrefix.dataCoordWatchSubPath" ,
Version : "2.2.3" ,
DefaultValue : "tickle" ,
PanicIfEmpty : true ,
}
p . DataCoordTicklePath . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . DataNodeSubName = ParamItem {
2023-03-03 15:21:48 +08:00
Key : "msgChannel.subNamePrefix.dataNodeSubNamePrefix" ,
2022-12-07 18:01:19 +08:00
Version : "2.1.0" ,
2023-03-03 15:21:48 +08:00
FallbackKeys : [ ] string { "common.subNamePrefix.dataNodeSubNamePrefix" } ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
Formatter : chanNamePrefix ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DataNodeSubName . Init ( base . mgr )
p . DefaultPartitionName = ParamItem {
Key : "common.defaultPartitionName" ,
Version : "2.0.0" ,
DefaultValue : "_default" ,
2023-02-09 14:28:31 +08:00
Forbidden : true ,
2023-02-23 11:37:46 +08:00
Doc : "default partition name for a collection" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DefaultPartitionName . Init ( base . mgr )
p . DefaultIndexName = ParamItem {
Key : "common.defaultIndexName" ,
Version : "2.0.0" ,
DefaultValue : "_default_idx" ,
2023-02-09 14:28:31 +08:00
Forbidden : true ,
2023-02-23 11:37:46 +08:00
Doc : "default index name" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DefaultIndexName . Init ( base . mgr )
p . RetentionDuration = ParamItem {
Key : "common.retentionDuration" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultRetentionDuration ) ,
2023-02-23 11:37:46 +08:00
Doc : "time travel reserved time, insert/delete will not be cleaned in this period. disable it by default" ,
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . RetentionDuration . Init ( base . mgr )
p . EntityExpirationTTL = ParamItem {
Key : "common.entityExpiration" ,
Version : "2.1.0" ,
DefaultValue : "-1" ,
Formatter : func ( value string ) string {
ttl := getAsInt ( value )
if ttl < 0 {
return "-1"
}
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
// make sure ttl is larger than retention duration to ensure time travel works
if ttl > p . RetentionDuration . GetAsInt ( ) {
return strconv . Itoa ( ttl )
}
return p . RetentionDuration . GetValue ( )
} ,
2023-02-23 11:37:46 +08:00
Doc : "Entity expiration in seconds, CAUTION make sure entityExpiration >= retentionDuration and -1 means never expire" ,
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . EntityExpirationTTL . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . SimdType = ParamItem {
Key : "common.simdType" ,
Version : "2.1.0" ,
DefaultValue : "auto" ,
FallbackKeys : [ ] string { "knowhere.simdType" } ,
2023-02-23 11:37:46 +08:00
Doc : ` Default value : auto
Valid values : [ auto , avx512 , avx2 , avx , sse4_2 ]
This configuration is only used by querynode and indexnode , it selects CPU instruction set for Searching and Index - building . ` ,
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . SimdType . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . IndexSliceSize = ParamItem {
Key : "common.indexSliceSize" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultIndexSliceSize ) ,
2023-02-23 11:37:46 +08:00
Doc : "MB" ,
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . IndexSliceSize . Init ( base . mgr )
2022-02-09 14:41:45 +08:00
2022-12-07 18:01:19 +08:00
p . MaxDegree = ParamItem {
Key : "common.DiskIndex.MaxDegree" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultMaxDegree ) ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxDegree . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . SearchListSize = ParamItem {
Key : "common.DiskIndex.SearchListSize" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultSearchListSize ) ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . SearchListSize . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . PQCodeBudgetGBRatio = ParamItem {
Key : "common.DiskIndex.PQCodeBudgetGBRatio" ,
Version : "2.0.0" ,
DefaultValue : fmt . Sprintf ( "%f" , DefaultPQCodeBudgetGBRatio ) ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . PQCodeBudgetGBRatio . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . BuildNumThreadsRatio = ParamItem {
Key : "common.DiskIndex.BuildNumThreadsRatio" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultBuildNumThreadsRatio ) ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . BuildNumThreadsRatio . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . SearchCacheBudgetGBRatio = ParamItem {
Key : "common.DiskIndex.SearchCacheBudgetGBRatio" ,
Version : "2.0.0" ,
DefaultValue : fmt . Sprintf ( "%f" , DefaultSearchCacheBudgetGBRatio ) ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . SearchCacheBudgetGBRatio . Init ( base . mgr )
2022-03-04 11:17:56 +08:00
2022-12-07 18:01:19 +08:00
p . LoadNumThreadRatio = ParamItem {
Key : "common.DiskIndex.LoadNumThreadRatio" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultLoadNumThreadRatio ) ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-04-28 11:51:47 +08:00
}
2022-12-07 18:01:19 +08:00
p . LoadNumThreadRatio . Init ( base . mgr )
2022-04-28 11:51:47 +08:00
2022-12-15 14:03:22 +08:00
p . TopKLimit = ParamItem {
Key : "common.topKLimit" ,
Version : "2.2.1" ,
DefaultValue : "16384" ,
2023-02-23 11:37:46 +08:00
Doc : ` Search limit , which applies on :
maximum # of results to return ( topK ) , and
maximum # of search requests ( nq ) .
Check https : //milvus.io/docs/limitations.md for more details.`,
2022-12-15 14:03:22 +08:00
}
p . TopKLimit . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . BeamWidthRatio = ParamItem {
Key : "common.DiskIndex.BeamWidthRatio" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultBeamWidthRatio ) ,
2023-02-23 11:37:46 +08:00
Doc : "" ,
Export : true ,
2022-03-04 11:17:56 +08:00
}
2022-12-07 18:01:19 +08:00
p . BeamWidthRatio . Init ( base . mgr )
2022-10-14 17:51:24 +08:00
2022-12-07 18:01:19 +08:00
p . GracefulTime = ParamItem {
Key : "common.gracefulTime" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultGracefulTime ) ,
2023-02-23 11:37:46 +08:00
Doc : "milliseconds. it represents the interval (in ms) by which the request arrival time needs to be subtracted in the case of Bounded Consistency." ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . GracefulTime . Init ( base . mgr )
2022-10-14 17:51:24 +08:00
2023-02-23 11:37:46 +08:00
p . GracefulStopTimeout = ParamItem {
Key : "common.gracefulStopTimeout" ,
Version : "2.2.1" ,
DefaultValue : "30" ,
Doc : "seconds. it will force quit the server if the graceful stop process is not completed during this time." ,
Export : true ,
}
p . GracefulStopTimeout . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . StorageType = ParamItem {
Key : "common.storageType" ,
Version : "2.0.0" ,
DefaultValue : "minio" ,
2023-02-23 11:37:46 +08:00
Doc : "please adjust in embedded Milvus: local" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . StorageType . Init ( base . mgr )
2022-10-14 17:51:24 +08:00
2022-12-07 18:01:19 +08:00
p . ThreadCoreCoefficient = ParamItem {
Key : "common.threadCoreCoefficient" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( DefaultThreadCoreCoefficient ) ,
2023-02-23 11:37:46 +08:00
Doc : "This parameter specify how many times the number of threads is the number of cores" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . ThreadCoreCoefficient . Init ( base . mgr )
2022-10-14 17:51:24 +08:00
2022-12-07 18:01:19 +08:00
p . AuthorizationEnabled = ParamItem {
Key : "common.security.authorizationEnabled" ,
Version : "2.0.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . AuthorizationEnabled . Init ( base . mgr )
2022-10-14 17:51:24 +08:00
2022-12-09 16:13:20 +08:00
p . SuperUsers = ParamItem {
Key : "common.security.superUsers" ,
Version : "2.2.1" ,
2023-02-23 11:37:46 +08:00
Doc : ` The superusers will ignore some system check processes ,
like the old password verification when updating the credential ` ,
Export : true ,
2022-12-09 16:13:20 +08:00
}
p . SuperUsers . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . ClusterName = ParamItem {
Key : "common.cluster.name" ,
Version : "2.0.0" ,
DefaultValue : "" ,
}
p . ClusterName . Init ( base . mgr )
2022-05-24 12:05:59 +08:00
2022-12-07 18:01:19 +08:00
p . SessionTTL = ParamItem {
Key : "common.session.ttl" ,
Version : "2.0.0" ,
2023-02-28 11:13:47 +08:00
DefaultValue : "20" ,
2023-02-23 11:37:46 +08:00
Doc : "ttl value when session granting a lease to register service" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . SessionTTL . Init ( base . mgr )
2022-12-06 22:59:19 +08:00
2022-12-07 18:01:19 +08:00
p . SessionRetryTimes = ParamItem {
Key : "common.session.retryTimes" ,
Version : "2.0.0" ,
DefaultValue : "30" ,
2023-02-23 11:37:46 +08:00
Doc : "retry times when session sending etcd requests" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . SessionRetryTimes . Init ( base . mgr )
2022-04-12 19:47:33 +08:00
2023-04-03 16:44:23 +08:00
p . PreCreatedTopicEnabled = ParamItem {
Key : "common.preCreatedTopic.enabled" ,
Version : "2.3.0" ,
DefaultValue : "false" ,
}
p . PreCreatedTopicEnabled . Init ( base . mgr )
p . TopicNames = ParamItem {
Key : "common.preCreatedTopic.names" ,
Version : "2.3.0" ,
}
p . TopicNames . Init ( base . mgr )
p . TimeTicker = ParamItem {
Key : "common.preCreatedTopic.timeticker" ,
Version : "2.3.0" ,
}
p . TimeTicker . Init ( base . mgr )
2022-04-19 16:35:39 +08:00
}
2023-01-12 16:09:39 +08:00
type traceConfig struct {
Exporter ParamItem ` refreshable:"false" `
SampleFraction ParamItem ` refreshable:"false" `
JaegerURL ParamItem ` refreshable:"false" `
2023-03-21 16:31:57 +08:00
OtlpEndpoint ParamItem ` refreshable:"false" `
2023-01-12 16:09:39 +08:00
}
func ( t * traceConfig ) init ( base * BaseTable ) {
t . Exporter = ParamItem {
Key : "trace.exporter" ,
Version : "2.3.0" ,
2023-02-23 11:37:46 +08:00
Doc : ` trace exporter type , default is stdout ,
optional values : [ ' stdout ' , ' jaeger ' ] ` ,
Export : true ,
2023-01-12 16:09:39 +08:00
}
t . Exporter . Init ( base . mgr )
t . SampleFraction = ParamItem {
Key : "trace.sampleFraction" ,
Version : "2.3.0" ,
2023-02-23 11:37:46 +08:00
DefaultValue : "0" ,
Doc : ` fraction of traceID based sampler ,
optional values : [ 0 , 1 ]
Fractions >= 1 will always sample . Fractions < 0 are treated as zero . ` ,
Export : true ,
2023-01-12 16:09:39 +08:00
}
t . SampleFraction . Init ( base . mgr )
t . JaegerURL = ParamItem {
Key : "trace.jaeger.url" ,
Version : "2.3.0" ,
2023-02-23 11:37:46 +08:00
Doc : "when exporter is jaeger should set the jaeger's URL" ,
Export : true ,
2023-01-12 16:09:39 +08:00
}
t . JaegerURL . Init ( base . mgr )
2023-03-21 16:31:57 +08:00
t . OtlpEndpoint = ParamItem {
Key : "trace.otlp.endpoint" ,
Version : "2.3.0" ,
}
t . OtlpEndpoint . Init ( base . mgr )
2023-01-12 16:09:39 +08:00
}
2023-02-23 11:37:46 +08:00
type logConfig struct {
Level ParamItem ` refreshable:"false" `
RootPath ParamItem ` refreshable:"false" `
MaxSize ParamItem ` refreshable:"false" `
MaxAge ParamItem ` refreshable:"false" `
MaxBackups ParamItem ` refreshable:"false" `
Format ParamItem ` refreshable:"false" `
Stdout ParamItem ` refreshable:"false" `
GrpcLogLevel ParamItem ` refreshable:"false" `
}
func ( l * logConfig ) init ( base * BaseTable ) {
l . Level = ParamItem {
Key : "log.level" ,
DefaultValue : "info" ,
Version : "2.0.0" ,
Doc : "Only supports debug, info, warn, error, panic, or fatal. Default 'info'." ,
Export : true ,
}
l . Level . Init ( base . mgr )
l . RootPath = ParamItem {
Key : "log.file.rootPath" ,
Version : "2.0.0" ,
Doc : "root dir path to put logs, default \"\" means no log file will print. please adjust in embedded Milvus: /tmp/milvus/logs" ,
Export : true ,
}
l . RootPath . Init ( base . mgr )
l . MaxSize = ParamItem {
Key : "log.file.maxSize" ,
DefaultValue : "300" ,
Version : "2.0.0" ,
Doc : "MB" ,
Export : true ,
}
l . MaxSize . Init ( base . mgr )
l . MaxAge = ParamItem {
Key : "log.file.maxAge" ,
DefaultValue : "10" ,
Version : "2.0.0" ,
Doc : "Maximum time for log retention in day." ,
Export : true ,
}
l . MaxAge . Init ( base . mgr )
l . MaxBackups = ParamItem {
Key : "log.file.maxBackups" ,
DefaultValue : "20" ,
Version : "2.0.0" ,
Export : true ,
}
l . MaxBackups . Init ( base . mgr )
l . Format = ParamItem {
Key : "log.format" ,
DefaultValue : "text" ,
Version : "2.0.0" ,
Doc : "text or json" ,
Export : true ,
}
l . Format . Init ( base . mgr )
l . Stdout = ParamItem {
Key : "log.stdout" ,
DefaultValue : "true" ,
Version : "2.3.0" ,
Doc : "Stdout enable or not" ,
Export : true ,
}
l . Stdout . Init ( base . mgr )
l . GrpcLogLevel = ParamItem {
Key : "grpc.log.level" ,
DefaultValue : "WARNING" ,
Version : "2.0.0" ,
Export : true ,
}
l . GrpcLogLevel . Init ( base . mgr )
}
2022-12-07 18:01:19 +08:00
// /////////////////////////////////////////////////////////////////////////////
// --- rootcoord ---
type rootCoordConfig struct {
2022-12-16 15:59:23 +08:00
DmlChannelNum ParamItem ` refreshable:"false" `
MaxPartitionNum ParamItem ` refreshable:"true" `
MinSegmentSizeToEnableIndex ParamItem ` refreshable:"true" `
ImportTaskExpiration ParamItem ` refreshable:"true" `
ImportTaskRetention ParamItem ` refreshable:"true" `
2023-01-19 21:31:44 +08:00
ImportMaxPendingTaskCount ParamItem ` refreshable:"true" `
2022-12-16 15:59:23 +08:00
ImportTaskSubPath ParamItem ` refreshable:"true" `
EnableActiveStandby ParamItem ` refreshable:"false" `
2022-08-11 12:12:38 +08:00
}
2022-12-07 18:01:19 +08:00
func ( p * rootCoordConfig ) init ( base * BaseTable ) {
p . DmlChannelNum = ParamItem {
Key : "rootCoord.dmlChannelNum" ,
Version : "2.0.0" ,
DefaultValue : "256" ,
2023-03-03 15:21:48 +08:00
Forbidden : true ,
2023-02-23 11:37:46 +08:00
Doc : "The number of dml channels created at system startup" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . DmlChannelNum . Init ( base . mgr )
2022-09-29 18:35:02 +08:00
2022-12-07 18:01:19 +08:00
p . MaxPartitionNum = ParamItem {
Key : "rootCoord.maxPartitionNum" ,
Version : "2.0.0" ,
DefaultValue : "4096" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum number of partitions in a collection" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxPartitionNum . Init ( base . mgr )
2022-09-29 18:35:02 +08:00
2022-12-07 18:01:19 +08:00
p . MinSegmentSizeToEnableIndex = ParamItem {
Key : "rootCoord.minSegmentSizeToEnableIndex" ,
Version : "2.0.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "It's a threshold. When the segment size is less than this value, the segment will not be indexed" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MinSegmentSizeToEnableIndex . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . ImportTaskExpiration = ParamItem {
Key : "rootCoord.importTaskExpiration" ,
Version : "2.2.0" ,
2023-01-04 14:11:33 +08:00
DefaultValue : "900" , // 15 * 60 seconds
2023-02-23 11:37:46 +08:00
Doc : "(in seconds) Duration after which an import task will expire (be killed). Default 900 seconds (15 minutes)." ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . ImportTaskExpiration . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2022-12-07 18:01:19 +08:00
p . ImportTaskRetention = ParamItem {
Key : "rootCoord.importTaskRetention" ,
Version : "2.2.0" ,
DefaultValue : strconv . Itoa ( 24 * 60 * 60 ) ,
2023-02-23 11:37:46 +08:00
Doc : "(in seconds) Milvus will keep the record of import tasks for at least `importTaskRetention` seconds. Default 86400, seconds (24 hours)." ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . ImportTaskRetention . Init ( base . mgr )
2022-03-25 11:03:25 +08:00
2022-12-07 18:01:19 +08:00
p . ImportTaskSubPath = ParamItem {
Key : "rootCoord.ImportTaskSubPath" ,
Version : "2.2.0" ,
DefaultValue : "importtask" ,
}
p . ImportTaskSubPath . Init ( base . mgr )
2022-09-29 18:35:02 +08:00
2023-01-19 21:31:44 +08:00
p . ImportMaxPendingTaskCount = ParamItem {
Key : "rootCoord.importMaxPendingTaskCount" ,
Version : "2.2.2" ,
DefaultValue : strconv . Itoa ( 65535 ) ,
}
p . ImportMaxPendingTaskCount . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . EnableActiveStandby = ParamItem {
Key : "rootCoord.enableActiveStandby" ,
Version : "2.2.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . EnableActiveStandby . Init ( base . mgr )
2022-02-02 00:35:43 +08:00
2021-12-23 18:39:11 +08:00
}
2022-10-24 23:43:30 +08:00
// /////////////////////////////////////////////////////////////////////////////
2021-12-23 18:39:11 +08:00
// --- proxy ---
2022-11-10 17:09:06 +08:00
type AccessLogConfig struct {
2023-02-23 11:37:46 +08:00
Enable ParamItem ` refreshable:"false" `
MinioEnable ParamItem ` refreshable:"false" `
LocalPath ParamItem ` refreshable:"false" `
Filename ParamItem ` refreshable:"false" `
MaxSize ParamItem ` refreshable:"false" `
RotatedTime ParamItem ` refreshable:"false" `
MaxBackups ParamItem ` refreshable:"false" `
RemotePath ParamItem ` refreshable:"false" `
2022-12-16 15:59:23 +08:00
RemoteMaxTime ParamItem ` refreshable:"false" `
2022-11-10 17:09:06 +08:00
}
2021-12-23 18:39:11 +08:00
type proxyConfig struct {
2022-12-07 18:01:19 +08:00
// Alias string
2022-12-16 15:59:23 +08:00
SoPath ParamItem ` refreshable:"false" `
TimeTickInterval ParamItem ` refreshable:"false" `
MsgStreamTimeTickBufSize ParamItem ` refreshable:"true" `
MaxNameLength ParamItem ` refreshable:"true" `
MaxUsernameLength ParamItem ` refreshable:"true" `
MinPasswordLength ParamItem ` refreshable:"true" `
MaxPasswordLength ParamItem ` refreshable:"true" `
MaxFieldNum ParamItem ` refreshable:"true" `
MaxShardNum ParamItem ` refreshable:"true" `
MaxDimension ParamItem ` refreshable:"true" `
GinLogging ParamItem ` refreshable:"false" `
MaxUserNum ParamItem ` refreshable:"true" `
MaxRoleNum ParamItem ` refreshable:"true" `
MaxTaskNum ParamItem ` refreshable:"false" `
2022-11-10 17:09:06 +08:00
AccessLog AccessLogConfig
2023-03-08 15:13:51 +08:00
ShardLeaderCacheInterval ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
}
2022-02-08 20:57:47 +08:00
func ( p * proxyConfig ) init ( base * BaseTable ) {
2022-12-07 18:01:19 +08:00
p . TimeTickInterval = ParamItem {
Key : "proxy.timeTickInterval" ,
Version : "2.2.0" ,
DefaultValue : "200" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "ms, the interval that proxy synchronize the time tick" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . TimeTickInterval . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MsgStreamTimeTickBufSize = ParamItem {
Key : "proxy.msgStream.timeTick.bufSize" ,
Version : "2.2.0" ,
DefaultValue : "512" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MsgStreamTimeTickBufSize . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MaxNameLength = ParamItem {
Key : "proxy.maxNameLength" ,
DefaultValue : "255" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum length of name for a collection or alias" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxNameLength . Init ( base . mgr )
2022-09-23 09:50:52 +08:00
2022-12-07 18:01:19 +08:00
p . MinPasswordLength = ParamItem {
Key : "proxy.minPasswordLength" ,
DefaultValue : "6" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
}
p . MinPasswordLength . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MaxUsernameLength = ParamItem {
Key : "proxy.maxUsernameLength" ,
DefaultValue : "32" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
}
p . MaxUsernameLength . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MaxPasswordLength = ParamItem {
Key : "proxy.maxPasswordLength" ,
DefaultValue : "256" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxPasswordLength . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MaxFieldNum = ParamItem {
Key : "proxy.maxFieldNum" ,
DefaultValue : "64" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : ` Maximum number of fields in a collection .
As of today ( 2.2 .0 and after ) it is strongly DISCOURAGED to set maxFieldNum >= 64.
So adjust at your risk ! ` ,
Export : true ,
2022-04-11 19:49:34 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxFieldNum . Init ( base . mgr )
2022-04-11 19:49:34 +08:00
2022-12-07 18:01:19 +08:00
p . MaxShardNum = ParamItem {
Key : "proxy.maxShardNum" ,
2023-02-07 14:43:57 +08:00
DefaultValue : "64" ,
2022-12-07 18:01:19 +08:00
Version : "2.0.0" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum number of shards in a collection" ,
Export : true ,
2022-04-20 13:03:40 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxShardNum . Init ( base . mgr )
2022-04-20 13:03:40 +08:00
2022-12-07 18:01:19 +08:00
p . MaxDimension = ParamItem {
Key : "proxy.maxDimension" ,
DefaultValue : "32768" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum dimension of a vector" ,
Export : true ,
2022-04-11 19:49:34 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxDimension . Init ( base . mgr )
2022-04-11 19:49:34 +08:00
2022-12-07 18:01:19 +08:00
p . MaxTaskNum = ParamItem {
Key : "proxy.maxTaskNum" ,
Version : "2.2.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "max task number of proxy task queue" ,
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxTaskNum . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . GinLogging = ParamItem {
Key : "proxy.ginLogging" ,
Version : "2.2.0" ,
DefaultValue : "true" ,
2023-02-23 11:37:46 +08:00
Doc : ` Whether to produce gin logs . \ n
please adjust in embedded Milvus : false ` ,
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . GinLogging . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MaxUserNum = ParamItem {
Key : "proxy.maxUserNum" ,
DefaultValue : "100" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxUserNum . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MaxRoleNum = ParamItem {
Key : "proxy.maxRoleNum" ,
DefaultValue : "10" ,
Version : "2.0.0" ,
PanicIfEmpty : true ,
}
p . MaxRoleNum . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . SoPath = ParamItem {
Key : "proxy.soPath" ,
Version : "2.2.0" ,
DefaultValue : "" ,
}
p . SoPath . Init ( base . mgr )
2022-03-10 10:35:59 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . Enable = ParamItem {
Key : "proxy.accessLog.enable" ,
Version : "2.2.0" ,
DefaultValue : "true" ,
2023-02-23 11:37:46 +08:00
Doc : "if use access log" ,
2022-08-04 11:04:34 +08:00
}
2022-12-07 18:01:19 +08:00
p . AccessLog . Enable . Init ( base . mgr )
2022-08-04 11:04:34 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . MinioEnable = ParamItem {
Key : "proxy.accessLog.minioEnable" ,
Version : "2.2.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Doc : "if upload sealed access log file to minio" ,
2022-08-04 11:04:34 +08:00
}
2022-12-07 18:01:19 +08:00
p . AccessLog . MinioEnable . Init ( base . mgr )
2022-08-04 11:04:34 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . LocalPath = ParamItem {
Key : "proxy.accessLog.localPath" ,
Version : "2.2.0" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . AccessLog . LocalPath . Init ( base . mgr )
2022-11-10 17:09:06 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . Filename = ParamItem {
Key : "proxy.accessLog.filename" ,
Version : "2.2.0" ,
DefaultValue : "milvus_access_log.log" ,
2023-02-23 11:37:46 +08:00
Doc : "Log filename, leave empty to disable file log." ,
Export : true ,
2022-11-10 17:09:06 +08:00
}
2022-12-07 18:01:19 +08:00
p . AccessLog . Filename . Init ( base . mgr )
2022-11-10 17:09:06 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . MaxSize = ParamItem {
Key : "proxy.accessLog.maxSize" ,
Version : "2.2.0" ,
DefaultValue : "64" ,
2023-02-23 11:37:46 +08:00
Doc : "Max size for a single file, in MB." ,
2022-11-10 17:09:06 +08:00
}
2022-12-07 18:01:19 +08:00
p . AccessLog . MaxSize . Init ( base . mgr )
2022-11-10 17:09:06 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . MaxBackups = ParamItem {
Key : "proxy.accessLog.maxBackups" ,
Version : "2.2.0" ,
DefaultValue : "8" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum number of old log files to retain." ,
2022-11-10 17:09:06 +08:00
}
2022-12-07 18:01:19 +08:00
p . AccessLog . MaxBackups . Init ( base . mgr )
2022-11-10 17:09:06 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . RotatedTime = ParamItem {
Key : "proxy.accessLog.rotatedTime" ,
Version : "2.2.0" ,
DefaultValue : "3600" ,
2023-02-23 11:37:46 +08:00
Doc : "Max time for single access log file in seconds" ,
2022-12-07 18:01:19 +08:00
}
p . AccessLog . RotatedTime . Init ( base . mgr )
2022-11-10 17:09:06 +08:00
2022-12-07 18:01:19 +08:00
p . AccessLog . RemotePath = ParamItem {
Key : "proxy.accessLog.remotePath" ,
Version : "2.2.0" ,
DefaultValue : "access_log/" ,
2023-02-23 11:37:46 +08:00
Doc : "File path in minIO" ,
2022-12-07 18:01:19 +08:00
}
p . AccessLog . RemotePath . Init ( base . mgr )
2022-12-08 19:39:19 +08:00
p . AccessLog . RemoteMaxTime = ParamItem {
Key : "proxy.accessLog.remoteMaxTime" ,
Version : "2.2.0" ,
DefaultValue : "168" ,
2023-02-23 11:37:46 +08:00
Doc : "Max time for log file in minIO, in hours" ,
2022-12-08 19:39:19 +08:00
}
p . AccessLog . RemoteMaxTime . Init ( base . mgr )
2023-03-08 15:13:51 +08:00
p . ShardLeaderCacheInterval = ParamItem {
Key : "proxy.shardLeaderCacheInterval" ,
Version : "2.2.4" ,
DefaultValue : "30" ,
Doc : "time interval to update shard leader cache, in seconds" ,
}
p . ShardLeaderCacheInterval . Init ( base . mgr )
2022-11-10 17:09:06 +08:00
}
2022-11-29 17:19:14 +08:00
// /////////////////////////////////////////////////////////////////////////////
2021-12-23 18:39:11 +08:00
// --- querycoord ---
type queryCoordConfig struct {
2022-12-16 15:59:23 +08:00
//Deprecated: Since 2.2.0
RetryNum ParamItem ` refreshable:"true" `
//Deprecated: Since 2.2.0
RetryInterval ParamItem ` refreshable:"true" `
TaskMergeCap ParamItem ` refreshable:"false" `
TaskExecutionCap ParamItem ` refreshable:"true" `
2022-07-18 13:06:28 +08:00
2021-12-23 18:39:11 +08:00
//---- Handoff ---
2022-12-16 15:59:23 +08:00
//Deprecated: Since 2.2.2
AutoHandoff ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
//---- Balance ---
2022-12-16 15:59:23 +08:00
AutoBalance ParamItem ` refreshable:"true" `
2023-04-03 14:16:25 +08:00
Balancer ParamItem ` refreshable:"true" `
GlobalRowCountFactor ParamItem ` refreshable:"true" `
ScoreUnbalanceTolerationFactor ParamItem ` refreshable:"true" `
2022-12-16 15:59:23 +08:00
OverloadedMemoryThresholdPercentage ParamItem ` refreshable:"true" `
BalanceIntervalSeconds ParamItem ` refreshable:"true" `
MemoryUsageMaxDifferencePercentage ParamItem ` refreshable:"true" `
CheckInterval ParamItem ` refreshable:"true" `
ChannelTaskTimeout ParamItem ` refreshable:"true" `
SegmentTaskTimeout ParamItem ` refreshable:"true" `
DistPullInterval ParamItem ` refreshable:"false" `
HeartbeatAvailableInterval ParamItem ` refreshable:"true" `
LoadTimeoutSeconds ParamItem ` refreshable:"true" `
//Deprecated: Since 2.2.2, QueryCoord do not use HandOff logic anymore
CheckHandoffInterval ParamItem ` refreshable:"true" `
EnableActiveStandby ParamItem ` refreshable:"false" `
2023-01-30 10:19:48 +08:00
NextTargetSurviveTime ParamItem ` refreshable:"true" `
UpdateNextTargetInterval ParamItem ` refreshable:"false" `
CheckNodeInReplicaInterval ParamItem ` refreshable:"false" `
CheckResourceGroupInterval ParamItem ` refreshable:"false" `
EnableRGAutoRecover ParamItem ` refreshable:"true" `
2023-04-20 09:52:31 +08:00
CheckHealthInterval ParamItem ` refreshable:"false" `
CheckHealthRPCTimeout ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
}
2022-02-08 20:57:47 +08:00
func ( p * queryCoordConfig ) init ( base * BaseTable ) {
2022-07-18 13:06:28 +08:00
//---- Task ---
2022-12-07 18:01:19 +08:00
p . RetryNum = ParamItem {
Key : "queryCoord.task.retrynum" ,
Version : "2.2.0" ,
DefaultValue : "5" ,
}
p . RetryNum . Init ( base . mgr )
2022-07-18 13:06:28 +08:00
2022-12-07 18:01:19 +08:00
p . RetryInterval = ParamItem {
Key : "queryCoord.task.retryinterval" ,
Version : "2.2.0" ,
DefaultValue : strconv . FormatInt ( int64 ( 10 * time . Second ) , 10 ) ,
}
p . RetryInterval . Init ( base . mgr )
2022-09-24 17:56:51 +08:00
2022-12-07 18:01:19 +08:00
p . TaskMergeCap = ParamItem {
Key : "queryCoord.taskMergeCap" ,
Version : "2.2.0" ,
DefaultValue : "16" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . TaskMergeCap . Init ( base . mgr )
2022-11-30 13:57:15 +08:00
2022-12-07 18:01:19 +08:00
p . TaskExecutionCap = ParamItem {
Key : "queryCoord.taskExecutionCap" ,
Version : "2.2.0" ,
DefaultValue : "256" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . TaskExecutionCap . Init ( base . mgr )
p . AutoHandoff = ParamItem {
Key : "queryCoord.autoHandoff" ,
Version : "2.0.0" ,
DefaultValue : "true" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "Enable auto handoff" ,
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . AutoHandoff . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . AutoBalance = ParamItem {
Key : "queryCoord.autoBalance" ,
Version : "2.0.0" ,
2023-04-03 14:16:25 +08:00
DefaultValue : "true" ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "Enable auto balance" ,
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . AutoBalance . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2023-04-03 14:16:25 +08:00
p . Balancer = ParamItem {
Key : "queryCoord.balancer" ,
Version : "2.0.0" ,
DefaultValue : "RowCountBasedBalancer" ,
PanicIfEmpty : true ,
Doc : "auto balancer used for segments on queryNodes" ,
Export : true ,
}
p . Balancer . Init ( base . mgr )
p . GlobalRowCountFactor = ParamItem {
Key : "queryCoord.globalRowCountFactor" ,
Version : "2.0.0" ,
DefaultValue : "0.1" ,
PanicIfEmpty : true ,
Doc : "the weight used when balancing segments among queryNodes" ,
Export : true ,
}
p . GlobalRowCountFactor . Init ( base . mgr )
p . ScoreUnbalanceTolerationFactor = ParamItem {
Key : "queryCoord.scoreUnbalanceTolerationFactor" ,
Version : "2.0.0" ,
DefaultValue : "1.3" ,
PanicIfEmpty : true ,
Doc : "the largest value for unbalanced extent between from and to nodes when doing balance" ,
Export : true ,
}
p . ScoreUnbalanceTolerationFactor . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . OverloadedMemoryThresholdPercentage = ParamItem {
Key : "queryCoord.overloadedMemoryThresholdPercentage" ,
Version : "2.0.0" ,
DefaultValue : "90" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "The threshold percentage that memory overload" ,
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . OverloadedMemoryThresholdPercentage . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . BalanceIntervalSeconds = ParamItem {
Key : "queryCoord.balanceIntervalSeconds" ,
Version : "2.0.0" ,
DefaultValue : "60" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . BalanceIntervalSeconds . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . MemoryUsageMaxDifferencePercentage = ParamItem {
Key : "queryCoord.memoryUsageMaxDifferencePercentage" ,
Version : "2.0.0" ,
DefaultValue : "30" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . MemoryUsageMaxDifferencePercentage . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . CheckInterval = ParamItem {
Key : "queryCoord.checkInterval" ,
Version : "2.0.0" ,
2023-04-09 16:14:32 +08:00
DefaultValue : "10000" ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . CheckInterval . Init ( base . mgr )
2022-09-29 18:35:02 +08:00
2022-12-07 18:01:19 +08:00
p . ChannelTaskTimeout = ParamItem {
Key : "queryCoord.channelTaskTimeout" ,
Version : "2.0.0" ,
DefaultValue : "60000" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "1 minute" ,
Export : true ,
2022-09-15 18:48:32 +08:00
}
2022-12-07 18:01:19 +08:00
p . ChannelTaskTimeout . Init ( base . mgr )
2022-09-15 18:48:32 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentTaskTimeout = ParamItem {
Key : "queryCoord.segmentTaskTimeout" ,
Version : "2.0.0" ,
DefaultValue : "120000" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "2 minute" ,
Export : true ,
2022-09-15 18:48:32 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentTaskTimeout . Init ( base . mgr )
2022-09-15 18:48:32 +08:00
2022-12-07 18:01:19 +08:00
p . DistPullInterval = ParamItem {
Key : "queryCoord.distPullInterval" ,
Version : "2.0.0" ,
DefaultValue : "500" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-09-15 18:48:32 +08:00
}
2022-12-07 18:01:19 +08:00
p . DistPullInterval . Init ( base . mgr )
2022-09-15 18:48:32 +08:00
2022-12-07 18:01:19 +08:00
p . LoadTimeoutSeconds = ParamItem {
Key : "queryCoord.loadTimeoutSeconds" ,
Version : "2.0.0" ,
DefaultValue : "600" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-09-15 18:48:32 +08:00
}
2022-12-07 18:01:19 +08:00
p . LoadTimeoutSeconds . Init ( base . mgr )
2022-12-05 15:09:20 +08:00
2022-12-07 18:01:19 +08:00
p . HeartbeatAvailableInterval = ParamItem {
Key : "queryCoord.heartbeatAvailableInterval" ,
Version : "2.2.1" ,
2022-12-08 19:09:18 +08:00
DefaultValue : "10000" ,
2022-12-07 18:01:19 +08:00
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "10s, Only QueryNodes which fetched heartbeats within the duration are available" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . HeartbeatAvailableInterval . Init ( base . mgr )
2022-09-15 18:48:32 +08:00
2022-12-16 15:59:23 +08:00
p . CheckHandoffInterval = ParamItem {
Key : "queryCoord.checkHandoffInterval" ,
DefaultValue : "5000" ,
Version : "2.2.0" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-16 15:59:23 +08:00
}
p . CheckHandoffInterval . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . EnableActiveStandby = ParamItem {
Key : "queryCoord.enableActiveStandby" ,
Version : "2.2.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-09-15 18:48:32 +08:00
}
2022-12-07 18:01:19 +08:00
p . EnableActiveStandby . Init ( base . mgr )
2022-09-15 18:48:32 +08:00
2022-12-07 18:01:19 +08:00
p . NextTargetSurviveTime = ParamItem {
Key : "queryCoord.NextTargetSurviveTime" ,
Version : "2.0.0" ,
DefaultValue : "300" ,
PanicIfEmpty : true ,
2022-11-07 19:37:04 +08:00
}
2022-12-07 18:01:19 +08:00
p . NextTargetSurviveTime . Init ( base . mgr )
2022-11-07 19:37:04 +08:00
2022-12-07 18:01:19 +08:00
p . UpdateNextTargetInterval = ParamItem {
Key : "queryCoord.UpdateNextTargetInterval" ,
Version : "2.0.0" ,
DefaultValue : "10" ,
PanicIfEmpty : true ,
2022-11-07 19:37:04 +08:00
}
2022-12-07 18:01:19 +08:00
p . UpdateNextTargetInterval . Init ( base . mgr )
2023-01-30 10:19:48 +08:00
p . CheckNodeInReplicaInterval = ParamItem {
Key : "queryCoord.checkNodeInReplicaInterval" ,
Version : "2.2.3" ,
DefaultValue : "60" ,
PanicIfEmpty : true ,
}
p . CheckNodeInReplicaInterval . Init ( base . mgr )
p . CheckResourceGroupInterval = ParamItem {
Key : "queryCoord.checkResourceGroupInterval" ,
Version : "2.2.3" ,
2023-02-09 16:24:31 +08:00
DefaultValue : "10" ,
2023-01-30 10:19:48 +08:00
PanicIfEmpty : true ,
}
p . CheckResourceGroupInterval . Init ( base . mgr )
p . EnableRGAutoRecover = ParamItem {
Key : "queryCoord.enableRGAutoRecover" ,
Version : "2.2.3" ,
DefaultValue : "true" ,
PanicIfEmpty : true ,
}
p . EnableRGAutoRecover . Init ( base . mgr )
2023-04-20 09:52:31 +08:00
p . CheckHealthInterval = ParamItem {
Key : "queryCoord.checkHealthInterval" ,
Version : "2.2.7" ,
DefaultValue : "3000" ,
PanicIfEmpty : true ,
Doc : "3s, the interval when query coord try to check health of query node" ,
Export : true ,
}
p . CheckHealthInterval . Init ( base . mgr )
p . CheckHealthRPCTimeout = ParamItem {
Key : "queryCoord.checkHealthRPCTimeout" ,
Version : "2.2.7" ,
DefaultValue : "100" ,
PanicIfEmpty : true ,
Doc : "100ms, the timeout of check health rpc to query node" ,
Export : true ,
}
p . CheckHealthRPCTimeout . Init ( base . mgr )
2022-11-07 19:37:04 +08:00
}
2022-10-24 23:43:30 +08:00
// /////////////////////////////////////////////////////////////////////////////
2021-12-23 18:39:11 +08:00
// --- querynode ---
type queryNodeConfig struct {
2023-03-24 15:21:59 +08:00
SoPath ParamItem ` refreshable:"false" `
2022-12-16 15:59:23 +08:00
FlowGraphMaxQueueLength ParamItem ` refreshable:"false" `
FlowGraphMaxParallelism ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
// stats
2022-12-16 15:59:23 +08:00
//Deprecated: Never used
StatsPublishInterval ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
// segcore
2023-04-26 10:14:41 +08:00
KnowhereThreadPoolSize ParamItem ` refreshable:"false" `
ChunkRows ParamItem ` refreshable:"false" `
EnableGrowingSegmentIndex ParamItem ` refreshable:"false" `
GrowingIndexNlist ParamItem ` refreshable:"false" `
GrowingIndexNProbe ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
// memory limit
2022-12-16 15:59:23 +08:00
LoadMemoryUsageFactor ParamItem ` refreshable:"true" `
OverloadedMemoryThresholdPercentage ParamItem ` refreshable:"false" `
2022-03-26 22:05:26 +08:00
2022-09-21 20:16:51 +08:00
// enable disk
2022-12-16 15:59:23 +08:00
EnableDisk ParamItem ` refreshable:"true" `
DiskCapacityLimit ParamItem ` refreshable:"true" `
MaxDiskUsagePercentage ParamItem ` refreshable:"true" `
2022-09-21 20:16:51 +08:00
2022-03-26 22:05:26 +08:00
// cache limit
2022-12-16 15:59:23 +08:00
CacheEnabled ParamItem ` refreshable:"false" `
CacheMemoryLimit ParamItem ` refreshable:"false" `
2023-03-01 18:07:49 +08:00
MmapDirPath ParamItem ` refreshable:"false" `
2022-12-16 15:59:23 +08:00
GroupEnabled ParamItem ` refreshable:"true" `
MaxReceiveChanSize ParamItem ` refreshable:"false" `
MaxUnsolvedQueueSize ParamItem ` refreshable:"true" `
MaxReadConcurrency ParamItem ` refreshable:"true" `
MaxGroupNQ ParamItem ` refreshable:"true" `
TopKMergeRatio ParamItem ` refreshable:"true" `
CPURatio ParamItem ` refreshable:"true" `
2022-12-29 15:17:30 +08:00
MaxTimestampLag ParamItem ` refreshable:"true" `
2023-03-27 00:42:00 +08:00
GCEnabled ParamItem ` refreshable:"true" `
2022-12-16 15:59:23 +08:00
GCHelperEnabled ParamItem ` refreshable:"false" `
MinimumGOGCConfig ParamItem ` refreshable:"false" `
MaximumGOGCConfig ParamItem ` refreshable:"false" `
GracefulStopTimeout ParamItem ` refreshable:"false" `
2023-03-27 00:42:00 +08:00
// delete buffer
MaxSegmentDeleteBuffer ParamItem ` refreshable:"false" `
2023-04-13 14:50:28 +08:00
// loader
IoPoolSize ParamItem ` refreshable:"false" `
2022-12-07 18:01:19 +08:00
}
2022-05-23 16:41:58 +08:00
2022-12-07 18:01:19 +08:00
func ( p * queryNodeConfig ) init ( base * BaseTable ) {
2023-03-24 15:21:59 +08:00
p . SoPath = ParamItem {
Key : "queryNode.soPath" ,
Version : "2.3.0" ,
DefaultValue : "" ,
}
p . SoPath . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . FlowGraphMaxQueueLength = ParamItem {
Key : "queryNode.dataSync.flowGraph.maxQueueLength" ,
Version : "2.0.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum length of task queue in flowgraph" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . FlowGraphMaxQueueLength . Init ( base . mgr )
p . FlowGraphMaxParallelism = ParamItem {
Key : "queryNode.dataSync.flowGraph.maxParallelism" ,
Version : "2.0.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum number of tasks executed in parallel in the flowgraph" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . FlowGraphMaxParallelism . Init ( base . mgr )
p . StatsPublishInterval = ParamItem {
Key : "queryNode.stats.publishInterval" ,
Version : "2.0.0" ,
DefaultValue : "1000" ,
2023-02-23 11:37:46 +08:00
Doc : "Interval for querynode to report node information (milliseconds)" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . StatsPublishInterval . Init ( base . mgr )
2023-04-17 10:44:29 +08:00
p . KnowhereThreadPoolSize = ParamItem {
Key : "queryNode.segcore.knowhereThreadPoolNumRatio" ,
Version : "2.0.0" ,
DefaultValue : "4" ,
Formatter : func ( v string ) string {
factor := getAsInt64 ( v )
if factor <= 0 || ! p . EnableDisk . GetAsBool ( ) {
factor = 1
} else if factor > 32 {
factor = 32
}
knowhereThreadPoolSize := uint32 ( runtime . GOMAXPROCS ( 0 ) ) * uint32 ( factor )
return strconv . FormatUint ( uint64 ( knowhereThreadPoolSize ) , 10 )
} ,
Doc : "The number of threads in knowhere's thread pool. If disk is enabled, the pool size will multiply with knowhereThreadPoolNumRatio([1, 32])." ,
Export : true ,
}
p . KnowhereThreadPoolSize . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . ChunkRows = ParamItem {
Key : "queryNode.segcore.chunkRows" ,
Version : "2.0.0" ,
DefaultValue : "1024" ,
Formatter : func ( v string ) string {
if getAsInt ( v ) < 1024 {
return "1024"
}
return v
} ,
2023-02-23 11:37:46 +08:00
Doc : "The number of vectors in a chunk." ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . ChunkRows . Init ( base . mgr )
2023-04-26 10:14:41 +08:00
p . EnableGrowingSegmentIndex = ParamItem {
Key : "queryNode.segcore.growing.enableIndex" ,
Version : "2.0.0" ,
DefaultValue : "false" ,
Doc : "Enable segment growing with index to accelerate vector search." ,
Export : true ,
}
p . EnableGrowingSegmentIndex . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
2023-04-26 10:14:41 +08:00
p . GrowingIndexNlist = ParamItem {
Key : "queryNode.segcore.growing.nlist" ,
Version : "2.0.0" ,
DefaultValue : "128" ,
Doc : "growing index nlist, recommend to set sqrt(chunkRows), must smaller than chunkRows/8" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
2023-04-26 10:14:41 +08:00
p . GrowingIndexNlist . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
2023-04-26 10:14:41 +08:00
p . GrowingIndexNProbe = ParamItem {
Key : "queryNode.segcore.growing.nprobe" ,
2022-12-07 18:01:19 +08:00
Version : "2.0.0" ,
Formatter : func ( v string ) string {
2023-04-26 10:14:41 +08:00
defaultNprobe := p . GrowingIndexNlist . GetAsInt64 ( ) / 8
2022-12-07 18:01:19 +08:00
nprobe := getAsInt64 ( v )
if nprobe == 0 {
nprobe = defaultNprobe
}
2023-04-26 10:14:41 +08:00
if nprobe > p . GrowingIndexNlist . GetAsInt64 ( ) {
return p . GrowingIndexNlist . GetValue ( )
2022-12-07 18:01:19 +08:00
}
return strconv . FormatInt ( nprobe , 10 )
} ,
2023-02-23 11:37:46 +08:00
Doc : "nprobe to search small index, based on your accuracy requirement, must smaller than nlist" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
2023-04-26 10:14:41 +08:00
p . GrowingIndexNProbe . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . LoadMemoryUsageFactor = ParamItem {
Key : "queryNode.loadMemoryUsageFactor" ,
Version : "2.0.0" ,
DefaultValue : "3" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "The multiply factor of calculating the memory usage while loading segments" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . LoadMemoryUsageFactor . Init ( base . mgr )
p . OverloadedMemoryThresholdPercentage = ParamItem {
Key : "queryCoord.overloadedMemoryThresholdPercentage" ,
Version : "2.0.0" ,
DefaultValue : "90" ,
PanicIfEmpty : true ,
Formatter : func ( v string ) string {
return fmt . Sprintf ( "%f" , getAsFloat ( v ) / 100 )
} ,
}
p . OverloadedMemoryThresholdPercentage . Init ( base . mgr )
p . CacheMemoryLimit = ParamItem {
Key : "queryNode.cache.memoryLimit" ,
Version : "2.0.0" ,
DefaultValue : "2147483648" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "2 GB, 2 * 1024 *1024 *1024" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . CacheMemoryLimit . Init ( base . mgr )
p . CacheEnabled = ParamItem {
Key : "queryNode.cache.enabled" ,
Version : "2.0.0" ,
DefaultValue : "" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . CacheEnabled . Init ( base . mgr )
2023-03-01 18:07:49 +08:00
p . MmapDirPath = ParamItem {
Key : "queryNode.mmapDirPath" ,
Version : "2.3.0" ,
DefaultValue : "" ,
Doc : "The folder that storing data files for mmap, setting to a path will enable Milvus to load data with mmap" ,
}
p . MmapDirPath . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . GroupEnabled = ParamItem {
Key : "queryNode.grouping.enabled" ,
Version : "2.0.0" ,
DefaultValue : "true" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . GroupEnabled . Init ( base . mgr )
p . MaxReceiveChanSize = ParamItem {
Key : "queryNode.scheduler.receiveChanSize" ,
Version : "2.0.0" ,
DefaultValue : "10240" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxReceiveChanSize . Init ( base . mgr )
p . MaxReadConcurrency = ParamItem {
Key : "queryNode.scheduler.maxReadConcurrentRatio" ,
Version : "2.0.0" ,
DefaultValue : "2.0" ,
Formatter : func ( v string ) string {
ratio := getAsFloat ( v )
cpuNum := int64 ( runtime . GOMAXPROCS ( 0 ) )
concurrency := int64 ( float64 ( cpuNum ) * ratio )
if concurrency < 1 {
return "1" // MaxReadConcurrency must >= 1
} else if concurrency > cpuNum * 100 {
return strconv . FormatInt ( cpuNum * 100 , 10 ) // MaxReadConcurrency must <= 100*cpuNum
}
return strconv . FormatInt ( concurrency , 10 )
} ,
2023-02-23 11:37:46 +08:00
Doc : ` maxReadConcurrentRatio is the concurrency ratio of read task ( search task and query task ) .
Max read concurrency would be the value of ` + "runtime.NumCPU * maxReadConcurrentRatio" + ` .
It defaults to 2.0 , which means max read concurrency would be the value of runtime . NumCPU * 2.
Max read concurrency must greater than or equal to 1 , and less than or equal to runtime . NumCPU * 100.
( 0 , 100 ] ` ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxReadConcurrency . Init ( base . mgr )
p . MaxUnsolvedQueueSize = ParamItem {
Key : "queryNode.scheduler.unsolvedQueueSize" ,
Version : "2.0.0" ,
DefaultValue : "10240" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxUnsolvedQueueSize . Init ( base . mgr )
p . MaxGroupNQ = ParamItem {
Key : "queryNode.grouping.maxNQ" ,
Version : "2.0.0" ,
DefaultValue : "1000" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxGroupNQ . Init ( base . mgr )
p . TopKMergeRatio = ParamItem {
Key : "queryNode.grouping.topKMergeRatio" ,
Version : "2.0.0" ,
DefaultValue : "10.0" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . TopKMergeRatio . Init ( base . mgr )
p . CPURatio = ParamItem {
Key : "queryNode.scheduler.cpuRatio" ,
Version : "2.0.0" ,
DefaultValue : "10" ,
2023-02-23 11:37:46 +08:00
Doc : "ratio used to estimate read task cpu usage." ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . CPURatio . Init ( base . mgr )
p . EnableDisk = ParamItem {
Key : "queryNode.enableDisk" ,
Version : "2.2.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Doc : "enable querynode load disk index, and search on disk index" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . EnableDisk . Init ( base . mgr )
p . DiskCapacityLimit = ParamItem {
Key : "LOCAL_STORAGE_SIZE" ,
Version : "2.2.0" ,
Formatter : func ( v string ) string {
if len ( v ) == 0 {
diskUsage , err := disk . Usage ( "/" )
if err != nil {
panic ( err )
}
return strconv . FormatUint ( diskUsage . Total , 10 )
}
diskSize := getAsInt64 ( v )
return strconv . FormatInt ( diskSize * 1024 * 1024 * 1024 , 10 )
} ,
}
p . DiskCapacityLimit . Init ( base . mgr )
p . MaxDiskUsagePercentage = ParamItem {
Key : "queryNode.maxDiskUsagePercentage" ,
Version : "2.2.0" ,
DefaultValue : "95" ,
PanicIfEmpty : true ,
Formatter : func ( v string ) string {
return fmt . Sprintf ( "%f" , getAsFloat ( v ) / 100 )
} ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxDiskUsagePercentage . Init ( base . mgr )
2022-12-29 15:17:30 +08:00
p . MaxTimestampLag = ParamItem {
Key : "queryNode.scheduler.maxTimestampLag" ,
Version : "2.2.3" ,
DefaultValue : "86400" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-29 15:17:30 +08:00
}
p . MaxTimestampLag . Init ( base . mgr )
2023-03-27 00:42:00 +08:00
p . GCEnabled = ParamItem {
Key : "queryNode.gcenabled" ,
Version : "2.3.0" ,
DefaultValue : "true" ,
}
p . GCEnabled . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . GCHelperEnabled = ParamItem {
Key : "queryNode.gchelper.enabled" ,
Version : "2.0.0" ,
DefaultValue : "true" ,
}
p . GCHelperEnabled . Init ( base . mgr )
p . MaximumGOGCConfig = ParamItem {
Key : "queryNode.gchelper.maximumGoGC" ,
Version : "2.0.0" ,
DefaultValue : "200" ,
}
p . MaximumGOGCConfig . Init ( base . mgr )
p . MinimumGOGCConfig = ParamItem {
Key : "queryNode.gchelper.minimumGoGC" ,
Version : "2.0.0" ,
DefaultValue : "30" ,
}
p . MinimumGOGCConfig . Init ( base . mgr )
p . GracefulStopTimeout = ParamItem {
Key : "queryNode.gracefulStopTimeout" ,
Version : "2.2.1" ,
FallbackKeys : [ ] string { "common.gracefulStopTimeout" } ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . GracefulStopTimeout . Init ( base . mgr )
2023-03-27 00:42:00 +08:00
p . MaxSegmentDeleteBuffer = ParamItem {
Key : "queryNode.maxSegmentDeleteBuffer" ,
Version : "2.3.0" ,
DefaultValue : "10000000" ,
}
p . MaxSegmentDeleteBuffer . Init ( base . mgr )
2023-04-13 14:50:28 +08:00
p . IoPoolSize = ParamItem {
Key : "queryNode.ioPoolSize" ,
Version : "2.3.0" ,
DefaultValue : "0" ,
Doc : "Control how many goroutines will the loader use to pull files, if the given value is non-positive, the value will be set to CpuNum * 8, at least 32, and at most 256" ,
}
p . IoPoolSize . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
}
2022-11-04 22:25:01 +08:00
2022-12-07 18:01:19 +08:00
// /////////////////////////////////////////////////////////////////////////////
// --- datacoord ---
type dataCoordConfig struct {
2022-12-06 22:59:19 +08:00
2022-12-07 18:01:19 +08:00
// --- CHANNEL ---
2023-03-20 10:01:56 +08:00
WatchTimeoutInterval ParamItem ` refreshable:"false" `
ChannelBalanceSilentDuration ParamItem ` refreshable:"true" `
ChannelBalanceInterval ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
// --- SEGMENTS ---
2022-12-16 15:59:23 +08:00
SegmentMaxSize ParamItem ` refreshable:"false" `
DiskSegmentMaxSize ParamItem ` refreshable:"true" `
SegmentSealProportion ParamItem ` refreshable:"false" `
SegAssignmentExpiration ParamItem ` refreshable:"true" `
SegmentMaxLifetime ParamItem ` refreshable:"false" `
SegmentMaxIdleTime ParamItem ` refreshable:"false" `
SegmentMinSizeFromIdleToSealed ParamItem ` refreshable:"false" `
2022-12-20 14:09:25 +08:00
SegmentMaxBinlogFileNumber ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
// compaction
2022-12-16 15:59:23 +08:00
EnableCompaction ParamItem ` refreshable:"false" `
EnableAutoCompaction ParamItem ` refreshable:"true" `
MinSegmentToMerge ParamItem ` refreshable:"true" `
MaxSegmentToMerge ParamItem ` refreshable:"true" `
SegmentSmallProportion ParamItem ` refreshable:"true" `
SegmentCompactableProportion ParamItem ` refreshable:"true" `
SegmentExpansionRate ParamItem ` refreshable:"true" `
CompactionTimeoutInSeconds ParamItem ` refreshable:"true" `
CompactionCheckIntervalInSeconds ParamItem ` refreshable:"false" `
SingleCompactionRatioThreshold ParamItem ` refreshable:"true" `
SingleCompactionDeltaLogMaxSize ParamItem ` refreshable:"true" `
SingleCompactionExpiredLogMaxSize ParamItem ` refreshable:"true" `
SingleCompactionDeltalogMaxNum ParamItem ` refreshable:"true" `
GlobalCompactionInterval ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
// Garbage Collection
2022-12-16 15:59:23 +08:00
EnableGarbageCollection ParamItem ` refreshable:"false" `
GCInterval ParamItem ` refreshable:"false" `
GCMissingTolerance ParamItem ` refreshable:"false" `
GCDropTolerance ParamItem ` refreshable:"false" `
EnableActiveStandby ParamItem ` refreshable:"false" `
2023-01-04 19:37:36 +08:00
2023-02-05 17:21:53 +08:00
BindIndexNodeMode ParamItem ` refreshable:"false" `
IndexNodeAddress ParamItem ` refreshable:"false" `
WithCredential ParamItem ` refreshable:"false" `
IndexNodeID ParamItem ` refreshable:"false" `
IndexTaskSchedulerInterval ParamItem ` refreshable:"false" `
2023-01-04 19:37:36 +08:00
MinSegmentNumRowsToEnableIndex ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
func ( p * dataCoordConfig ) init ( base * BaseTable ) {
2023-02-15 16:20:34 +08:00
p . WatchTimeoutInterval = ParamItem {
Key : "dataCoord.channel.watchTimeoutInterval" ,
Version : "2.2.3" ,
2023-04-17 11:02:30 +08:00
DefaultValue : "120" ,
2023-02-23 11:37:46 +08:00
Doc : "Timeout on watching channels (in seconds). Datanode tickler update watch progress will reset timeout timer." ,
Export : true ,
2022-05-05 09:49:50 +08:00
}
2023-02-15 16:20:34 +08:00
p . WatchTimeoutInterval . Init ( base . mgr )
2022-05-05 09:49:50 +08:00
2023-03-20 10:01:56 +08:00
p . ChannelBalanceSilentDuration = ParamItem {
Key : "dataCoord.channel.balanceSilentDuration" ,
Version : "2.2.3" ,
DefaultValue : "300" ,
Doc : "The duration after which the channel manager start background channel balancing" ,
Export : true ,
}
p . ChannelBalanceSilentDuration . Init ( base . mgr )
p . ChannelBalanceInterval = ParamItem {
Key : "dataCoord.channel.balanceInterval" ,
Version : "2.2.3" ,
DefaultValue : "360" ,
Doc : "The interval with which the channel manager check dml channel balance status" ,
Export : true ,
}
p . ChannelBalanceInterval . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . SegmentMaxSize = ParamItem {
Key : "dataCoord.segment.maxSize" ,
Version : "2.0.0" ,
DefaultValue : "512" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum size of a segment in MB" ,
Export : true ,
2022-05-05 09:49:50 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentMaxSize . Init ( base . mgr )
2022-05-05 09:49:50 +08:00
2022-12-07 18:01:19 +08:00
p . DiskSegmentMaxSize = ParamItem {
Key : "dataCoord.segment.diskSegmentMaxSize" ,
Version : "2.0.0" ,
DefaultValue : "512" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximun size of a segment in MB for collection which has Disk index" ,
Export : true ,
2022-05-05 09:49:50 +08:00
}
2022-12-07 18:01:19 +08:00
p . DiskSegmentMaxSize . Init ( base . mgr )
2022-05-05 09:49:50 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentSealProportion = ParamItem {
Key : "dataCoord.segment.sealProportion" ,
Version : "2.0.0" ,
2022-12-15 18:31:23 +08:00
DefaultValue : "0.25" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-05-05 09:49:50 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentSealProportion . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . SegAssignmentExpiration = ParamItem {
Key : "dataCoord.segment.assignmentExpiration" ,
Version : "2.0.0" ,
DefaultValue : "2000" ,
2023-02-23 11:37:46 +08:00
Doc : "The time of the assignment expiration in ms" ,
Export : true ,
2022-06-09 18:16:07 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegAssignmentExpiration . Init ( base . mgr )
2022-06-09 18:16:07 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentMaxLifetime = ParamItem {
Key : "dataCoord.segment.maxLife" ,
Version : "2.0.0" ,
2022-12-15 18:31:23 +08:00
DefaultValue : "86400" ,
2023-02-23 11:37:46 +08:00
Doc : "The max lifetime of segment in seconds, 24*60*60" ,
Export : true ,
2021-12-23 18:39:11 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentMaxLifetime . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentMaxIdleTime = ParamItem {
Key : "dataCoord.segment.maxIdleTime" ,
Version : "2.0.0" ,
DefaultValue : "3600" ,
2023-02-23 11:37:46 +08:00
Doc : ` If a segment didn't accept dml records in ` + "maxIdleTime" + ` and the size of segment is greater than
` + "minSizeFromIdleToSealed" + ` , Milvus will automatically seal it .
The max idle time of segment in seconds , 10 * 60. ` ,
Export : true ,
2022-04-07 22:05:32 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentMaxIdleTime . Init ( base . mgr )
2022-04-24 22:03:44 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentMinSizeFromIdleToSealed = ParamItem {
Key : "dataCoord.segment.minSizeFromIdleToSealed" ,
Version : "2.0.0" ,
DefaultValue : "16.0" ,
2023-02-23 11:37:46 +08:00
Doc : "The min size in MB of segment which can be idle from sealed." ,
Export : true ,
2022-03-26 22:05:26 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentMinSizeFromIdleToSealed . Init ( base . mgr )
2022-03-26 22:05:26 +08:00
2022-12-20 14:09:25 +08:00
p . SegmentMaxBinlogFileNumber = ParamItem {
Key : "dataCoord.segment.maxBinlogFileNumber" ,
2023-02-03 17:07:52 +08:00
Version : "2.2.0" ,
2023-02-13 10:24:33 +08:00
DefaultValue : "32" ,
2023-02-23 11:37:46 +08:00
Doc : ` The max number of binlog file for one segment , the segment will be sealed if
the number of binlog file reaches to max value . ` ,
Export : true ,
2022-12-20 14:09:25 +08:00
}
p . SegmentMaxBinlogFileNumber . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . EnableCompaction = ParamItem {
Key : "dataCoord.enableCompaction" ,
Version : "2.0.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Doc : "Enable data segment compaction" ,
Export : true ,
2022-07-04 15:10:20 +08:00
}
2022-12-07 18:01:19 +08:00
p . EnableCompaction . Init ( base . mgr )
2022-05-23 16:41:58 +08:00
2022-12-07 18:01:19 +08:00
p . EnableAutoCompaction = ParamItem {
Key : "dataCoord.compaction.enableAutoCompaction" ,
Version : "2.0.0" ,
2023-03-02 07:21:48 +08:00
DefaultValue : "true" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-09-21 20:16:51 +08:00
}
2022-12-07 18:01:19 +08:00
p . EnableAutoCompaction . Init ( base . mgr )
2022-09-21 20:16:51 +08:00
2022-12-07 18:01:19 +08:00
p . MinSegmentToMerge = ParamItem {
Key : "dataCoord.compaction.min.segment" ,
Version : "2.0.0" ,
2022-12-12 10:33:26 +08:00
DefaultValue : "3" ,
2022-09-21 20:16:51 +08:00
}
2022-12-07 18:01:19 +08:00
p . MinSegmentToMerge . Init ( base . mgr )
2022-09-21 20:16:51 +08:00
2022-12-07 18:01:19 +08:00
p . MaxSegmentToMerge = ParamItem {
Key : "dataCoord.compaction.max.segment" ,
Version : "2.0.0" ,
DefaultValue : "30" ,
2022-09-21 20:16:51 +08:00
}
2022-12-07 18:01:19 +08:00
p . MaxSegmentToMerge . Init ( base . mgr )
2022-09-21 20:16:51 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentSmallProportion = ParamItem {
Key : "dataCoord.segment.smallProportion" ,
Version : "2.0.0" ,
DefaultValue : "0.5" ,
2023-02-23 11:37:46 +08:00
Doc : "The segment is considered as \"small segment\" when its # of rows is smaller than" ,
Export : true ,
2022-09-21 20:16:51 +08:00
}
2022-12-07 18:01:19 +08:00
p . SegmentSmallProportion . Init ( base . mgr )
2022-06-15 23:14:10 +08:00
2022-12-07 18:01:19 +08:00
p . SegmentCompactableProportion = ParamItem {
Key : "dataCoord.segment.compactableProportion" ,
Version : "2.2.1" ,
DefaultValue : "0.5" ,
2023-02-23 11:37:46 +08:00
Doc : ` ( smallProportion * segment max # of rows ) .
A compaction will happen on small segments if the segment after compaction will have ` ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . SegmentCompactableProportion . Init ( base . mgr )
2022-08-23 15:50:52 +08:00
2022-12-09 16:03:20 +08:00
p . SegmentExpansionRate = ParamItem {
Key : "dataCoord.segment.expansionRate" ,
Version : "2.2.1" ,
DefaultValue : "1.25" ,
2023-02-23 11:37:46 +08:00
Doc : ` over ( compactableProportion * segment max # of rows ) rows .
MUST BE GREATER THAN OR EQUAL TO < smallProportion > ! ! !
During compaction , the size of segment # of rows is able to exceed segment max # of rows by ( expansionRate - 1 ) * 100 % . ` ,
Export : true ,
2022-12-09 16:03:20 +08:00
}
p . SegmentExpansionRate . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . CompactionTimeoutInSeconds = ParamItem {
Key : "dataCoord.compaction.timeout" ,
Version : "2.0.0" ,
2023-02-07 10:05:56 +08:00
DefaultValue : "300" ,
2022-12-07 18:01:19 +08:00
}
p . CompactionTimeoutInSeconds . Init ( base . mgr )
2022-06-15 23:14:10 +08:00
2022-12-07 18:01:19 +08:00
p . CompactionCheckIntervalInSeconds = ParamItem {
Key : "dataCoord.compaction.check.interval" ,
Version : "2.0.0" ,
DefaultValue : "10" ,
}
p . CompactionCheckIntervalInSeconds . Init ( base . mgr )
2022-06-15 23:14:10 +08:00
2022-12-07 18:01:19 +08:00
p . SingleCompactionRatioThreshold = ParamItem {
Key : "dataCoord.compaction.single.ratio.threshold" ,
Version : "2.0.0" ,
DefaultValue : "0.2" ,
}
p . SingleCompactionRatioThreshold . Init ( base . mgr )
2022-06-15 23:14:10 +08:00
2022-12-07 18:01:19 +08:00
p . SingleCompactionDeltaLogMaxSize = ParamItem {
Key : "dataCoord.compaction.single.deltalog.maxsize" ,
Version : "2.0.0" ,
DefaultValue : strconv . Itoa ( 2 * 1024 * 1024 ) ,
}
p . SingleCompactionDeltaLogMaxSize . Init ( base . mgr )
2022-06-15 23:14:10 +08:00
2022-12-07 18:01:19 +08:00
p . SingleCompactionExpiredLogMaxSize = ParamItem {
Key : "dataCoord.compaction.single.expiredlog.maxsize" ,
Version : "2.0.0" ,
DefaultValue : "10485760" ,
}
p . SingleCompactionExpiredLogMaxSize . Init ( base . mgr )
2022-06-15 23:14:10 +08:00
2022-12-12 10:33:26 +08:00
p . SingleCompactionDeltalogMaxNum = ParamItem {
Key : "dataCoord.compaction.single.deltalog.maxnum" ,
2022-12-07 18:01:19 +08:00
Version : "2.0.0" ,
2023-02-07 10:05:56 +08:00
DefaultValue : "200" ,
2022-12-07 18:01:19 +08:00
}
2022-12-12 10:33:26 +08:00
p . SingleCompactionDeltalogMaxNum . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . GlobalCompactionInterval = ParamItem {
Key : "dataCoord.compaction.global.interval" ,
Version : "2.0.0" ,
DefaultValue : "60" ,
}
p . GlobalCompactionInterval . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . EnableGarbageCollection = ParamItem {
Key : "dataCoord.enableGarbageCollection" ,
Version : "2.0.0" ,
DefaultValue : "true" ,
2023-02-23 11:37:46 +08:00
Doc : "" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . EnableGarbageCollection . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . GCInterval = ParamItem {
Key : "dataCoord.gc.interval" ,
Version : "2.0.0" ,
DefaultValue : "3600" ,
2023-02-23 11:37:46 +08:00
Doc : "gc interval in seconds" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . GCInterval . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . GCMissingTolerance = ParamItem {
Key : "dataCoord.gc.missingTolerance" ,
Version : "2.0.0" ,
DefaultValue : "86400" ,
2023-02-23 11:37:46 +08:00
Doc : "file meta missing tolerance duration in seconds, 60*24" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . GCMissingTolerance . Init ( base . mgr )
2022-06-06 15:10:05 +08:00
2022-12-07 18:01:19 +08:00
p . GCDropTolerance = ParamItem {
Key : "dataCoord.gc.dropTolerance" ,
Version : "2.0.0" ,
2023-02-07 10:05:56 +08:00
DefaultValue : "3600" ,
2023-02-23 11:37:46 +08:00
Doc : "file belongs to dropped entity tolerance duration in seconds. 3600" ,
Export : true ,
2022-06-06 15:10:05 +08:00
}
2022-12-07 18:01:19 +08:00
p . GCDropTolerance . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . EnableActiveStandby = ParamItem {
Key : "dataCoord.enableActiveStandby" ,
Version : "2.0.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . EnableActiveStandby . Init ( base . mgr )
2023-01-04 19:37:36 +08:00
p . MinSegmentNumRowsToEnableIndex = ParamItem {
2023-01-31 12:07:50 +08:00
Key : "indexCoord.segment.minSegmentNumRowsToEnableIndex" ,
2023-01-04 19:37:36 +08:00
Version : "2.0.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "It's a threshold. When the segment num rows is less than this value, the segment will not be indexed" ,
Export : true ,
2023-01-04 19:37:36 +08:00
}
p . MinSegmentNumRowsToEnableIndex . Init ( base . mgr )
p . BindIndexNodeMode = ParamItem {
2023-01-31 12:07:50 +08:00
Key : "indexCoord.bindIndexNodeMode.enable" ,
2023-01-04 19:37:36 +08:00
Version : "2.0.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2023-01-04 19:37:36 +08:00
}
p . BindIndexNodeMode . Init ( base . mgr )
p . IndexNodeAddress = ParamItem {
2023-01-31 12:07:50 +08:00
Key : "indexCoord.bindIndexNodeMode.address" ,
2023-01-04 19:37:36 +08:00
Version : "2.0.0" ,
DefaultValue : "localhost:22930" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2023-01-04 19:37:36 +08:00
}
p . IndexNodeAddress . Init ( base . mgr )
p . WithCredential = ParamItem {
2023-01-31 12:07:50 +08:00
Key : "indexCoord.bindIndexNodeMode.withCred" ,
2023-01-04 19:37:36 +08:00
Version : "2.0.0" ,
DefaultValue : "false" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2023-01-04 19:37:36 +08:00
}
p . WithCredential . Init ( base . mgr )
p . IndexNodeID = ParamItem {
2023-01-31 12:07:50 +08:00
Key : "indexCoord.bindIndexNodeMode.nodeID" ,
2023-01-04 19:37:36 +08:00
Version : "2.0.0" ,
DefaultValue : "0" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2023-01-04 19:37:36 +08:00
}
p . IndexNodeID . Init ( base . mgr )
2023-02-05 17:21:53 +08:00
p . IndexTaskSchedulerInterval = ParamItem {
Key : "indexCoord.scheduler.interval" ,
Version : "2.0.0" ,
DefaultValue : "1000" ,
}
p . IndexTaskSchedulerInterval . Init ( base . mgr )
2022-09-29 18:35:02 +08:00
}
2022-10-24 23:43:30 +08:00
// /////////////////////////////////////////////////////////////////////////////
2021-12-23 18:39:11 +08:00
// --- datanode ---
type dataNodeConfig struct {
2022-12-16 15:59:23 +08:00
FlowGraphMaxQueueLength ParamItem ` refreshable:"false" `
FlowGraphMaxParallelism ParamItem ` refreshable:"false" `
2022-11-12 21:09:04 +08:00
// segment
2022-12-16 15:59:23 +08:00
FlushInsertBufferSize ParamItem ` refreshable:"true" `
FlushDeleteBufferBytes ParamItem ` refreshable:"true" `
BinLogMaxSize ParamItem ` refreshable:"true" `
SyncPeriod ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
2023-02-15 16:20:34 +08:00
// watchEvent
WatchEventTicklerInterval ParamItem ` refreshable:"false" `
2022-07-07 14:32:21 +08:00
// io concurrency to fetch stats logs
2022-12-16 15:59:23 +08:00
IOConcurrency ParamItem ` refreshable:"false" `
2023-02-27 17:47:51 +08:00
// memory management
2023-03-21 21:37:56 +08:00
MemoryForceSyncEnable ParamItem ` refreshable:"true" `
MemoryForceSyncSegmentNum ParamItem ` refreshable:"true" `
MemoryWatermark ParamItem ` refreshable:"true" `
2023-03-24 22:24:04 +08:00
// DataNode send timetick interval per collection
DataNodeTimeTickInterval ParamItem ` refreshable:"false" `
2023-03-28 20:06:10 +08:00
// Skip BF
SkipBFStatsLoad ParamItem ` refreshable:"true" `
2021-12-23 18:39:11 +08:00
}
2022-02-08 20:57:47 +08:00
func ( p * dataNodeConfig ) init ( base * BaseTable ) {
2022-12-07 18:01:19 +08:00
p . FlowGraphMaxQueueLength = ParamItem {
Key : "dataNode.dataSync.flowGraph.maxQueueLength" ,
Version : "2.0.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum length of task queue in flowgraph" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . FlowGraphMaxQueueLength . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . FlowGraphMaxParallelism = ParamItem {
Key : "dataNode.dataSync.flowGraph.maxParallelism" ,
Version : "2.0.0" ,
DefaultValue : "1024" ,
2023-02-23 11:37:46 +08:00
Doc : "Maximum number of tasks executed in parallel in the flowgraph" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . FlowGraphMaxParallelism . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2022-12-07 18:01:19 +08:00
p . FlushInsertBufferSize = ParamItem {
2023-02-23 11:37:46 +08:00
Key : "dataNode.segment.insertBufSize" ,
2022-12-07 18:01:19 +08:00
Version : "2.0.0" ,
2023-02-23 11:37:46 +08:00
FallbackKeys : [ ] string { "DATA_NODE_IBUFSIZE" } ,
2022-12-07 18:01:19 +08:00
DefaultValue : "16777216" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "Max buffer size to flush for a single segment." ,
Export : true ,
2022-08-01 10:04:33 +08:00
}
2022-12-07 18:01:19 +08:00
p . FlushInsertBufferSize . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2023-02-27 17:47:51 +08:00
p . MemoryForceSyncEnable = ParamItem {
Key : "datanode.memory.forceSyncEnable" ,
Version : "2.2.4" ,
DefaultValue : "true" ,
}
p . MemoryForceSyncEnable . Init ( base . mgr )
2023-03-21 21:37:56 +08:00
p . MemoryForceSyncSegmentNum = ParamItem {
Key : "datanode.memory.forceSyncSegmentNum" ,
2023-02-27 17:47:51 +08:00
Version : "2.2.4" ,
2023-03-21 21:37:56 +08:00
DefaultValue : "1" ,
}
p . MemoryForceSyncSegmentNum . Init ( base . mgr )
if os . Getenv ( metricsinfo . DeployModeEnvKey ) == metricsinfo . StandaloneDeployMode {
p . MemoryWatermark = ParamItem {
Key : "datanode.memory.watermarkStandalone" ,
Version : "2.2.4" ,
DefaultValue : "0.2" ,
}
} else if os . Getenv ( metricsinfo . DeployModeEnvKey ) == metricsinfo . ClusterDeployMode {
p . MemoryWatermark = ParamItem {
Key : "datanode.memory.watermarkCluster" ,
Version : "2.2.4" ,
DefaultValue : "0.5" ,
}
} else {
log . Warn ( "DeployModeEnv is not set, use default" , zap . Float64 ( "default" , 0.5 ) )
p . MemoryWatermark = ParamItem {
Key : "datanode.memory.watermarkCluster" ,
Version : "2.2.4" ,
DefaultValue : "0.5" ,
}
}
p . MemoryWatermark . Init ( base . mgr )
2023-02-27 17:47:51 +08:00
2022-12-07 18:01:19 +08:00
p . FlushDeleteBufferBytes = ParamItem {
2023-02-23 11:37:46 +08:00
Key : "dataNode.segment.deleteBufBytes" ,
2022-12-07 18:01:19 +08:00
Version : "2.0.0" ,
DefaultValue : "67108864" ,
2023-02-23 11:37:46 +08:00
Doc : "Max buffer size to flush del for a single channel" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . FlushDeleteBufferBytes . Init ( base . mgr )
2022-11-07 18:49:02 +08:00
2022-12-12 10:33:26 +08:00
p . BinLogMaxSize = ParamItem {
2023-02-23 11:37:46 +08:00
Key : "dataNode.segment.binlog.maxsize" ,
2022-12-12 10:33:26 +08:00
Version : "2.0.0" ,
DefaultValue : "67108864" ,
}
p . BinLogMaxSize . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . SyncPeriod = ParamItem {
2023-02-23 11:37:46 +08:00
Key : "dataNode.segment.syncPeriod" ,
2022-12-07 18:01:19 +08:00
Version : "2.0.0" ,
DefaultValue : "600" ,
2023-02-23 11:37:46 +08:00
Doc : "The period to sync segments if buffer is not empty." ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . SyncPeriod . Init ( base . mgr )
2022-11-12 21:09:04 +08:00
2023-02-15 16:20:34 +08:00
p . WatchEventTicklerInterval = ParamItem {
Key : "datanode.segment.watchEventTicklerInterval" ,
Version : "2.2.3" ,
DefaultValue : "15" ,
}
p . WatchEventTicklerInterval . Init ( base . mgr )
2022-12-07 18:01:19 +08:00
p . IOConcurrency = ParamItem {
Key : "dataNode.dataSync.ioConcurrency" ,
Version : "2.0.0" ,
DefaultValue : "10" ,
}
p . IOConcurrency . Init ( base . mgr )
2021-12-23 18:39:11 +08:00
2023-03-24 22:24:04 +08:00
p . DataNodeTimeTickInterval = ParamItem {
Key : "datanode.timetick.interval" ,
Version : "2.2.5" ,
PanicIfEmpty : false ,
DefaultValue : "500" ,
}
p . DataNodeTimeTickInterval . Init ( base . mgr )
2023-03-28 20:06:10 +08:00
p . SkipBFStatsLoad = ParamItem {
Key : "dataNode.skip.BFStats.Load" ,
Version : "2.2.5" ,
PanicIfEmpty : false ,
DefaultValue : "false" ,
}
p . SkipBFStatsLoad . Init ( base . mgr )
2022-07-07 14:32:21 +08:00
}
2022-10-24 23:43:30 +08:00
// /////////////////////////////////////////////////////////////////////////////
2021-12-23 18:39:11 +08:00
// --- indexnode ---
type indexNodeConfig struct {
2022-12-16 15:59:23 +08:00
BuildParallel ParamItem ` refreshable:"false" `
2022-09-21 20:16:51 +08:00
// enable disk
2022-12-16 15:59:23 +08:00
EnableDisk ParamItem ` refreshable:"false" `
DiskCapacityLimit ParamItem ` refreshable:"true" `
MaxDiskUsagePercentage ParamItem ` refreshable:"true" `
2022-12-16 10:03:27 +08:00
2022-12-16 15:59:23 +08:00
GracefulStopTimeout ParamItem ` refreshable:"false" `
2021-12-23 18:39:11 +08:00
}
2022-02-08 20:57:47 +08:00
func ( p * indexNodeConfig ) init ( base * BaseTable ) {
2022-12-07 18:01:19 +08:00
p . BuildParallel = ParamItem {
Key : "indexNode.scheduler.buildParallel" ,
Version : "2.0.0" ,
DefaultValue : "1" ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . BuildParallel . Init ( base . mgr )
p . EnableDisk = ParamItem {
Key : "indexNode.enableDisk" ,
Version : "2.2.0" ,
DefaultValue : "false" ,
PanicIfEmpty : true ,
2023-02-23 11:37:46 +08:00
Doc : "enable index node build disk vector index" ,
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . EnableDisk . Init ( base . mgr )
p . DiskCapacityLimit = ParamItem {
Key : "LOCAL_STORAGE_SIZE" ,
Version : "2.2.0" ,
Formatter : func ( v string ) string {
if len ( v ) == 0 {
diskUsage , err := disk . Usage ( "/" )
if err != nil {
panic ( err )
}
return strconv . FormatUint ( diskUsage . Total , 10 )
}
diskSize := getAsInt64 ( v )
return strconv . FormatInt ( diskSize * 1024 * 1024 * 1024 , 10 )
} ,
}
p . DiskCapacityLimit . Init ( base . mgr )
p . MaxDiskUsagePercentage = ParamItem {
Key : "indexNode.maxDiskUsagePercentage" ,
Version : "2.2.0" ,
DefaultValue : "95" ,
PanicIfEmpty : true ,
Formatter : func ( v string ) string {
return fmt . Sprintf ( "%f" , getAsFloat ( v ) / 100 )
} ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-07 18:01:19 +08:00
}
p . MaxDiskUsagePercentage . Init ( base . mgr )
2022-12-16 10:03:27 +08:00
p . GracefulStopTimeout = ParamItem {
Key : "indexNode.gracefulStopTimeout" ,
Version : "2.2.1" ,
FallbackKeys : [ ] string { "common.gracefulStopTimeout" } ,
2023-02-23 11:37:46 +08:00
Export : true ,
2022-12-16 10:03:27 +08:00
}
p . GracefulStopTimeout . Init ( base . mgr )
2022-09-21 20:16:51 +08:00
}
2023-01-12 19:49:40 +08:00
type integrationTestConfig struct {
IntegrationMode ParamItem ` refreshable:"false" `
}
func ( p * integrationTestConfig ) init ( base * BaseTable ) {
p . IntegrationMode = ParamItem {
Key : "integration.test.mode" ,
Version : "2.2.0" ,
DefaultValue : "false" ,
PanicIfEmpty : true ,
}
p . IntegrationMode . Init ( base . mgr )
}