MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / LoadReplicationStatus

Function LoadReplicationStatus

db/active_replicator.go:380–409  ·  view source on GitHub ↗

LoadReplicationStatus attempts to load both push and pull replication checkpoints, and constructs the combined status

(ctx context.Context, dbContext *DatabaseContext, replicationID string)

Source from the content-addressed store, hash-verified

378
379// LoadReplicationStatus attempts to load both push and pull replication checkpoints, and constructs the combined status
380func LoadReplicationStatus(ctx context.Context, dbContext *DatabaseContext, replicationID string) (status *ReplicationStatus, err error) {
381
382 status = &ReplicationStatus{
383 ID: replicationID,
384 }
385
386 pullStatusKey := dbContext.MetadataKeys.ReplicationStatusKey(PullCheckpointID(replicationID))
387 pullStatus, _ := getLocalStatus(ctx, dbContext.MetadataStore, pullStatusKey)
388 if pullStatus != nil {
389 status.PullReplicationStatus = pullStatus.PullReplicationStatus
390 status.Status = pullStatus.Status
391 status.ErrorMessage = pullStatus.ErrorMessage
392 status.LastSeqPull = pullStatus.LastSeqPull
393 }
394
395 pushStatusKey := dbContext.MetadataKeys.ReplicationStatusKey(PushCheckpointID(replicationID))
396 pushStatus, _ := getLocalStatus(ctx, dbContext.MetadataStore, pushStatusKey)
397 if pushStatus != nil {
398 status.PushReplicationStatus = pushStatus.PushReplicationStatus
399 status.Status = pushStatus.Status
400 status.ErrorMessage = pushStatus.ErrorMessage
401 status.LastSeqPush = pushStatus.LastSeqPush
402 }
403
404 if pullStatus == nil && pushStatus == nil {
405 return nil, errors.New("Replication status not found")
406 }
407
408 return status, nil
409}
410
411func PushCheckpointID(replicationID string) string {
412 return "sgr2cp:push:" + replicationID

Callers 2

GetReplicationStatusMethod · 0.85

Calls 4

PullCheckpointIDFunction · 0.85
getLocalStatusFunction · 0.85
PushCheckpointIDFunction · 0.85
ReplicationStatusKeyMethod · 0.80

Tested by

no test coverage detected