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

Method PutReplicationStatus

db/sg_replicate_cfg.go:1499–1539  ·  view source on GitHub ↗

PutReplicationStatus updates the state of a replication.

(ctx context.Context, replicationID, action string)

Source from the content-addressed store, hash-verified

1497
1498// PutReplicationStatus updates the state of a replication.
1499func (m *sgReplicateManager) PutReplicationStatus(ctx context.Context, replicationID, action string) (status *ReplicationStatus, auditEvent base.AuditID, err error) {
1500
1501 targetState := ""
1502 switch action {
1503 case "reset":
1504 auditEvent = base.AuditIDISGRReset
1505 targetState = ReplicationStateResetting
1506 case "stop":
1507 auditEvent = base.AuditIDISGRStop
1508 targetState = ReplicationStateStopped
1509 case "start":
1510 auditEvent = base.AuditIDISGRStart
1511 targetState = ReplicationStateRunning
1512 default:
1513 return nil, 0, base.HTTPErrorf(http.StatusBadRequest, "Unrecognized action %q. Valid values are start/stop/reset.", action)
1514 }
1515
1516 err = m.UpdateReplicationState(replicationID, targetState)
1517 if err != nil {
1518 return nil, auditEvent, err
1519 }
1520
1521 updatedStatus, err := m.GetReplicationStatus(ctx, replicationID, DefaultReplicationStatusOptions())
1522 if err != nil {
1523 // Not found is expected when adhoc replication is stopped, return removed status instead of error
1524 // since UpdateReplicationState was successful
1525 if err == base.ErrNotFound {
1526 replicationStatus := &ReplicationStatus{
1527 ID: replicationID,
1528 Status: "removed",
1529 }
1530 return replicationStatus, auditEvent, nil
1531 } else {
1532 return nil, auditEvent, err
1533 }
1534 }
1535
1536 // Modify the returned replication state to align with the requested state
1537 updatedStatus.Status = transitionStateName(updatedStatus.Status, targetState)
1538 return updatedStatus, auditEvent, nil
1539}
1540
1541func (m *sgReplicateManager) GetReplicationStatusAll(ctx context.Context, options ReplicationStatusOptions) ([]*ReplicationStatus, error) {
1542

Calls 5

GetReplicationStatusMethod · 0.95
HTTPErrorfFunction · 0.92
transitionStateNameFunction · 0.85