Versions in this module Expand all Collapse all v3 v3.4.15 Feb 24, 2021 Changes in this version + const DefaultQuotaBytes + const DefaultSnapshotCatchUpEntries + const DefaultSnapshotCount + const DowngradeEnabledPath + const HealthInterval + const MaxQuotaBytes + const PeerHashKVPath + const StoreClusterPrefix + const StoreKeysPrefix + var DefaultQuotaSize = humanize.Bytes(uint64(DefaultQuotaBytes)) + var ErrBadLeaderTransferee = errors.New("etcdserver: bad leader transferee") + var ErrCanceled = errors.New("etcdserver: request cancelled") + var ErrClusterVersionUnavailable = errors.New("etcdserver: cluster version not found during downgrade") + var ErrCorrupt = errors.New("etcdserver: corrupt cluster") + var ErrDowngradeInProcess = errors.New("etcdserver: cluster has a downgrade job in progress") + var ErrInvalidDowngradeTargetVersion = errors.New("etcdserver: invalid downgrade target version") + var ErrKeyNotFound = errors.New("etcdserver: key not found") + var ErrLeaderChanged = errors.New("etcdserver: leader changed") + var ErrLearnerNotReady = errors.New("etcdserver: can only promote a learner member which is in sync with leader") + var ErrNoInflightDowngrade = errors.New("etcdserver: no inflight downgrade job") + var ErrNoLeader = errors.New("etcdserver: no leader") + var ErrNoSpace = errors.New("etcdserver: no space") + var ErrNotEnoughStartedMembers = errors.New("etcdserver: re-configuration failed due to not enough started members") + var ErrNotLeader = errors.New("etcdserver: not leader") + var ErrRequestTooLarge = errors.New("etcdserver: request is too large") + var ErrStopped = errors.New("etcdserver: server stopped") + var ErrTimeout = errors.New("etcdserver: request timed out") + var ErrTimeoutDueToConnectionLost = errors.New("etcdserver: request timed out, possibly due to connection lost") + var ErrTimeoutDueToLeaderFail = errors.New("etcdserver: request timed out, possibly due to previous leader failure") + var ErrTimeoutLeaderTransfer = errors.New("etcdserver: request timed out, leader transfer took too long") + var ErrTooManyRequests = errors.New("etcdserver: too many requests") + var ErrUnhealthy = errors.New("etcdserver: unhealthy cluster") + var ErrUnknownMethod = errors.New("etcdserver: unknown method") + var ErrWrongDowngradeVersionFormat = errors.New("etcdserver: wrong downgrade target version format") + func GetClusterFromRemotePeers(lg *zap.Logger, urls []string, rt http.RoundTripper) (*membership.RaftCluster, error) + func NewRaftLogger(lcfg *zap.Config) (raft.Logger, error) + func NewRaftLoggerFromZapCore(cr zapcore.Core, syncer zapcore.WriteSyncer) raft.Logger + func NewRaftLoggerZap(lg *zap.Logger) raft.Logger + type AccessController struct + CORS map[string]struct{} + HostWhitelist map[string]struct{} + func NewAccessController() *AccessController + func (ac *AccessController) IsHostWhitelisted(host string) bool + func (ac *AccessController) OriginAllowed(origin string) bool + type ApplierV2 interface + Delete func(r *RequestV2) Response + Post func(r *RequestV2) Response + Put func(r *RequestV2) Response + QGet func(r *RequestV2) Response + Sync func(r *RequestV2) Response + func NewApplierV2(lg *zap.Logger, s v2store.Store, c *membership.RaftCluster) ApplierV2 + type Authenticator interface + AuthDisable func(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error) + AuthEnable func(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error) + AuthStatus func(ctx context.Context, r *pb.AuthStatusRequest) (*pb.AuthStatusResponse, error) + Authenticate func(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error) + RoleAdd func(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) + RoleDelete func(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) + RoleGet func(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) + RoleGrantPermission func(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) + RoleList func(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) + RoleRevokePermission func(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) + UserAdd func(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) + UserChangePassword func(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) + UserDelete func(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) + UserGet func(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) + UserGrantRole func(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) + UserList func(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) + UserRevokeRole func(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) + type DiscoveryError struct + Err error + Op string + func (e DiscoveryError) Error() string + type EtcdServer struct + Cfg ServerConfig + SyncTicker *time.Ticker + func NewServer(cfg ServerConfig) (srv *EtcdServer, err error) + func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error) + func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error) + func (s *EtcdServer) Alarms() []*pb.AlarmMember + func (s *EtcdServer) AppliedIndex() uint64 + func (s *EtcdServer) ApplyWait() <-chan struct{} + func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error) + func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error) + func (s *EtcdServer) AuthInfoFromCtx(ctx context.Context) (*auth.AuthInfo, error) + func (s *EtcdServer) AuthStatus(ctx context.Context, r *pb.AuthStatusRequest) (*pb.AuthStatusResponse, error) + func (s *EtcdServer) AuthStore() auth.AuthStore + func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error) + func (s *EtcdServer) Backend() backend.Backend + func (s *EtcdServer) CheckInitialHashKV() error + func (s *EtcdServer) ClientCertAuthEnabled() bool + func (s *EtcdServer) Cluster() api.Cluster + func (s *EtcdServer) ClusterVersion() *semver.Version + func (s *EtcdServer) CommittedIndex() uint64 + func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error) + func (s *EtcdServer) CutPeer(id types.ID) + func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) + func (s *EtcdServer) Do(ctx context.Context, r pb.Request) (Response, error) + func (s *EtcdServer) Downgrade(ctx context.Context, r *pb.DowngradeRequest) (*pb.DowngradeResponse, error) + func (s *EtcdServer) DowngradeEnabledHandler() http.Handler + func (s *EtcdServer) DowngradeInfo() *membership.DowngradeInfo + func (s *EtcdServer) GoAttach(f func()) + func (s *EtcdServer) HardStop() + func (s *EtcdServer) HashKVHandler() http.Handler + func (s *EtcdServer) ID() types.ID + func (s *EtcdServer) IsIDRemoved(id uint64) bool + func (s *EtcdServer) IsLearner() bool + func (s *EtcdServer) IsMemberExist(id types.ID) bool + func (s *EtcdServer) KV() mvcc.ConsistentWatchableKV + func (s *EtcdServer) Lead() uint64 + func (s *EtcdServer) Leader() types.ID + func (s *EtcdServer) LeaderChangedNotify() <-chan struct{} + func (s *EtcdServer) LeaderStats() []byte + func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) + func (s *EtcdServer) LeaseHandler() http.Handler + func (s *EtcdServer) LeaseLeases(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error) + func (s *EtcdServer) LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, error) + func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) + func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) + func (s *EtcdServer) LinearizableReadNotify(ctx context.Context) error + func (s *EtcdServer) Logger() *zap.Logger + func (s *EtcdServer) MendPeer(id types.ID) + func (s *EtcdServer) MoveLeader(ctx context.Context, lead, transferee uint64) error + func (s *EtcdServer) PauseSending() + func (s *EtcdServer) Process(ctx context.Context, m raftpb.Message) error + func (s *EtcdServer) PromoteMember(ctx context.Context, id uint64) ([]*membership.Member, error) + func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) + func (s *EtcdServer) RaftHandler() http.Handler + func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) + func (s *EtcdServer) ReadyNotify() <-chan struct{} + func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error) + func (s *EtcdServer) ReportSnapshot(id uint64, status raft.SnapshotStatus) + func (s *EtcdServer) ReportUnreachable(id uint64) + func (s *EtcdServer) ResumeSending() + func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) + func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) + func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) + func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) + func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) + func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) + func (s *EtcdServer) SelfStats() []byte + func (s *EtcdServer) Start() + func (s *EtcdServer) Stop() + func (s *EtcdServer) StopNotify() <-chan struct{} + func (s *EtcdServer) StoppingNotify() <-chan struct{} + func (s *EtcdServer) StoreStats() []byte + func (s *EtcdServer) Term() uint64 + func (s *EtcdServer) TransferLeadership() error + func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) + func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error) + func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) + func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) + func (s *EtcdServer) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) + func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) + func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) + func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) + func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) + func (s *EtcdServer) Watchable() mvcc.WatchableKV + type Lessor interface + LeaseGrant func(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error) + LeaseLeases func(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error) + LeaseRenew func(ctx context.Context, id lease.LeaseID) (int64, error) + LeaseRevoke func(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) + LeaseTimeToLive func(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) + type Quota interface + Available func(req interface{}) bool + Cost func(req interface{}) int + Remaining func() int64 + func NewBackendQuota(s *EtcdServer, name string) Quota + type RaftKV interface + Compact func(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error) + DeleteRange func(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) + Put func(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) + Range func(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) + Txn func(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) + type RaftStatusGetter interface + AppliedIndex func() uint64 + CommittedIndex func() uint64 + ID func() types.ID + Leader func() types.ID + Term func() uint64 + type RequestV2 pb.Request + func (r *RequestV2) Handle(ctx context.Context, v2api RequestV2Handler) (Response, error) + func (r *RequestV2) String() string + func (r *RequestV2) TTLOptions() v2store.TTLOptionSet + type RequestV2Handler interface + Delete func(ctx context.Context, r *RequestV2) (Response, error) + Get func(ctx context.Context, r *RequestV2) (Response, error) + Head func(ctx context.Context, r *RequestV2) (Response, error) + Post func(ctx context.Context, r *RequestV2) (Response, error) + Put func(ctx context.Context, r *RequestV2) (Response, error) + QGet func(ctx context.Context, r *RequestV2) (Response, error) + func NewStoreRequestV2Handler(s v2store.Store, applier ApplierV2) RequestV2Handler + type Response struct + Err error + Event *v2store.Event + Index uint64 + Term uint64 + Watcher v2store.Watcher + type Server interface + AddMember func(ctx context.Context, memb membership.Member) ([]*membership.Member, error) + Alarms func() []*pb.AlarmMember + Cluster func() api.Cluster + ClusterVersion func() *semver.Version + LeaderChangedNotify func() <-chan struct{} + PromoteMember func(ctx context.Context, id uint64) ([]*membership.Member, error) + RemoveMember func(ctx context.Context, id uint64) ([]*membership.Member, error) + UpdateMember func(ctx context.Context, updateMemb membership.Member) ([]*membership.Member, error) + type ServerConfig struct + AuthToken string + AutoCompactionMode string + AutoCompactionRetention time.Duration + BackendBatchInterval time.Duration + BackendBatchLimit int + BackendFreelistType bolt.FreelistType + BcryptCost uint + BootstrapTimeout time.Duration + CORS map[string]struct{} + ClientCertAuthEnabled bool + ClientURLs types.URLs + CompactionBatchLimit int + CorruptCheckTime time.Duration + DataDir string + DedicatedWALDir string + DiscoveryProxy string + DiscoveryURL string + DowngradeCheckTime time.Duration + ElectionTicks int + EnableGRPCGateway bool + EnableLeaseCheckpoint bool + ForceNewCluster bool + HostWhitelist map[string]struct{} + InitialClusterToken string + InitialCorruptCheck bool + InitialElectionTickAdvance bool + InitialPeerURLsMap types.URLsMap + LeaseCheckpointInterval time.Duration + Logger *zap.Logger + LoggerConfig *zap.Config + LoggerCore zapcore.Core + LoggerWriteSyncer zapcore.WriteSyncer + MaxRequestBytes uint + MaxSnapFiles uint + MaxTxnOps uint + MaxWALFiles uint + Name string + NewCluster bool + PeerTLSInfo transport.TLSInfo + PeerURLs types.URLs + PreVote bool + QuotaBackendBytes int64 + SnapshotCatchUpEntries uint64 + SnapshotCount uint64 + StrictReconfigCheck bool + TickMs uint + TokenTTL uint + UnsafeNoFsync bool + WarningApplyDuration time.Duration + WatchProgressNotifyInterval time.Duration + func (c *ServerConfig) MemberDir() string + func (c *ServerConfig) ReqTimeout() time.Duration + func (c *ServerConfig) ShouldDiscover() bool + func (c *ServerConfig) SnapDir() string + func (c *ServerConfig) VerifyBootstrap() error + func (c *ServerConfig) VerifyJoinExisting() error + func (c *ServerConfig) WALDir() string + type ServerPeer interface + LeaseHandler func() http.Handler + RaftHandler func() http.Handler + type ServerPeerV2 interface + DowngradeEnabledHandler func() http.Handler + HashKVHandler func() http.Handler + type ServerV2 interface + ClientCertAuthEnabled func() bool + Do func(ctx context.Context, r pb.Request) (Response, error) + Leader func() types.ID + type ServerV3 interface + type Storage interface + Close func() error + Release func(snap raftpb.Snapshot) error + Save func(st raftpb.HardState, ents []raftpb.Entry) error + SaveSnap func(snap raftpb.Snapshot) error + Sync func() error + func NewStorage(w *wal.WAL, s *snap.Snapshotter) Storage