syncapi

package
v1.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2026 License: GPL-3.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const PeerContextKey peerContextKey = "peer"
View Source
const SyncProtocolVersion = 1

Variables

View Source
var ErrNotBackrestURI = errors.New("not a backrest URI")

Functions

func ContextWithPeer added in v1.11.0

func ContextWithPeer(ctx context.Context, peer *v1.Multihost_Peer) context.Context

func CreateRemoteRepoURI

func CreateRemoteRepoURI(instanceUrl string) (string, error)

func InstanceForBackrestURI

func InstanceForBackrestURI(repoUri string) (string, error)

func IsBackrestRemoteRepoURI

func IsBackrestRemoteRepoURI(repoUri string) bool

func PeerFromContext added in v1.11.0

func PeerFromContext(ctx context.Context) *v1.Multihost_Peer

func RepoForBackrestURI

func RepoForBackrestURI(repoUri string) (string, error)

Types

type BackrestSyncHandler

type BackrestSyncHandler struct {
	v1syncconnect.UnimplementedBackrestSyncServiceHandler
	// contains filtered or unexported fields
}

func NewBackrestSyncHandler

func NewBackrestSyncHandler(mgr *SyncManager) *BackrestSyncHandler

func (*BackrestSyncHandler) Sync

type BackrestSyncStateHandler added in v1.9.0

type BackrestSyncStateHandler struct {
	v1syncconnect.UnimplementedBackrestSyncStateServiceHandler
	// contains filtered or unexported fields
}

func NewBackrestSyncStateHandler added in v1.9.0

func NewBackrestSyncStateHandler(mgr *SyncManager) *BackrestSyncStateHandler

func (*BackrestSyncStateHandler) GetPeerSyncStatesStream added in v1.9.0

type InMemoryPeerStateManager added in v1.9.0

type InMemoryPeerStateManager struct {
	// contains filtered or unexported fields
}

func NewInMemoryPeerStateManager added in v1.9.0

func NewInMemoryPeerStateManager() *InMemoryPeerStateManager

func (*InMemoryPeerStateManager) Close added in v1.9.0

func (m *InMemoryPeerStateManager) Close() error

func (*InMemoryPeerStateManager) GetAll added in v1.9.0

func (m *InMemoryPeerStateManager) GetAll() []*PeerState

func (*InMemoryPeerStateManager) GetPeerState added in v1.9.0

func (m *InMemoryPeerStateManager) GetPeerState(keyID string) *PeerState

func (*InMemoryPeerStateManager) OnStateChanged added in v1.9.0

func (*InMemoryPeerStateManager) SetPeerState added in v1.9.0

func (m *InMemoryPeerStateManager) SetPeerState(keyID string, state *PeerState)

type PeerState added in v1.9.0

type PeerState struct {
	InstanceID string
	KeyID      string

	LastHeartbeat time.Time

	ConnectionState        v1sync.ConnectionState
	ConnectionStateMessage string

	// Plans and repos available on this peer
	KnownRepos map[string]*v1sync.RepoMetadata
	KnownPlans map[string]*v1sync.PlanMetadata

	// Partial configuration available for this peer
	Config *v1sync.RemoteConfig
}

func (*PeerState) Clone added in v1.9.0

func (ps *PeerState) Clone() *PeerState

type PeerStateManager added in v1.9.0

type PeerStateManager interface {
	GetPeerState(keyID string) *PeerState
	GetAll() []*PeerState
	SetPeerState(keyID string, state *PeerState)
	OnStateChanged() eventemitter.Receiver[*PeerState]
	Close() error
}

type SqlitePeerStateManager added in v1.9.0

type SqlitePeerStateManager struct {
	// contains filtered or unexported fields
}

func NewSqlitePeerStateManager added in v1.9.0

func NewSqlitePeerStateManager(dbpool *sql.DB) (*SqlitePeerStateManager, error)

func (*SqlitePeerStateManager) Close added in v1.9.0

func (m *SqlitePeerStateManager) Close() error

func (*SqlitePeerStateManager) GetAll added in v1.9.0

func (m *SqlitePeerStateManager) GetAll() []*PeerState

func (*SqlitePeerStateManager) GetPeerState added in v1.9.0

func (m *SqlitePeerStateManager) GetPeerState(keyID string) *PeerState

func (*SqlitePeerStateManager) OnStateChanged added in v1.9.0

func (m *SqlitePeerStateManager) OnStateChanged() eventemitter.Receiver[*PeerState]

func (*SqlitePeerStateManager) SetPeerState added in v1.9.0

func (m *SqlitePeerStateManager) SetPeerState(keyID string, state *PeerState)

type SyncClient

type SyncClient struct {
	// contains filtered or unexported fields
}

func NewSyncClient

func NewSyncClient(
	mgr *SyncManager,
	snapshot syncConfigSnapshot,
	peer *v1.Multihost_Peer,
	oplog *oplog.OpLog,
) (*SyncClient, error)

func (*SyncClient) RunSync

func (c *SyncClient) RunSync(ctx context.Context)

type SyncError added in v1.9.0

type SyncError struct {
	State   v1sync.ConnectionState
	Message error
}

func NewSyncErrorAuth added in v1.9.0

func NewSyncErrorAuth(message error) *SyncError

func NewSyncErrorConnected added in v1.9.0

func NewSyncErrorConnected(message error) *SyncError

func NewSyncErrorDisconnected added in v1.9.0

func NewSyncErrorDisconnected(message error) *SyncError

func NewSyncErrorInternal added in v1.9.0

func NewSyncErrorInternal(message error) *SyncError

func NewSyncErrorPending added in v1.9.0

func NewSyncErrorPending(message error) *SyncError

func NewSyncErrorProtocol added in v1.9.0

func NewSyncErrorProtocol(message error) *SyncError

func NewSyncErrorRetryWait added in v1.9.0

func NewSyncErrorRetryWait(message error) *SyncError

func NewSyncErrorUnknown added in v1.9.0

func NewSyncErrorUnknown(message error) *SyncError

func (*SyncError) Error added in v1.9.0

func (e *SyncError) Error() string

func (*SyncError) Unwrap added in v1.9.0

func (e *SyncError) Unwrap() error

type SyncManager

type SyncManager struct {
	// contains filtered or unexported fields
}

func NewSyncManager

func NewSyncManager(configMgr *config.ConfigManager, oplog *oplog.OpLog, orchestrator *orchestrator.Orchestrator, peerStateManager PeerStateManager) *SyncManager

func (*SyncManager) GetSyncClients

func (m *SyncManager) GetSyncClients() map[string]*SyncClient

GetSyncClients returns a copy of the sync clients map. This makes the map safe to read from concurrently.

func (*SyncManager) RunSync

func (m *SyncManager) RunSync(ctx context.Context)

Note: top level function will be called holding the lock, must kick off goroutines and then return.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL