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:
- Network connectivity between the source/destination .
- 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
| 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
| 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
}
}
},
...
}