You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MB-38444: Set Backfill SnapEndSeqno to SeqList HighSeqno
This patch fixes an inconsistency between the EndSeqno and
MaxVisibleSeqno that we send in SnapMarker at Backfill in Ephemeral.
That is, we may end up breaking the (MVS <= EndSeqno) invariant, which
could cause:
1) a wrong MVS > EndSeqno sent in the marker
2) a wrong MVS and EndSeqno
(1) may happen when the connection supports SyncReplication, while (2)
when the connection doesn't support SR.
*Details*
There is a substantial difference in how we create the Backfill Range
between Persistent (where everything works fine) and Ephemeral.
That is, for Persistence we pick up the the full range of the on-disk
seqno-index (ie, all data indexed in the latest on-disk header). By
doing that, EndSeqno and MVS are consistent.
While in Ephemeral we set the EndSeqno of the Backfill Range based on
what we have in the CheckpointManager. For making it simple, apart from
some exceptions that is (EndSeqno = FirstCkptSeqno - 1).
Then we consider the MVS from the Ephemeral storage (ie, the SeqList),
which in general is not consistent with the computed EndSeqno.
With this patch Ephemeral's behaviour matches the one in Persistent, ie
Backfill picks up all data in the storage. Which makes the existing
usage of MVS correct.
Change-Id: I4c504b8e161f1d5463757414e752a77c885fe25e
Reviewed-on: http://review.couchbase.org/c/kv_engine/+/144019
Well-Formed: Build Bot <[email protected]>
Tested-by: Build Bot <[email protected]>
Reviewed-by: Dave Rigby <[email protected]>
0 commit comments