Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// UUID cn store uuid
UUID string `toml:"uuid"`
// Role cn node role, [AP|TP]
Role string `toml:"role"`
// ListenAddress listening address for receiving external requests
ListenAddress string `toml:"listen-address"`
// ServiceAddress service address for communication, if this address is not set, use
// ListenAddress as the communication address.
ServiceAddress string `toml:"service-address"`
// SQLAddress service address for receiving external sql client
SQLAddress string `toml:"sql-address"`
// PortBase is the base port for the service. We reserve reservedPorts for
// the service to start internal server inside it.
//
// TODO(volgariver6): The value of this field is also used to determine the version
// of MO. If it is not set, we use the old listen-address/service-address fields, and
// if it is set, we use the new policy to distribute the ports to all services.
PortBase int `toml:"port-base"`
// ServiceHost is the host name/IP for the service address of RPC request. There is
// no port value in it.
ServiceHost string `toml:"service-host"`
Engine struct {
Type EngineType `toml:"type"`
Logstore options.LogstoreType `toml:"logstore"`
}
// parameters for cn-server related buffer.
ReadBufferSize int
WriteBufferSize int
// Pipeline configuration
Pipeline struct {
// HostSize is the memory limit
HostSize int64 `toml:"host-size"`
// GuestSize is the memory limit for one query
GuestSize int64 `toml:"guest-size"`
// BatchRows is the batch rows limit for one batch
BatchRows int64 `toml:"batch-rows"`
// BatchSize is the memory limit for one batch
BatchSize int64 `toml:"batch-size"`
}
// Frontend parameters for the frontend
Frontend config.FrontendParameters `toml:"frontend"`
// HAKeeper configuration
HAKeeper struct {
// HeatbeatInterval heartbeat interval to send message to hakeeper. Default is 1s
HeatbeatInterval toml.Duration `toml:"hakeeper-heartbeat-interval"`
// HeatbeatTimeout heartbeat request timeout. Default is 500ms
HeatbeatTimeout toml.Duration `toml:"hakeeper-heartbeat-timeout"`
// DiscoveryTimeout discovery HAKeeper service timeout. Default is 30s
DiscoveryTimeout toml.Duration `toml:"hakeeper-discovery-timeout"`
// ClientConfig hakeeper client configuration
ClientConfig logservice.HAKeeperClientConfig
}
// TaskRunner configuration
TaskRunner struct {
QueryLimit int `toml:"task-query-limit"`
Parallelism int `toml:"task-parallelism"`
MaxWaitTasks int `toml:"task-max-wait-tasks"`
FetchInterval toml.Duration `toml:"task-fetch-interval"`
FetchTimeout toml.Duration `toml:"task-fetch-timeout"`
RetryInterval toml.Duration `toml:"task-retry-interval"`
HeartbeatInterval toml.Duration `toml:"task-heartbeat-interval"`
}
// RPC rpc config used to build txn sender
RPC rpc.Config `toml:"rpc"`
// Cluster configuration
Cluster struct {
// RefreshInterval refresh cluster info from hakeeper interval
RefreshInterval toml.Duration `toml:"refresh-interval"`
}
// LockService lockservice
LockService lockservice.Config `toml:"lockservice"`
// Txn txn config
Txn struct {
// Isolation txn isolation. SI or RC
// when Isolation is not set. we will set SI when Mode is optimistic, RC when Mode is pessimistic
Isolation string `toml:"isolation"`
// Mode txn mode. optimistic or pessimistic, default is pessimistic
Mode string `toml:"mode"`
// EnableSacrificingFreshness In Push Mode, the transaction is not guaranteed
// to see the latest commit data, and the latest Logtail commit timestamp received
// by the current CN + 1 is used as the start time of the transaction. But it will
// ensure that the transactions of the same database connection can see the writes
// of the previous committed transactions.
// -1: disable
// 0: auto config based on txn mode
// 1: enable
EnableSacrificingFreshness int `toml:"enable-sacrificing-freshness"`
// EnableCNBasedConsistency ensure that all the transactions on a CN can read
// the writes of the previous committed transaction
// -1: disable
// 0: auto config based on txn mode
// 1: enable
EnableCNBasedConsistency int `toml:"enable-cn-based-consistency"`
// EnableRefreshExpressionIn RC mode, in the event of a conflict, the later transaction
// needs to see the latest data after the previous transaction commits. At this time we
// need to re-read the data, re-read the latest data, and re-compute the expression. This
// feature was turned off in 0.8 and is not supported for now. The replacement solution is
// to return a retry error and let the whole computation re-execute.
// -1: disable
// 0: auto config based on txn mode
// 1: enable
EnableRefreshExpression int `toml:"enable-refresh-expression"`
// EnableLeakCheck enable txn leak check
// -1: disable
// 0: auto config based on txn mode
// 1: enable
EnableLeakCheck int `toml:"enable-leak-check"`
// MaxActiveAges a txn max active duration
MaxActiveAges toml.Duration `toml:"max-active-ages"`
// EnableCheckRCInvalidError this config is used to check and find RC bugs in pessimistic mode.
// Will remove it later version.
EnableCheckRCInvalidError bool `toml:"enable-check-rc-invalid-error"`
// Limit flow control of transaction creation, maximum number of transactions per second. Default
// is unlimited.
Limit int `toml:"limit-per-second"`
// MaxActive is the count of max active txn in current cn. If reached max value, the txn
// is added to a FIFO queue. Default is unlimited.
MaxActive int `toml:"max-active"`
} `toml:"txn"`
// Ctl ctl service config. CtlService is used to handle ctl request. See mo_ctl for detail.
Ctl ctlservice.Config `toml:"ctl"`
// AutoIncrement auto increment config
AutoIncrement incrservice.Config `toml:"auto-increment"`
// QueryServiceConfig is the config for query service.
QueryServiceConfig queryservice.Config `toml:"query-service"`
// PrimaryKeyCheck
PrimaryKeyCheck bool `toml:"primary-key-check"`
// MaxPreparedStmtCount
MaxPreparedStmtCount int `toml:"max_prepared_stmt_count"`
// InitWorkState is the initial work state for CN. Valid values are:
// "working", "draining" and "drained".
InitWorkState string `toml:"init-work-state"`
}
Config cn service
type EngineType ¶
type EngineType string
const ( EngineDistributedTAE EngineType = "distributed-tae" EngineMemory EngineType = "memory" EngineNonDistributedMemory EngineType = "non-distributed-memory" // ReservedTasks equals how many task must run background. // 1 for metric StorageUsage // 1 for trace ETLMerge ReservedTasks = 2 )
type Option ¶
type Option func(*service)
Option option to create cn service
func WithMessageHandle ¶
func WithMessageHandle(f func(ctx context.Context, cnAddr string, message morpc.Message, cs morpc.ClientSession, engine engine.Engine, fs fileservice.FileService, lockService lockservice.LockService, queryService queryservice.QueryService, cli client.TxnClient, aicm *defines.AutoIncrCacheManager, mAcquirer func() morpc.Message) error) Option
WithMessageHandle setup message handle
func WithTaskStorageFactory ¶
func WithTaskStorageFactory(factory taskservice.TaskStorageFactory) Option
WithTaskStorageFactory setup the special task strorage factory
type PortSlot ¶ added in v1.0.0
type PortSlot int
type Service ¶
type Service interface {
Start() error
Close() error
// ID returns UUID of the service.
ID() string
GetTaskRunner() taskservice.TaskRunner
GetTaskService() (taskservice.TaskService, bool)
WaitSystemInitCompleted(ctx context.Context) error
}
func NewService ¶
func NewService( cfg *Config, ctx context.Context, fileService fileservice.FileService, gossipNode *gossip.Node, options ...Option, ) (Service, error)
Source Files
¶
Click to show internal directories.
Click to hide internal directories.