etcdserver - ActiveState ActiveGo 1.8
...

Package etcdserver

import "github.com/coreos/etcd/etcdserver"
Overview
Index
Subdirectories

Overview ▾

Package etcdserver defines how etcd servers interact and store their states.

Index ▾

Constants
Variables
func GetClusterFromRemotePeers(urls []string, rt http.RoundTripper) (*membership.RaftCluster, error)
type ApplierV2
    func NewApplierV2(s store.Store, c *membership.RaftCluster) ApplierV2
type Authenticator
type DiscoveryError
    func (e DiscoveryError) Error() string
type EtcdServer
    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) 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) 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) Cluster() *membership.RaftCluster
    func (s *EtcdServer) ClusterVersion() *semver.Version
    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) HardStop()
    func (s *EtcdServer) ID() types.ID
    func (s *EtcdServer) Index() uint64
    func (s *EtcdServer) IsIDRemoved(id uint64) bool
    func (s *EtcdServer) KV() mvcc.ConsistentWatchableKV
    func (s *EtcdServer) Lead() uint64
    func (s *EtcdServer) Leader() types.ID
    func (s *EtcdServer) LeaderStats() []byte
    func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, 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) Lessor() lease.Lessor
    func (s *EtcdServer) MendPeer(id types.ID)
    func (s *EtcdServer) PauseSending()
    func (s *EtcdServer) Process(ctx context.Context, m raftpb.Message) 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) 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
type Quota
    func NewBackendQuota(s *EtcdServer) Quota
type RaftKV
type RaftTimer
type Response
type Server
type ServerConfig
    func (c *ServerConfig) MemberDir() string
    func (c *ServerConfig) Print()
    func (c *ServerConfig) PrintWithInitial()
    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 Storage
    func NewStorage(w *wal.WAL, s *snap.Snapshotter) Storage

Package files

apply.go apply_auth.go apply_v2.go backend.go cluster_util.go config.go consistent_index.go doc.go errors.go metrics.go quota.go raft.go server.go snapshot_merge.go storage.go util.go v2_server.go v3_server.go

Constants

const (
    // DefaultQuotaBytes is the number of bytes the backend Size may
    // consume before exceeding the space quota.
    DefaultQuotaBytes = int64(2 * 1024 * 1024 * 1024) // 2GB
    // MaxQuotaBytes is the maximum number of bytes suggested for a backend
    // quota. A larger quota may lead to degraded performance.
    MaxQuotaBytes = int64(8 * 1024 * 1024 * 1024) // 8GB
)
const (
    DefaultSnapCount = 100000

    StoreClusterPrefix = "/0"
    StoreKeysPrefix    = "/1"

    // HealthInterval is the minimum time the cluster should be healthy
    // before accepting add member requests.
    HealthInterval = 5 * time.Second
)

Variables

var (
    ErrUnknownMethod              = errors.New("etcdserver: unknown method")
    ErrStopped                    = errors.New("etcdserver: server stopped")
    ErrCanceled                   = errors.New("etcdserver: request cancelled")
    ErrTimeout                    = errors.New("etcdserver: request timed out")
    ErrTimeoutDueToLeaderFail     = errors.New("etcdserver: request timed out, possibly due to previous leader failure")
    ErrTimeoutDueToConnectionLost = errors.New("etcdserver: request timed out, possibly due to connection lost")
    ErrTimeoutLeaderTransfer      = errors.New("etcdserver: request timed out, leader transfer took too long")
    ErrNotEnoughStartedMembers    = errors.New("etcdserver: re-configuration failed due to not enough started members")
    ErrNoLeader                   = errors.New("etcdserver: no leader")
    ErrRequestTooLarge            = errors.New("etcdserver: request is too large")
    ErrNoSpace                    = errors.New("etcdserver: no space")
    ErrTooManyRequests            = errors.New("etcdserver: too many requests")
    ErrUnhealthy                  = errors.New("etcdserver: unhealthy cluster")
    ErrKeyNotFound                = errors.New("etcdserver: key not found")
)

func GetClusterFromRemotePeers

func GetClusterFromRemotePeers(urls []string, rt http.RoundTripper) (*membership.RaftCluster, error)

GetClusterFromRemotePeers takes a set of URLs representing etcd peers, and attempts to construct a Cluster by accessing the members endpoint on one of these URLs. The first URL to provide a response is used. If no URLs provide a response, or a Cluster cannot be successfully created from a received response, an error is returned. Each request has a 10-second timeout. Because the upper limit of TTL is 5s, 10 second is enough for building connection and finishing request.

type ApplierV2

ApplierV2 is the interface for processing V2 raft messages

type ApplierV2 interface {
    Delete(r *pb.Request) Response
    Post(r *pb.Request) Response
    Put(r *pb.Request) Response
    QGet(r *pb.Request) Response
    Sync(r *pb.Request) Response
}

func NewApplierV2

func NewApplierV2(s store.Store, c *membership.RaftCluster) ApplierV2

type Authenticator

type Authenticator interface {
    AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error)
    AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error)
    Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error)
    UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error)
    UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error)
    UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)
    UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error)
    UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
    UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
    RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
    RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error)
    RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
    RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
    RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
    UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error)
    RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error)
}

type DiscoveryError

type DiscoveryError struct {
    Op  string
    Err error
}

func (DiscoveryError) Error

func (e DiscoveryError) Error() string

type EtcdServer

EtcdServer is the production implementation of the Server interface

type EtcdServer struct {
    Cfg *ServerConfig

    SyncTicker *time.Ticker
    // contains filtered or unexported fields
}

func NewServer

func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error)

NewServer creates a new EtcdServer from the supplied configuration. The configuration is considered static for the lifetime of the EtcdServer.

func (*EtcdServer) AddMember

func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)

func (*EtcdServer) Alarm

func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error)

func (*EtcdServer) ApplyWait

func (s *EtcdServer) ApplyWait() <-chan struct{}

func (*EtcdServer) AuthDisable

func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error)

func (*EtcdServer) AuthEnable

func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error)

func (*EtcdServer) AuthInfoFromCtx

func (s *EtcdServer) AuthInfoFromCtx(ctx context.Context) (*auth.AuthInfo, error)

func (*EtcdServer) AuthStore

func (s *EtcdServer) AuthStore() auth.AuthStore

func (*EtcdServer) Authenticate

func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error)

func (*EtcdServer) Backend

func (s *EtcdServer) Backend() backend.Backend

func (*EtcdServer) Cluster

func (s *EtcdServer) Cluster() *membership.RaftCluster

func (*EtcdServer) ClusterVersion

func (s *EtcdServer) ClusterVersion() *semver.Version

func (*EtcdServer) Compact

func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error)

func (*EtcdServer) CutPeer

func (s *EtcdServer) CutPeer(id types.ID)

CutPeer drops messages to the specified peer.

func (*EtcdServer) DeleteRange

func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)

func (*EtcdServer) Do

func (s *EtcdServer) Do(ctx context.Context, r pb.Request) (Response, error)

Do interprets r and performs an operation on s.store according to r.Method and other fields. If r.Method is "POST", "PUT", "DELETE", or a "GET" with Quorum == true, r will be sent through consensus before performing its respective operation. Do will block until an action is performed or there is an error.

func (*EtcdServer) HardStop

func (s *EtcdServer) HardStop()

HardStop stops the server without coordination with other members in the cluster.

func (*EtcdServer) ID

func (s *EtcdServer) ID() types.ID

func (*EtcdServer) Index

func (s *EtcdServer) Index() uint64

func (*EtcdServer) IsIDRemoved

func (s *EtcdServer) IsIDRemoved(id uint64) bool

func (*EtcdServer) KV

func (s *EtcdServer) KV() mvcc.ConsistentWatchableKV

func (*EtcdServer) Lead

func (s *EtcdServer) Lead() uint64

Lead is only for testing purposes. TODO: add Raft server interface to expose raft related info: Index, Term, Lead, Committed, Applied, LastIndex, etc.

func (*EtcdServer) Leader

func (s *EtcdServer) Leader() types.ID

func (*EtcdServer) LeaderStats

func (s *EtcdServer) LeaderStats() []byte

func (*EtcdServer) LeaseGrant

func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error)

func (*EtcdServer) LeaseRenew

func (s *EtcdServer) LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, error)

func (*EtcdServer) LeaseRevoke

func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error)

func (*EtcdServer) LeaseTimeToLive

func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error)

func (*EtcdServer) Lessor

func (s *EtcdServer) Lessor() lease.Lessor

func (*EtcdServer) MendPeer

func (s *EtcdServer) MendPeer(id types.ID)

MendPeer recovers the message dropping behavior of the given peer.

func (*EtcdServer) PauseSending

func (s *EtcdServer) PauseSending()

func (*EtcdServer) Process

func (s *EtcdServer) Process(ctx context.Context, m raftpb.Message) error

func (*EtcdServer) Put

func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error)

func (*EtcdServer) RaftHandler

func (s *EtcdServer) RaftHandler() http.Handler

func (*EtcdServer) Range

func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error)

func (*EtcdServer) ReadyNotify

func (s *EtcdServer) ReadyNotify() <-chan struct{}

ReadyNotify returns a channel that will be closed when the server is ready to serve client requests

func (*EtcdServer) RemoveMember

func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error)

func (*EtcdServer) ReportSnapshot

func (s *EtcdServer) ReportSnapshot(id uint64, status raft.SnapshotStatus)

ReportSnapshot reports snapshot sent status to the raft state machine, and clears the used snapshot from the snapshot store.

func (*EtcdServer) ReportUnreachable

func (s *EtcdServer) ReportUnreachable(id uint64)

func (*EtcdServer) ResumeSending

func (s *EtcdServer) ResumeSending()

func (*EtcdServer) RoleAdd

func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)

func (*EtcdServer) RoleDelete

func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)

func (*EtcdServer) RoleGet

func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)

func (*EtcdServer) RoleGrantPermission

func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error)

func (*EtcdServer) RoleList

func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error)

func (*EtcdServer) RoleRevokePermission

func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)

func (*EtcdServer) SelfStats

func (s *EtcdServer) SelfStats() []byte

func (*EtcdServer) Start

func (s *EtcdServer) Start()

Start prepares and starts server in a new goroutine. It is no longer safe to modify a server's fields after it has been sent to Start. It also starts a goroutine to publish its server information.

func (*EtcdServer) Stop

func (s *EtcdServer) Stop()

Stop stops the server gracefully, and shuts down the running goroutine. Stop should be called after a Start(s), otherwise it will block forever. When stopping leader, Stop transfers its leadership to one of its peers before stopping the server.

func (*EtcdServer) StopNotify

func (s *EtcdServer) StopNotify() <-chan struct{}

StopNotify returns a channel that receives a empty struct when the server is stopped.

func (*EtcdServer) StoreStats

func (s *EtcdServer) StoreStats() []byte

func (*EtcdServer) Term

func (s *EtcdServer) Term() uint64

func (*EtcdServer) TransferLeadership

func (s *EtcdServer) TransferLeadership() error

TransferLeadership transfers the leader to the chosen transferee.

func (*EtcdServer) Txn

func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error)

func (*EtcdServer) UpdateMember

func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)

func (*EtcdServer) UserAdd

func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error)

func (*EtcdServer) UserChangePassword

func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)

func (*EtcdServer) UserDelete

func (s *EtcdServer) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error)

func (*EtcdServer) UserGet

func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)

func (*EtcdServer) UserGrantRole

func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error)

func (*EtcdServer) UserList

func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error)

func (*EtcdServer) UserRevokeRole

func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)

func (*EtcdServer) Watchable

func (s *EtcdServer) Watchable() mvcc.WatchableKV

Watchable returns a watchable interface attached to the etcdserver.

type Lessor

type Lessor interface {
    // LeaseGrant sends LeaseGrant request to raft and apply it after committed.
    LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error)
    // LeaseRevoke sends LeaseRevoke request to raft and apply it after committed.
    LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error)

    // LeaseRenew renews the lease with given ID. The renewed TTL is returned. Or an error
    // is returned.
    LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, error)

    // LeaseTimeToLive retrieves lease information.
    LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error)
}

type Quota

Quota represents an arbitrary quota against arbitrary requests. Each request costs some charge; if there is not enough remaining charge, then there are too few resources available within the quota to apply the request.

type Quota interface {
    // Available judges whether the given request fits within the quota.
    Available(req interface{}) bool
    // Cost computes the charge against the quota for a given request.
    Cost(req interface{}) int
    // Remaining is the amount of charge left for the quota.
    Remaining() int64
}

func NewBackendQuota

func NewBackendQuota(s *EtcdServer) Quota

type RaftKV

type RaftKV interface {
    Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error)
    Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error)
    DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)
    Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error)
    Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error)
}

type RaftTimer

type RaftTimer interface {
    Index() uint64
    Term() uint64
}

type Response

type Response struct {
    Event   *store.Event
    Watcher store.Watcher
    // contains filtered or unexported fields
}

type Server

type Server interface {
    // Start performs any initialization of the Server necessary for it to
    // begin serving requests. It must be called before Do or Process.
    // Start must be non-blocking; any long-running server functionality
    // should be implemented in goroutines.
    Start()
    // Stop terminates the Server and performs any necessary finalization.
    // Do and Process cannot be called after Stop has been invoked.
    Stop()
    // ID returns the ID of the Server.
    ID() types.ID
    // Leader returns the ID of the leader Server.
    Leader() types.ID
    // Do takes a request and attempts to fulfill it, returning a Response.
    Do(ctx context.Context, r pb.Request) (Response, error)
    // Process takes a raft message and applies it to the server's raft state
    // machine, respecting any timeout of the given context.
    Process(ctx context.Context, m raftpb.Message) error
    // AddMember attempts to add a member into the cluster. It will return
    // ErrIDRemoved if member ID is removed from the cluster, or return
    // ErrIDExists if member ID exists in the cluster.
    AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
    // RemoveMember attempts to remove a member from the cluster. It will
    // return ErrIDRemoved if member ID is removed from the cluster, or return
    // ErrIDNotFound if member ID is not in the cluster.
    RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error)

    // UpdateMember attempts to update an existing member in the cluster. It will
    // return ErrIDNotFound if the member ID does not exist.
    UpdateMember(ctx context.Context, updateMemb membership.Member) ([]*membership.Member, error)

    // ClusterVersion is the cluster-wide minimum major.minor version.
    // Cluster version is set to the min version that an etcd member is
    // compatible with when first bootstrap.
    //
    // ClusterVersion is nil until the cluster is bootstrapped (has a quorum).
    //
    // During a rolling upgrades, the ClusterVersion will be updated
    // automatically after a sync. (5 second by default)
    //
    // The API/raft component can utilize ClusterVersion to determine if
    // it can accept a client request or a raft RPC.
    // NOTE: ClusterVersion might be nil when etcd 2.1 works with etcd 2.0 and
    // the leader is etcd 2.0. etcd 2.0 leader will not update clusterVersion since
    // this feature is introduced post 2.0.
    ClusterVersion() *semver.Version
}

type ServerConfig

ServerConfig holds the configuration of etcd as taken from the command line or discovery.

type ServerConfig struct {
    Name           string
    DiscoveryURL   string
    DiscoveryProxy string
    ClientURLs     types.URLs
    PeerURLs       types.URLs
    DataDir        string
    // DedicatedWALDir config will make the etcd to write the WAL to the WALDir
    // rather than the dataDir/member/wal.
    DedicatedWALDir     string
    SnapCount           uint64
    MaxSnapFiles        uint
    MaxWALFiles         uint
    InitialPeerURLsMap  types.URLsMap
    InitialClusterToken string
    NewCluster          bool
    ForceNewCluster     bool
    PeerTLSInfo         transport.TLSInfo

    TickMs           uint
    ElectionTicks    int
    BootstrapTimeout time.Duration

    AutoCompactionRetention int
    QuotaBackendBytes       int64

    StrictReconfigCheck bool

    // ClientCertAuthEnabled is true when cert has been signed by the client CA.
    ClientCertAuthEnabled bool

    AuthToken string
}

func (*ServerConfig) MemberDir

func (c *ServerConfig) MemberDir() string

func (*ServerConfig) Print

func (c *ServerConfig) Print()

func (*ServerConfig) PrintWithInitial

func (c *ServerConfig) PrintWithInitial()

func (*ServerConfig) ReqTimeout

func (c *ServerConfig) ReqTimeout() time.Duration

ReqTimeout returns timeout for request to finish.

func (*ServerConfig) ShouldDiscover

func (c *ServerConfig) ShouldDiscover() bool

func (*ServerConfig) SnapDir

func (c *ServerConfig) SnapDir() string

func (*ServerConfig) VerifyBootstrap

func (c *ServerConfig) VerifyBootstrap() error

VerifyBootstrap sanity-checks the initial config for bootstrap case and returns an error for things that should never happen.

func (*ServerConfig) VerifyJoinExisting

func (c *ServerConfig) VerifyJoinExisting() error

VerifyJoinExisting sanity-checks the initial config for join existing cluster case and returns an error for things that should never happen.

func (*ServerConfig) WALDir

func (c *ServerConfig) WALDir() string

type Storage

type Storage interface {
    // Save function saves ents and state to the underlying stable storage.
    // Save MUST block until st and ents are on stable storage.
    Save(st raftpb.HardState, ents []raftpb.Entry) error
    // SaveSnap function saves snapshot to the underlying stable storage.
    SaveSnap(snap raftpb.Snapshot) error
    // Close closes the Storage and performs finalization.
    Close() error
}

func NewStorage

func NewStorage(w *wal.WAL, s *snap.Snapshotter) Storage

Subdirectories

Name Synopsis
..
api Package api manages the capabilities and features that are exposed to clients by the etcd cluster.
v2http Package v2http provides etcd client and server implementations.
httptypes Package httptypes defines how etcd's HTTP API entities are serialized to and deserialized from JSON.
v3client Package v3client provides clientv3 interfaces from an etcdserver.
v3election Package v3election provides a v3 election service from an etcdserver.
v3electionpb Package v3electionpb is a generated protocol buffer package.
gw Package v3electionpb is a reverse proxy.
v3lock Package v3lock provides a v3 locking service from an etcdserver.
v3lockpb Package v3lockpb is a generated protocol buffer package.
gw Package v3lockpb is a reverse proxy.
v3rpc Package v3rpc implements etcd v3 RPC system based on gRPC.
rpctypes Package rpctypes has types and values shared by the etcd server and client for v3 RPC interaction.
auth Package auth implements etcd authentication.
etcdserverpb Package etcdserverpb is a generated protocol buffer package.
gw Package etcdserverpb is a reverse proxy.
membership Package membership describes individual etcd members and clusters of members.
stats Package stats defines a standard interface for etcd cluster statistics.