Replica Read

Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History
The recommendations here are under development and may change before implementation.


The intent of the REPLICA READ operation is to allow a client to perform retrieval operations only against one or more replicas. This would be an inconsistent read. While it could be used for nearly any purpose, the only common use case is expected to be in the event of failures when a known inconsistent read is okay.

Client API


Note: not sure if we like this yet...

GetFuture resf;
boolean isReplicaRead;

try { 
  resf = cbc.asyncGet("foo");
  isReplicaRead = false;
} catch (TimeoutException ex) {
  // uhoh, something went wrong, server isn't there!
  resf = cbc.asyncReplicaGet("foo");
  isReplicaRead = true;
} finally {

  // do something useful




res = nil
is_replica_read = false

  val = cbc.get("foo")
rescue Couchbase::Error::Timeout => ex
  val = cbc.get("foo", :replica => true)
  is_replica_read = true
  # do something useful

Recommended Implementation

These recommendations are preliminary, and have not been reviewed.

The replica read command is intentionally simple. It would attempt to iterate through all of the replicas as designated by the configuration supplied by the cluster in order, trying to get the specified key.

Implementation Constraints

REPLICA READ is a binary protocol only operation. It could be implemented in ASCII, but that would require changes in moxi and additional clients.

Implementation Questions

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.