Source replication request log
On IBM Cloud Object Storage, queued replications are asynchronously processed by Access
Pool(s) that are capable of accessing the source bucket (i.e. pools in which the containing
Container Vault is deployed to). When replication is processed, a log is generated on the source
Accesser device that processed that particular replication (located in
replication.log ).
| Request type | Description |
|---|---|
S3.REPLICATION.SOURCE_OBJECT_SYNC S3.REPLICATION.SOURCE_OBJECT_ATTEMPT
S3.REPLICATION_RETRY.SOURCE_OBJECT_SYNC S3.REPLICATION_RETRY.SOURCE_OBJECT_ATTEMPT |
Syncs new object version |
S3.REPLICATION.SOURCE_DELETE_SYNC S3.REPLICATION.SOURCE_DELETE_ATTEMPT
S3.REPLICATION_RETRY.SOURCE_DELETE_SYNC S3.REPLICATION_RETRY.SOURCE_DELETE_ATTEMPT |
Syncs new delete marker |
S3.REPLICATION.SOURCE_TAG_SYNC S3.REPLICATION.SOURCE_TAG_ATTEMPT
S3.REPLICATION_RETRY.SOURCE_TAG_SYNC S3.REPLICATION_RETRY.SOURCE_TAG_ATTEMPT |
Syncs tag update on an existing version |
S3.REPLICATION.SOURCE_RETENTION_SYNC S3.REPLICATION.SOURCE_RETENTION_ATTEMPT
S3.REPLICATION_RETRY.SOURCE_RETENTION_SYNC
S3.REPLICATION_RETRY.SOURCE_RETENTION_ATTEMPT |
Syncs object lock retention update on an existing version |
S3.REPLICATION.SOURCE_LEGAL_HOLD_SYNC S3.REPLICATION.SOURCE_LEGAL_HOLD_ATTEMPT
S3.REPLICATION_RETRY.SOURCE_LEGAL_HOLD_SYNC
S3.REPLICATION_RETRY.SOURCE_LEGAL_HOLD_ATTEMPT |
Syncs object lock legal hold on an existing version |
These request type prefixes describe the context of a given replication
- S3.REPLICATION.*
- Replications processed from the fast-retry queue. These replications are typically processed within minutes of making the source-side modification. If the initial replication attempt failed, retries are processed every hour up to 3 additional times before being transitioned to slow-retry queue.
- S3.REPLICATION_RETRY.*
- Replications processed from the slow-retry queue. These replications are retried once a day, up to 30 days, by default.
- *_SYNC
- Replication succeeded
- *_ATTEMPT Replication failed
| Field name | Type | Required | Description |
|---|---|---|---|
replication |
Object | Yes | Contains replication-specific info. Always present for the above request types. |
replication.sync_type |
String | Yes |
Type of this replication sync.
|
replication.originating_request_id |
String | Yes | Request ID of the request that originally triggered this replication. Can be traced back to
the request_id on the original operation that triggered this replication (insert
link to "Replication-triggering operations" article). |
replication.rule_id |
String | Yes | Name of the replication rule (from the source bucket replication configuration) that triggered this replication |
replication.time_in_queue |
Long | Yes | How long this replication has been queued for. Measured from when this replication was originally triggered to when this replication attempt started |
replication.time_to_sync |
Long | Yes | How long this replication took to sync (or transitioned out of fast retry queue). Measured from when this replication was originally triggered to when this attempt is finished. |
replication.queue_attempts |
Long | No | Number of attempts made on this replication. Present when replication attempted from fast-retry queue. |
replication.failure_queue_attempts |
Long | No | Number of attempts made on this replication. Present when replication attempted from slow-retry queue. |
replication.operation_throttle_delay |
Long | Yes | Total delay that was applied on this replication due to replication operation throttle |
replication.byte_throttle_delay |
Long | Yes | Total delay that was applied on this replication due to replication byte transfer throttle |
replication.per_account_delay |
Long | Yes | Amount of penalty applied to this replication work as a result of having too many replications triggered by the source bucket owner. The penalty is enforced in terms of how much this replication is deprioritized with respect to those that are unaffected in the queue, likely taking longer until the first replication attempt is made. However, the value does not translate to actual time duration. |
replication.destination_id |
String | Yes | Destination bucket name for this replication |
replication.status |
String | Yes |
Result of this replication attempt.
|
replication.message |
String | Yes | Detailed description of the replication result |
replication.internal_message |
String | Yes | Internal use |
replication.event_id |
String | Yes | Internal use |
replication.written_to_failure_index |
Boolean | No | Set to true if this replication failed enough times and transitioned to slow-retry state (daily). Field is omitted if work is still fast-retriable (hourly). |
replication.remote |
Object | No | Contains information about remote replication request. May be empty if remote request was not made (e.g. failed before). |
replication.remote.last_modified_time_override |
Long | No | Timestamp corresponding to when the source version was originally created. Not present on metadata syncs. |
replication.remote.tag_last_modified_time_override |
Long | Yes | Timestamp corresponding to when tag was last modified on the source version. |
replication.remote.version_id_override |
String | No | ID of the version that is being replicated |
replication.remote.etag_override |
String | No | ETag to be set on replica. Field is present only when ETag is being overridden. |
replication.remote.destination_url |
String | No | URL that was used to make the remote replication request to the destination. |
replication.remote.remote_request |
Object | No | Contains information specific to the remote replication request made out to the destination. May be empty if remote request was not made (e.g. failed before). |
replication.remote.remote_request.start_time |
Long | Yes | Timestamp when the remote replication request started |
replication.remote.remote_request.finish_time |
Long | Yes | Timestamp when the remote replication request finished |
replication.remote.remote_request.num_attempts |
Integer | Yes | Number of remote replication request attempts. The replication agent may retry a given replication request multiple times within the context of a single top-level attempt under certain conditions (e.g. if destination returned 500, etc) |
replication.remote.remote_request.request_id |
String | No |
Destination-side replication request ID. May be empty if request failed before receiving a response from destination. This can be correlated with the |
replication.remote.remote_request.status |
Integer | No | Status code received from replication request made out to destination. May be empty if request failed before receiving a response from destination. |
replication.remote.remote_request.error_message |
String | No | Detailed error message from replication request made out to destination. Populated if the remote replication request failed. |
Sample logs
Success
{
"duration": "120",
"replication": {
"originating_request_id": "21b7d20b-199e-484b-8421-cab7e99f24ff",
"rule_id": "1",
"time_in_queue": "1587",
"time_to_sync": "1707",
"queue_attempts": "1",
"operation_throttle_delay": "0",
"byte_throttle_delay": "0",
"per_account_delay": "0",
"destination_id": "container-vault-23c9457f-bb7a-4ce6-adb2-014f7d91067b",
"sync_type": "content",
"status": "success",
"message": "sync occurred successfully",
"internal_message": "success",
"remote": {
"last_modified_time_override": "1766041026473",
"tag_last_modified_time_override": "1766041026473",
"version_id_override": "0000019b-303f-7fa9-622c-ebf86426840a",
"destination_url": "https://10.141.25.122",
"remote_request": {
"start_time": "1766041028079",
"finish_time": "1766041028180",
"num_attempts": 1,
"request_id": "cc08b4d6-438a-46bb-a753-0264afe2128f",
"status": 200
}
},
"event_id": "db026053-7d41-4bb7-b074-f7878ee9a823"
},
"selective_logging_enabled": true,
"version_name": "0000019b-303f-7fa9-622c-ebf86426840a",
"storage_account_id": "container-user84d26950-1ac2-4529-ab19-cda642565dae",
"storage_location_id": "271fdc19-4ca7-7d6c-1146-4c473b22d665",
"container_name": "container-vault-3a500bb8-2a4c-460e-a9a6-7305c397d6f6",
"container_id": "94d73e37-7cf9-404e-983b-20808e91b968",
"container_region": "us-south",
"request_id": "db026053-7d41-4bb7-b074-f7878ee9a823",
"request_type": "S3.REPLICATION.SOURCE_OBJECT_SYNC",
"time_start": "18/Dec/2025:06:57:08 +0000",
"timestamp_start": "1766041028064",
"time_finish": "18/Dec/2025:06:57:08 +0000",
"timestamp_finish": "1766041028184",
"object_name": "e31f8174-9697-4e39-bdbe-19af83f8720f",
"status": 200,
"object_length": "13",
"type": "replication",
"format": 1
}
Failure
{
... (common fields omitted)
"replication": {
"originating_request_id": "bfd72065-8c4c-4871-acd0-fc176195df5f",
"rule_id": "replication-rule-945837e8-a368-4424-9def-d8fa41cb051d",
"time_in_queue": "3467",
"time_to_sync": "4084",
"queue_attempts": "4",
"operation_throttle_delay": "0",
"per_account_delay": "0",
"destination_id": "container-vault-dfb460c0-4d61-4c5e-a5ba-bd926fc2ad06",
"sync_type": "content",
"status": "user-error",
"message": "versioning disabled on destination bucket",
"internal_message": "versioning disabled on destination bucket",
"written_to_failure_index": true,
"remote": {
"last_modified_time_override": "1766007604072",
"tag_last_modified_time_override": "1766007604072",
"version_id_override": "0000019b-2e41-8368-717c-fdc98cbfeea9",
"destination_url": "https://10.141.25.122",
"remote_request": {
"start_time": "1766007607877",
"finish_time": "1766007608096",
"num_attempts": 1,
"request_id": "96a044e8-c144-4c02-8bee-7ca2105fd0dd",
"status": 400,
"error_message": "Replication failed after versioning not enabled on remote"
}
},
"event_id": "2bb51704-313c-4e35-9092-21575c0cbb21"
},
"version_name": "0000019b-2e41-8368-717c-fdc98cbfeea9",
"container_name": "container-vault-5dd1dde6-2b14-4281-9c63-a5f790fe6eab",
"error": "Replication failed after versioning not enabled on remote",
"request_id": "2bb51704-313c-4e35-9092-21575c0cbb21",
"request_type": "S3.REPLICATION.SOURCE_OBJECT_ATTEMPT",
"object_name": "5c62ad06-4908-491c-9740-dc66bb90325f",
"status": 409,
"type": "replication",
...
}