Description
Once document expirations in DCP are utilising the specific DCP Expire (0x59) opcode rather than the DCP Delete (0x58) opcode, as per MB-26907, Couchbase Server should replicate these expirations natively via XDCR to remote clusters.
That is to say the remote end of an XDCR relationship should receive a delete message which specifies the source of the delete was TTL. rather than the current Delete_with_Meta which has an implicit DeleteSource of "Expliticty deleted". If XDCR sends a Delete_with_Meta in response to receiving a DCP Expire, there is no way for the remote cluster to be able to replicate this its own DCP consumers as a document expiry, such as intra-cluster replication, Eventing, and onward XDCR.
To solve this issue, as now detailed in the docs for Delete_With_Meta, there now exists a new options flag named IS_EXPIRATION which can be used with a delete_with_meta op to denote that it instead refers to an expiration. This correctly sets the DeleteSource inside KV to be TTL instead of the default explicit. The optionality of this flag allows for users of delete_with_meta that haven't updated to support this to continue processing expirations as deletions. However, this does also mean utilising their feature breaks the expiry opcode output feature until they do support it.
Attachments
Issue Links
- blocks
-
MB-32616 cbbackupmgr: Add support for expiries
-
- Open
-
-
GOCBC-388 Add IS_EXPIRATION option to RemoveMeta
-
- Resolved
-
-
MB-32617 cbbackup/restore: Add support for expiries
-
- Closed
-
- depends on
-
MB-26907 DCP: Differentiate Between Delete and Expiry Operations
-
- Closed
-
- is triggering
-
MB-32771 XDCR: Implement addition of IS_EXPIRATION option to delete_with_meta
-
- Closed
-
- relates to
-
MB-32444 XDCR: Allow filtering out of expiry messages to save overhead
-
- Closed
-