MB-23535 [Ephemeral]: Return 0 for OBSERVE_SEQNO::persisted_seqno 15/77115/5
authorDave Rigby <daver@couchbase.com>
Thu, 20 Apr 2017 10:54:35 +0000 (11:54 +0100)
committerDave Rigby <daver@couchbase.com>
Thu, 20 Apr 2017 20:51:26 +0000 (20:51 +0000)
commitc90c9af9a42ff175b60a89921f88278888dfc756
tree6cac110940eead46064a68acfb3d428dd91c0500
parentb3d7060115064fbf92e55d3f5e5ba2716ffdca0b
MB-23535 [Ephemeral]: Return 0 for OBSERVE_SEQNO::persisted_seqno

Ephemeral buckets (which have no persistence) should not return a
last_persisted_seqno in the OBSERVE_SEQNO response - that would be
inaccurate (and misleading) to applications which are attempting to
verify that an item has been persisted to disk. Instead zero should be
returned.

However, *wihin* the cluster we still need to report the highest
sequence number a vBucket is up to for things like DCP takeover, and
currently both of these use-cases use the same method -
getPersistenceSeqno().

To support both use-cases, add a new getPublicPersistenceSeqno()
method which is used when reporting persistence to clients. For EP
buckets this is identical to the original getPersistenceSeqno()
method, but for Ephemeral it always returns zero.

Update OBSERVE_SEQNO tests as appropriate so they check for the
correct sequence number based on the bucket type.

Change-Id: I2db32bd0747e45a749bf964d2152bdfe79d1e3d2
Reviewed-on: http://review.couchbase.org/77115
Reviewed-by: Jim Walker <jim@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>
src/ep_engine.cc
src/ep_vb.h
src/ephemeral_vb.h
src/vbucket.h
tests/ep_testsuite.cc