Description
From the synchronous set method, the underlying observePoll() is called but the results of the OperationFuture are set with the result of the status of the mutation, not the result of the status of the observe.
public OperationFuture<Boolean> set(String key, int exp,
String value, PersistTo req, ReplicateTo rep) {
OperationFuture<Boolean> setOp = set(key, exp, value);
try {
if (setOp.get())
} catch (InterruptedException e)
{ setOp.set(false, setOp.getStatus()); } catch (ExecutionException e) { setOp.set(false, setOp.getStatus()); }catch (TimeoutException e)
{ setOp.set(false, setOp.getStatus()); } catch (IllegalArgumentException e) { setOp.set(false, setOp.getStatus()); }catch (RuntimeException e)
{ setOp.set(false, setOp.getStatus()); } return (setOp);
}
Note that the setOp response is used when setting it's own status, not the status of the observe, which is buried in the exception. The exception is out of scope by the time the response goes back to the caller's code.