Skip to content

Configure ordering of outbound records

The record-ordering section configures the ordering of records dispatched to the outbound destination. When record-ordering is enabled it guarantees all writes for a record (uniquely identified by namespace and digest) from this connector instance to the outbound destination will be in non-decreasing LUT (last update time) order.

This feature is implemented by maintaining a cache of the records along with its LUT (last update time). A new record, received from Aerospike XDR, is dispatched to the outbound destination only when the LUT of the new record is greater than or equal to the LUT of the cached instance. Also if the LUT of the new record is greater than or equal to the LUT of the cached instance, the LUT of the cached instance is updated to the LUT of this new record. If the new record has a lower LUT than the cached instance, then the record is rejected to Aerospike XDR with a temporary error, and Aerospike XDR will retry.

To keep the RAM memory consumed by the LUT (last update time) cache within reasonable bounds an entry is deleted after a configured duration (lut-cache-ttl-seconds) elapses from the last update to the record’s LUT. Each LUT cache entry consumes about 256 bytes.

Cache entry sizeBytes per million cache entriesNumber of entries per GiB
256 bytes244 MiBApproximately 4.19 million cache entries.
  • Each connector instance is stateless and is unaware of the other connector instances, the record ordering applies only to each individual connector instance. XDR does not guarantee shipping of a record to the same connector instance. To enforce record ordering from XDR to outbound destination through the outbound connector, each XDR instance needs to be configured to ship records only to a single outbound connector instance in a 1:1 mapping. See record ordering architecture for more details.
  • The LUT (last update time) cache is stored in RAM memory and is lost across restarts of the connectors.

The options for the record-ordering are as follows

By default, the record-ordering block is not present in the configuration, and record ordering is therefore disabled. Record ordering must be explicitly enabled by configuring this block.

OptionDefaultDescription
lut-cache-ttl-seconds30Time to live in seconds for a last update time (LUT) cache entry. An entry is deleted from the cache after lut-cache-ttl-seconds elapses from the last update to the record’s LUT. This must be configured to a value greater than the maximum delay a record can encounter between dispatch by Aerospike XDR to being received by the outbound connector. The delay might be caused by slow networks, VM pauses, VM migrations, or other factors.
enabletrueEnables record ordering when the record-ordering block is present.

Examples

# lut-cache-ttl-seconds defaults to 30
record-ordering:
enable: true
# Explicitly disable record ordering.
record-ordering:
enable: false
# enable defaults to true
record-ordering:
lut-cache-ttl-seconds: 60
record-ordering:
enable: true
lut-cache-ttl-seconds: 60
Feedback

Was this page helpful?

What type of feedback are you giving?

What would you like us to know?

+Capture screenshot

Can we reach out to you?