Replication policy configuration (source)

When user makes a PutBucketReplication request on a bucket, the Accesser device processing the request makes internal requests to each destination to verify:

  1. Network connectivity between the source/destination .
  2. Proper configuration on source/destination buckets to allow replication between the two (e.g. versioning enabled, ACL permissions for object write, etc.).

Top-level request log

Request type

REST.PUT.CONTAINER_REPLICATION

Table 1. Replication policy configuration (source) fields
Field name Type Required Description
replication Object yes Contains replication-related information. Always present on REST.PUT.CONTAINER_REPLICATION requests.
replication.num_sync_remote_buckets Integer yes Number of destination buckets checked internally as part of this request.
replication.num_failed_remote_buckets Integer no Count of failed destination checks. Empty if there were no failures.
replication.failed_remotes String no Comma-separated list of destination buckets that failed the internal check.

Sample log

{
  ... (common access.log fields omitted)
 
  "request_type": "REST.PUT.CONTAINER_REPLICATION",
  "container_name": "source-bucket",
  "replication": {
    "num_sync_remote_buckets": 2
  },
 
  ...
}

Sub-request log (for each destination checked)

Request type

REST.PUT.CONTAINER_REPLICATION_PART

Table 2. Sub-request log (for each destination checked) fields
Field name Type Required Description
replication Object yes Contains replication-related information. Always present on REST.PUT.CONTAINER_REPLICATION_PART requests.
replication.destination_id String yes Destination bucket name
replication.status Integer no Status code returned from the destination for the internal check request. Typically 204 if successful. Empty if the operation failed before sending the internal request or if response was not received from destination.
replication.remote Integer no Contains information about the internal check request that was made to this destination. Empty if the operation failed before sending the internal request or if response was not received from destination.
replication.remote.destination_url String yes URL that was used to make the internal check request to this destination
replication.remote.remote_request Object yes Contains request-specific information about the internal check request that was made.
replication.remote.remote_request.start_time Long yes Timestamp when this internal check request started
replication.remote.remote_request.finish_time Long yes Timestamp when this internal check request finished
replication.remote.remote_request.num_attempts Integer yes Number of attempts made on this internal check request. Requests are retried when 500 is returned from destination. Note that a log is generated on the destination Accesser for every attempt that is made.
replication.remote.remote_request.request_id String yes Request ID that was assigned to the internal request on the destination. This can be used to correlate this request to the log that is generated on the destination side.

Sample log

{
  ... (common access.log fields omitted)
 
  "request_type": "REST.PUT.CONTAINER_REPLICATION_PART",
  "container_name": "source-bucket",
  "replication": {
    "destination_id": "destination-bucket",
    "status": 204,
    "remote": {
      "destination_url": "https://1.1.1.1/destination-bucket?ibm-replication-allowed",
      "remote_request": {
        "start_time": "1765991577932",
        "finish_time": "1765991578014",
        "num_attempts": 1
      }
    }
  },
 
  ...
}