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

Method GetReplicationStatus

db/sg_replicate_cfg.go:1436–1496  ·  view source on GitHub ↗
(ctx context.Context, replicationID string, options ReplicationStatusOptions)

Source from the content-addressed store, hash-verified

1434}
1435
1436func (m *sgReplicateManager) GetReplicationStatus(ctx context.Context, replicationID string, options ReplicationStatusOptions) (*ReplicationStatus, error) {
1437
1438 // Check if replication is assigned locally
1439 m.activeReplicatorsLock.RLock()
1440 replication, isLocal := m.activeReplicators[replicationID]
1441 m.activeReplicatorsLock.RUnlock()
1442
1443 if options.LocalOnly && !isLocal {
1444 return nil, nil
1445 }
1446
1447 var status *ReplicationStatus
1448 var remoteCfg *ReplicationCfg
1449 if isLocal {
1450 status = replication.GetStatus(ctx)
1451 } else {
1452 // Attempt to retrieve persisted status
1453 var loadErr error
1454 status, loadErr = LoadReplicationStatus(m.loggingCtx, m.dbContext, replicationID)
1455 if loadErr != nil {
1456 // Unable to load persisted status. Create status stub based on config
1457 var err error
1458 remoteCfg, err = m.GetReplication(replicationID)
1459 if err != nil {
1460 return nil, err
1461 }
1462 if remoteCfg.AssignedNode == "" {
1463 status = &ReplicationStatus{
1464 ID: replicationID,
1465 Status: ReplicationStateUnassigned,
1466 }
1467 } else {
1468 status = &ReplicationStatus{
1469 ID: replicationID,
1470 Status: remoteCfg.TargetState,
1471 }
1472 }
1473 }
1474 }
1475
1476 // Add the replication config if requested
1477 if options.IncludeConfig {
1478 if remoteCfg == nil {
1479 var err error
1480 remoteCfg, err = m.GetReplication(replicationID)
1481 if err != nil {
1482 return nil, err
1483 }
1484 }
1485 status.Config = remoteCfg.ReplicationConfig.Redacted(ctx)
1486 }
1487
1488 if !options.IncludeError && status.Status == ReplicationStateError {
1489 return nil, nil
1490 }
1491 if options.ActiveOnly && status.Status != ReplicationStateRunning {
1492 return nil, nil
1493 }

Callers 3

UpsertReplicationMethod · 0.95
PutReplicationStatusMethod · 0.95

Calls 6

GetReplicationMethod · 0.95
LoadReplicationStatusFunction · 0.85
RLockMethod · 0.80
RUnlockMethod · 0.80
GetStatusMethod · 0.45
RedactedMethod · 0.45

Tested by

no test coverage detected