Out-of-Order execution

Hi Team ,

Could anyone please provide any link or details to understand what is Out-of-Order execution in Couchbase connection.

Thanks,
Debasis

Hi @Debasis_Mallick ,

Out-of-order execution (OOOE) is an optimization that prevents head-of-line blocking.

The Couchbase SDKs use a limited number of connections to the Couchbase Data (K/V) service. Without OOOE, if those connections are all occupied servicing slower requests (like durable writes, or operations that require disk IO because the document is not in the cache), a quick operation (like a simple “get” for something in the cache) must wait for the slow operations to finish.

With OOOE, the “get” operation can jump the queue, and be processed ahead of the slow operations.

Here’s what the Couchbase Server 7.0 release notes say about out-of-order execution:

Added support for out-of-order execution of operations in Data Service.

When a Data Service request cannot be completed immediately, this enhancement enables looking ahead in the connection’s queue and starting work on the next request. Out-of-order execution behavior is enabled by default and you can choose to disable it. See Java SDK documentation for further information.

Here’s what the Couchbase Java SDK’s client settings documentation has to say about out-of-order execution:

Out-of-Order execution allows the server to concurrently handle multiple requests on the same connection, potentially improving performance for durable writes and multi-document ACID transactions. This means that tuning the number of connections (KV endpoints) is no longer necessary as a workaround where data not available in the cache is causing timeouts.

Thanks,
David