Documentation
¶
Index ¶
- func ListenWithRetry(addr string) (net.Listener, error)
- func RunGRPCServer(ctx context.Context, lis net.Listener, srv *PaxosServer) error
- type BaseData
- type CommandData
- type GRPCChannelData
- type GRPCServerData
- type GRPCStatusData
- type HTTPServer
- type IndexData
- type KV
- type KnownPeer
- type Message
- type MessagesData
- type OngoingRequest
- type Participant
- type PaxosClient
- func (c *PaxosClient) Accept(ctx context.Context, req *paxosv1.AcceptRequest) (*paxosv1.AcceptedResponse, error)
- func (c *PaxosClient) AgentID() string
- func (c *PaxosClient) Close() error
- func (c *PaxosClient) GetKVEntry(ctx context.Context, req *paxosv1.GetKVEntryRequest) (*paxosv1.GetKVEntryResponse, error)
- func (c *PaxosClient) GetPeerEndpoints(ctx context.Context, req *paxosv1.GetPeerEndpointsRequest) (*paxosv1.GetPeerEndpointsResponse, error)
- func (c *PaxosClient) JoinCluster(ctx context.Context, req *paxosv1.JoinClusterRequest) (*paxosv1.JoinClusterResponse, error)
- func (c *PaxosClient) Ping(ctx context.Context, req *paxosv1.PingRequest) (*paxosv1.PingResponse, error)
- func (c *PaxosClient) Prepare(ctx context.Context, req *paxosv1.PrepareRequest) (*paxosv1.PromiseResponse, error)
- func (c *PaxosClient) Sync(ctx context.Context, req *paxosv1.SyncRequest) (*paxosv1.SyncResponse, error)
- type PaxosServer
- func (s *PaxosServer) Accept(ctx context.Context, req *paxosv1.AcceptRequest) (*paxosv1.AcceptedResponse, error)
- func (s *PaxosServer) AcquireLock(ctx context.Context, req *paxosv1.AcquireLockRequest) (*paxosv1.AcquireLockResponse, error)
- func (s *PaxosServer) CompareAndWrite(ctx context.Context, req *paxosv1.CompareAndWriteRequest) (*paxosv1.CompareAndWriteResponse, error)
- func (s *PaxosServer) GetKVEntry(ctx context.Context, req *paxosv1.GetKVEntryRequest) (*paxosv1.GetKVEntryResponse, error)
- func (s *PaxosServer) GetPeerEndpoints(ctx context.Context, req *paxosv1.GetPeerEndpointsRequest) (*paxosv1.GetPeerEndpointsResponse, error)
- func (s *PaxosServer) JoinCluster(ctx context.Context, req *paxosv1.JoinClusterRequest) (*paxosv1.JoinClusterResponse, error)
- func (s *PaxosServer) Ping(ctx context.Context, req *paxosv1.PingRequest) (*paxosv1.PingResponse, error)
- func (s *PaxosServer) Prepare(ctx context.Context, req *paxosv1.PrepareRequest) (*paxosv1.PromiseResponse, error)
- func (s *PaxosServer) Read(ctx context.Context, req *paxosv1.ReadRequest) (*paxosv1.ReadResponse, error)
- func (s *PaxosServer) ReadPrefix(ctx context.Context, req *paxosv1.ReadPrefixRequest) (*paxosv1.ReadPrefixResponse, error)
- func (s *PaxosServer) ReleaseLock(ctx context.Context, req *paxosv1.ReleaseLockRequest) (*paxosv1.ReleaseLockResponse, error)
- func (s *PaxosServer) RenewLock(ctx context.Context, req *paxosv1.RenewLockRequest) (*paxosv1.RenewLockResponse, error)
- func (s *PaxosServer) Shutdown(ctx context.Context, req *paxosv1.ShutdownRequest) (*paxosv1.ShutdownResponse, error)
- func (s *PaxosServer) Sync(ctx context.Context, req *paxosv1.SyncRequest) (*paxosv1.SyncResponse, error)
- type Peer
- type PeersData
- type StoreData
- type SystemData
- type UserAPIData
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ListenWithRetry ¶
ListenWithRetry attempts to listen on the given address. If the port is occupied, it tries to find any free port using an exponential backoff strategy for up to 1 minute.
func RunGRPCServer ¶
RunGRPCServer starts the gRPC server and registers the Paxos and User APIs.
Types ¶
type BaseData ¶
HTTPServer provides a web dashboard for inspecting agent state and issuing commands.
type CommandData ¶
type GRPCChannelData ¶
type GRPCServerData ¶
type GRPCStatusData ¶
type GRPCStatusData struct {
BaseData
ErrorMsg template.HTML
Servers []GRPCServerData
Channels []GRPCChannelData
}
type HTTPServer ¶
type HTTPServer struct {
// contains filtered or unexported fields
}
HTTPServer provides a web dashboard for inspecting agent state and issuing commands.
func NewHTTPServer ¶
NewHTTPServer initializes a new HTTPServer.
type MessagesData ¶
type OngoingRequest ¶
type OngoingRequest struct {
// ID is a unique identifier for the request.
ID string
// Type indicates the kind of request (e.g., Read, CompareAndWrite).
Type string
// Key is the target key path for the request.
Key string
// StartTime records when the request was initiated.
StartTime time.Time
// Result contains the outcome message or value as a string.
Result string
// Finished indicates whether the request has completed.
Finished bool
// Success indicates if a finished request was successful.
Success bool
}
OngoingRequest tracks the state of a User API request initiated via the web dashboard.
type Participant ¶
type PaxosClient ¶
type PaxosClient struct {
// contains filtered or unexported fields
}
PaxosClient wraps a gRPC connection to a remote Paxos agent.
func NewPaxosClient ¶
func NewPaxosClient(agentID string, addr string) (*PaxosClient, error)
NewPaxosClient establishes a connection to the specified address.
func (*PaxosClient) Accept ¶
func (c *PaxosClient) Accept(ctx context.Context, req *paxosv1.AcceptRequest) (*paxosv1.AcceptedResponse, error)
Accept forwards an Accept request.
func (*PaxosClient) AgentID ¶
func (c *PaxosClient) AgentID() string
AgentID returns the remote agent's ID.
func (*PaxosClient) Close ¶
func (c *PaxosClient) Close() error
Close closes the underlying gRPC connection.
func (*PaxosClient) GetKVEntry ¶
func (c *PaxosClient) GetKVEntry(ctx context.Context, req *paxosv1.GetKVEntryRequest) (*paxosv1.GetKVEntryResponse, error)
GetKVEntry forwards a GetKVEntry request.
func (*PaxosClient) GetPeerEndpoints ¶
func (c *PaxosClient) GetPeerEndpoints(ctx context.Context, req *paxosv1.GetPeerEndpointsRequest) (*paxosv1.GetPeerEndpointsResponse, error)
GetPeerEndpoints forwards a GetPeerEndpoints request.
func (*PaxosClient) JoinCluster ¶
func (c *PaxosClient) JoinCluster(ctx context.Context, req *paxosv1.JoinClusterRequest) (*paxosv1.JoinClusterResponse, error)
JoinCluster forwards a JoinCluster request.
func (*PaxosClient) Ping ¶
func (c *PaxosClient) Ping(ctx context.Context, req *paxosv1.PingRequest) (*paxosv1.PingResponse, error)
Ping forwards a Ping request.
func (*PaxosClient) Prepare ¶
func (c *PaxosClient) Prepare(ctx context.Context, req *paxosv1.PrepareRequest) (*paxosv1.PromiseResponse, error)
Prepare forwards a Prepare request.
func (*PaxosClient) Sync ¶
func (c *PaxosClient) Sync(ctx context.Context, req *paxosv1.SyncRequest) (*paxosv1.SyncResponse, error)
Sync forwards a Sync request.
type PaxosServer ¶
type PaxosServer struct {
paxosv1.UnimplementedPaxosServiceServer
paxosv1.UnimplementedUserServiceServer
// contains filtered or unexported fields
}
PaxosServer implements both the internal PaxosService and the client-facing UserService over gRPC.
func NewPaxosServer ¶
func NewPaxosServer(agentID string, ident *identity.Identity, store *state.Store, acceptor *paxos.Acceptor, cell *paxos.Cell) *PaxosServer
NewPaxosServer initializes a new PaxosServer.
func (*PaxosServer) Accept ¶
func (s *PaxosServer) Accept(ctx context.Context, req *paxosv1.AcceptRequest) (*paxosv1.AcceptedResponse, error)
Accept handles the Phase 2a of the Paxos protocol.
func (*PaxosServer) AcquireLock ¶
func (s *PaxosServer) AcquireLock(ctx context.Context, req *paxosv1.AcquireLockRequest) (*paxosv1.AcquireLockResponse, error)
AcquireLock handles a client request to acquire a distributed lock.
func (*PaxosServer) CompareAndWrite ¶
func (s *PaxosServer) CompareAndWrite(ctx context.Context, req *paxosv1.CompareAndWriteRequest) (*paxosv1.CompareAndWriteResponse, error)
CompareAndWrite handles a client request to atomically update a key's value.
func (*PaxosServer) GetKVEntry ¶
func (s *PaxosServer) GetKVEntry(ctx context.Context, req *paxosv1.GetKVEntryRequest) (*paxosv1.GetKVEntryResponse, error)
GetKVEntry returns the current state of a specific key from the local store.
func (*PaxosServer) GetPeerEndpoints ¶
func (s *PaxosServer) GetPeerEndpoints(ctx context.Context, req *paxosv1.GetPeerEndpointsRequest) (*paxosv1.GetPeerEndpointsResponse, error)
GetPeerEndpoints returns a snapshot of all known peers and their endpoints.
func (*PaxosServer) JoinCluster ¶
func (s *PaxosServer) JoinCluster(ctx context.Context, req *paxosv1.JoinClusterRequest) (*paxosv1.JoinClusterResponse, error)
JoinCluster processes a request from a new node attempting to join the cluster.
func (*PaxosServer) Ping ¶
func (s *PaxosServer) Ping(ctx context.Context, req *paxosv1.PingRequest) (*paxosv1.PingResponse, error)
Ping responds to a liveness check and exchanges endpoint information.
func (*PaxosServer) Prepare ¶
func (s *PaxosServer) Prepare(ctx context.Context, req *paxosv1.PrepareRequest) (*paxosv1.PromiseResponse, error)
Prepare handles the Phase 1a of the Paxos protocol.
func (*PaxosServer) Read ¶
func (s *PaxosServer) Read(ctx context.Context, req *paxosv1.ReadRequest) (*paxosv1.ReadResponse, error)
Read handles a client request to read a key with a specified consistency quorum.
func (*PaxosServer) ReadPrefix ¶
func (s *PaxosServer) ReadPrefix(ctx context.Context, req *paxosv1.ReadPrefixRequest) (*paxosv1.ReadPrefixResponse, error)
ReadPrefix handles a client request to read all entries with a specified prefix.
func (*PaxosServer) ReleaseLock ¶
func (s *PaxosServer) ReleaseLock(ctx context.Context, req *paxosv1.ReleaseLockRequest) (*paxosv1.ReleaseLockResponse, error)
ReleaseLock handles a client request to release a distributed lock.
func (*PaxosServer) RenewLock ¶
func (s *PaxosServer) RenewLock(ctx context.Context, req *paxosv1.RenewLockRequest) (*paxosv1.RenewLockResponse, error)
RenewLock handles a client request to extend a distributed lock's duration.
func (*PaxosServer) Shutdown ¶
func (s *PaxosServer) Shutdown(ctx context.Context, req *paxosv1.ShutdownRequest) (*paxosv1.ShutdownResponse, error)
func (*PaxosServer) Sync ¶
func (s *PaxosServer) Sync(ctx context.Context, req *paxosv1.SyncRequest) (*paxosv1.SyncResponse, error)
Sync returns the highest known version numbers for all keys in the local store.