History log of /5.5.2/kv_engine/engines/ep/src/collections/vbucket_manifest.h (Results 1 - 25 of 31)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v7.0.2, v6.6.3, v7.0.1, v7.0.0, v6.6.2, v6.5.2, v6.6.1, v6.0.5, v6.6.0, v6.5.1, v6.0.4, v6.5.0, v6.0.3, v5.5.4, v5.5.5, v5.5.6, v6.0.1, v5.5.3, v6.0.0, v5.1.3, v5.5.2, v5.5.1, v5.1.2, v5.1.1
# 1f8437cf 06-Feb-2018 Jim Walker <jim@couchbase.com>

MB-26972: JSON DCP Filter must also accept name and uid format

If a client wants to re-connect a DCP stream (non-zero) they must
be specific about the collection so they don't miss a int

MB-26972: JSON DCP Filter must also accept name and uid format

If a client wants to re-connect a DCP stream (non-zero) they must
be specific about the collection so they don't miss a intermediate
collection delete during their downtime.

This commit updates Collections::Filter so two formats of JSON are
valid and updates Collections::VB::Filter to use the strict name/uid
checks when the client uses the name:uid format.

A subsequent patch will ensure that the client does a name:uid request
when the start-seqno is non-zero.

Change-Id: I3cae53bf855d4b8001bcc65b6f036a9053b88307
Reviewed-on: http://review.couchbase.org/85981
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...


# cd24b1b3 09-Mar-2018 Jim Walker <jim@couchbase.com>

MB-28773: Transfer the manifest UID to the replica VB

When a system event propagates a collection change, embed
the manifest UID in the event so that the replica is aware
of the UID

MB-28773: Transfer the manifest UID to the replica VB

When a system event propagates a collection change, embed
the manifest UID in the event so that the replica is aware
of the UID (and can persist/warm up from it).

Change-Id: I66e4ad4274558992b27c5ab02adb42295e761091
Reviewed-on: http://review.couchbase.org/91178
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# f9444d17 09-Mar-2018 Jim Walker <jim@couchbase.com>

MB-28773: Save and reload the manifest UID (via VB)

When a collection change occurs (via set-manifest)
save the manifest UID into each affected VB's meta-data.

When warming up,

MB-28773: Save and reload the manifest UID (via VB)

When a collection change occurs (via set-manifest)
save the manifest UID into each affected VB's meta-data.

When warming up, reload the manifest UID into the VB.

Change-Id: I169c2e0c7ee739dea8b72a21f34f02676e08acba
Reviewed-on: http://review.couchbase.org/91177
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


Revision tags: v5.0.1
# dea18910 25-Oct-2017 Jim Walker <jim@couchbase.com>

MB-26455: Allow correct processing of 'old' keys and separator changes

The collection's separator can only be changed when 0 collections
exist. However nothing stops the separator from c

MB-26455: Allow correct processing of 'old' keys and separator changes

The collection's separator can only be changed when 0 collections
exist. However nothing stops the separator from changing if there are
deleted collections (and their keys) in play.

Prior to this commit each separator change resulted in a single system
event being mutated, that event had a static key. Thus a VB could have
the following sequence of keys/events.

1 fruit::1
2 fruit::2
<fruit collection is deleted>
<separator is changed from :: to - >
<fruit collection is recreated>
6 fruit-1
7 fruit-2
<fruit collection is deleted>
<separator is changed from - to # >
9 $collections_separator (the Item value contains the new separator)
10 $collections::fruit (fruit recreated)
11 fruit#1
12 fruit#2

In this sequence, some of the changes are lost historically because a
static key is used for the separator change. Between seqno 2 and 6 the
separator changed from :: to -, but the separator change system event
is currently at seqno 9 with # as its value.

With this setup a problem exists if we were to process the historical
data e.g. whilst backfilling for DCP or performing a compaction
collection erase. The problem is that when we go back to seqno 1 and
2, we have no knowledge of the separator for those items, all we have
is the current # separator. We cannot determine that fruit::1 is a
fruit collection key.

This commit addresses this problem by making each separator change
generate a unique key. The key itself will encode the new separator,
and because the key is unique it will reside at the correct point in
history for each separator change.

The unique key format will be:

$collections_separator:<seqno>:<new_separator>

With this change the above sequence now looks as:

1 fruit::1
2 fruit::2
<fruit collection is deleted>
4 $collections_separator:3:- (change separator to -)
<fruit collection is recreated>
6 fruit-1
7 fruit-2
<fruit collection is deleted>
9 $collections_separator:8:# (change separator to #)
10 $collections::fruit (fruit recreated)
11 fruit#1
12 fruit#2

Now the code which looks at the historical data (e.g. backfill) will
encounter these separator change keys before it encounters collection
keys using that separator. Backfill and collections-erase can just
maintain a current separator and can now correctly split keys to
discover the collection they belong to. The collections eraser and
KVStore scanning code now include a collections context which has data
and associated code for doing this tracking.

A final piece of the commit is the garbage collection of these unique
keys. i.e. if each separator change puts a unique key into the seqno
index, how can we clean these away when they're no longer needed (i.e.
all fruit:: keys purged)?

Whilst the eraser runs it tracks all 'separator change' keys, because
a separator change can only happen when 0 collections exist, it can
assume that all but the latest separator change key are redundant once
the erase has completed. This list of keys are simply deleted in the
normal way by pushing a deleted Item into the checkpoint once
compaction is complete.

Change-Id: I4b38b04ed72d6b39ceded4a860c15260fd394118
Reviewed-on: http://review.couchbase.org/84801
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# c66ee788 26-Oct-2017 Jim Walker <jim@couchbase.com>

MB-25342: Add Collections::VB::Manifest::CachingReadHandle

The caching readhandle allows limited read access to the manifest
but fits into the functional flow of front-end operations.

MB-25342: Add Collections::VB::Manifest::CachingReadHandle

The caching readhandle allows limited read access to the manifest
but fits into the functional flow of front-end operations.

When constructing the CachingReadHandle from a key, the key is scanned
and a map lookup is performed. The result of the lookup is saved so
that further down the code path, subsequent isLogicallyDeleted checks
don't need to scan the key again and perform another map lookup.

Change-Id: Icffaf8a722f4a9e7e67bce870445cd3f75f940e3
Reviewed-on: http://review.couchbase.org/84474
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...


# 6c282c2c 24-Oct-2017 Jim Walker <jim@couchbase.com>

MB-16181: Const correctness on Collections ReadHandle

The ReadHandle currently allows no changes to be made to the
Manifest, so should have every method marked const. Two methods
had

MB-16181: Const correctness on Collections ReadHandle

The ReadHandle currently allows no changes to be made to the
Manifest, so should have every method marked const. Two methods
had escaped this.

Change-Id: I1a8143907978a81ec3fcc8fcd21fad39aba4ee73
Reviewed-on: http://review.couchbase.org/84746
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


Revision tags: v5.1.0
# ea1d84e5 20-Sep-2017 Jim Walker <jim@couchbase.com>

MB-25342: Reduce map lookups by tracking the largest endSeqno

To determine if a key@seqno is logically deleted we are splitting the
key and looking up in the manifest map for the collect

MB-25342: Reduce map lookups by tracking the largest endSeqno

To determine if a key@seqno is logically deleted we are splitting the
key and looking up in the manifest map for the collection's metadata.

However if we track the greatest end-seqno we can

1) Only do map lookups when the key@seqno is part of the deleted range
2) Quickly determine the key is not logically deleted when no
collections are in the deleting state, no lookups at all.

Change-Id: Ia9d164fc2e97dc4d23e501b4f03d9f74cff84a28
Reviewed-on: http://review.couchbase.org/83570
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# a33e0978 20-Sep-2017 Jim Walker <jim@couchbase.com>

MB-25342: Erase deleted collection keys during in compaction

Add a new call back (using std::function) so that the compactor can
check if a key belongs to a deleted collection and should

MB-25342: Erase deleted collection keys during in compaction

Add a new call back (using std::function) so that the compactor can
check if a key belongs to a deleted collection and should be dropped
from the database.

Change-Id: Iebefd385cfcae38745c81563113c025bba90890e
Reviewed-on: http://review.couchbase.org/83559
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# 55e05834 21-Sep-2017 Jim Walker <jim@couchbase.com>

MB-16181: Rename and update doesKeyContainDeletingCollection

Rename this function isLogicallyDeleted to test if a key belongs to
a deleted collection.

Update the function to con

MB-16181: Rename and update doesKeyContainDeletingCollection

Rename this function isLogicallyDeleted to test if a key belongs to
a deleted collection.

Update the function to consider System keys because a Collection
event key may also be considered deleted by future callers.

Change-Id: I76e07d26e9236d4a5e48be2b7e3c0f41ba0d7221
Reviewed-on: http://review.couchbase.org/83631
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# a9dea599 21-Sep-2017 Jim Walker <jim@couchbase.com>

MB-25342: Update how system events manage collections

Prior to this commit collection lifespans were managed with two system
events, CreateCollection and BeginDeleteCollection. These eve

MB-25342: Update how system events manage collections

Prior to this commit collection lifespans were managed with two system
events, CreateCollection and BeginDeleteCollection. These events
mapped to hidden documents (System namespace) and had unique keys.
Thus the life-span of collection beer, uid:1 may have a seqno 'stream'
as follows (e.g. if backfill from seqno 0).

seqno 3, key = $collections:create:beer:1 <- create marker
seqno 4, key = beer::document <- document in the collection
seqno 5, key = $collections:delete:beer:1 <- delete marker

Now due to the way we support multiple generations of collections
before the prior one is fully purged, this approach leads us to have a
seqno stream as follows (e.g. backfill from seqno 0)

seqno 3, key = $collections:create:beer:1 <- create marker
seqno 4, key = beer::document <- document in the collection
seqno 5, key = $collections:delete:beer:1 <- delete marker
seqno 6, key = $collections:create:beer:2 <- create marker
seqno 7, key = beer::document <- document in the collection
seqno 8, key = $collections:delete:beer:2 <- delete marker

With this approach (unique-keys) we have to maintain an increasing
amount of meta-data to enable correct clean-up of the old generations.
This growing meta-data would need to be in memory and the per VB
JSON manifest.

So to avoid this unbounded 'list' metadata this commit adjusts the way
collections spans are managed in-terms of checkpoints and persisted
data.

1. No longer do we have a Create and separate Delete event - a single
SystemEvent::Collection will be used to cover create and delete.

a) A single key represents all creates/deletes of a collection.
b) A delete of a collection is just a delete of that system key.

2. Collection create/delete now closes the checkpoint to ensure we
never de-dup create/delete/create into a single create, ensuring
a client tracking a vbucket sees explicit creates and deletes and
doesn't have to handle de-duplication E.g. "I've been told of
beer:2 but never saw delete(beer:1)?"

So the life span of a collection now generates sequence numbers as
follows:

seqno 3, key = $collections:beer <- create marker
seqno 4, key = beer::document <- document in the collection
seqno 5, key = $collections:beer del = true <- delete marker

Now if we dump the by-seqno index we see:

seqno 4, key = beer::document <- document in the collection
seqno 5, key = $collections:beer del = true <- delete marker

Now if we dump the by-seqno index after re-creating the collection,
we see.

seqno 4, key = beer::document <- document in the collection
seqno 6, key = $collections:beer <- create marker

And if we had performed cycles of create/delete we can see that there
are no longer many keys associated with the collection resulting in no
extra meta data to store so we can remove old markers.

Note in these examples, DCP wouldn't just replicate the by-seqno index
as seqno 4 can be identified as being logically deleted (it has a
seqno < start of beer). Additionally for a backfill from 0 in the
first example seqno 5 doesn't need to be sent either because the
client cannot know about the create. These enhancements are not part
of this commit.

Change-Id: I32f04e512ce039dce7d780323d9bf3642cc507fa
Reviewed-on: http://review.couchbase.org/83350
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


Revision tags: v5.0.0
# 00f02871 08-Sep-2017 Jim Walker <jim@couchbase.com>

MB-16181: Refactor exception throwing in VB::Manifest

Add helper functions so we can throw with consistent error strings.

Change-Id: I1a127872625f2a5cc49047c883080e572930af7f
Re

MB-16181: Refactor exception throwing in VB::Manifest

Add helper functions so we can throw with consistent error strings.

Change-Id: I1a127872625f2a5cc49047c883080e572930af7f
Reviewed-on: http://review.couchbase.org/83229
Reviewed-by: Daniel Owen <owend@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# 30aab6b7 22-Aug-2017 Jim Walker <jim@couchbase.com>

MB-25342: Collection UID in the Manifest

Primarily update the JSON specification so that the 'set_collections'
command requires that collections are given a UID.

The purpose of

MB-25342: Collection UID in the Manifest

Primarily update the JSON specification so that the 'set_collections'
command requires that collections are given a UID.

The purpose of the UID is to allow KV-engine to see that a collection
was deleted and recreated without ever seeing the intermediate delete.
The collections management code will identify that it knows about a
collection, but because of the UID it can determine if the collection
it knows about is now defunct.

A secondary purpose is that DCP may allow clients to use UIDs when
filtering collections.

The UID must be a JSON string that stores a 64-bit unsigned integer
encoded in hex.

Note it is the cluster managements responsibility to ensure that a UID
is unique enough that it doesn't collide with a previous generation
before that generation has been fully deleted (note once a generation
has been fully deleted, a UID could be re-used).

Change-Id: I6f9bbde00783a7a93511bb5ee426b8c43d8c019f
Reviewed-on: http://review.couchbase.org/83227
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# 9160b844 04-Aug-2017 Jim Walker <jim@couchbase.com>

MB-25342: Introduce Collection::uid to the VB::Manifest

Many functions on VB::Manifest required the caller to specify the name
and a uint32_t as separate parameters when trying to identi

MB-25342: Introduce Collection::uid to the VB::Manifest

Many functions on VB::Manifest required the caller to specify the name
and a uint32_t as separate parameters when trying to identify a
collection. This is now cleaned up so that a new class is used when
identifying a specific 'generation' of a collection.

As part of this new class we are removing the use of 'revision' and
replacing it with 'uid', however we use the Manifest::revision as
the uid and later changes will change the Manifest format so that each
collection is assigned a uid.

As part of the clean-up of revision usage this commit fixes some short
comings in the VB::Manifest management where a delete of a collection
was updating it's revision, forcing later callers of completeDeletion
to use the newer revision, instead of referring to the collection by
the correct name:rev from when it was created.

This commit additionally cleans up the separator changed path which
was needlessly passing the revision through the various code paths and
even over DCP. There is no need it was set and never read.

Change-Id: I0d81ccb9a7c7b7505d0f021b284b368f7a60f88e
Reviewed-on: http://review.couchbase.org/81984
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# bd0e7848 02-Aug-2017 Jim Walker <jim@couchbase.com>

MB-25342: Reorder Collections::VB::Manifest update/serialise

Previous to this commit an update to the Collections::VB::Manifest
would:

1: Serialise the manifest state to a syste

MB-25342: Reorder Collections::VB::Manifest update/serialise

Previous to this commit an update to the Collections::VB::Manifest
would:

1: Serialise the manifest state to a system-event
2: Update the manifest

This ordering is creating issues for new code that is performing full
deletion of the collection data. The issue being that some new changes
being made by step 2 don't get captured in step 1.

It is much simpler to (and really should of been like this from the
start):

1: Update the manifest
2: Serialise the manifest state to a system-event

This patch refactors the add/beginDelete methods so that they return
the ManifestEntry which is affected by the update allowing us to
"patch" it with the seqno we get from queueing of the serialised
manifest.

::completeDeletion is also updated but not refactored.

VbucketManifestTest is also altered slightly so that completeDeletion
is given more test coverage, it now applies updates to the replica
and compares active with replica.

Change-Id: I7361c5675356e47888afcf751dc4db21ac03762e
Reviewed-on: http://review.couchbase.org/81983
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Will Gardner <willg@rdner.io>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# fedefdb1 20-Jul-2017 Jim Walker <jim@couchbase.com>

MB-25342: Add a method to check if a key is in a deleted collection

Simple method that searches for the collection entry and checks
the key::seqno against the entry::endSeqno.

C

MB-25342: Add a method to check if a key is in a deleted collection

Simple method that searches for the collection entry and checks
the key::seqno against the entry::endSeqno.

Change-Id: I2a413852df45c30d2569bae083b59abc35c039f3
Reviewed-on: http://review.couchbase.org/81167
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Daniel Owen <owend@couchbase.com>

show more ...


Revision tags: v4.6.2_ep
# 9e4dcf1f 23-Mar-2017 Jim Walker <jim@couchbase.com>

MB-16181: Add more ostream operators and dump methods

Add more ostream operators to the Collections classes and also give
them dump() methods so we can easily trigger output to stderr.

MB-16181: Add more ostream operators and dump methods

Add more ostream operators to the Collections classes and also give
them dump() methods so we can easily trigger output to stderr.

Finally add a hook so we can force the logging of a lot of collection
state, this will eventually be migrated to stats and more supported
debug methods.

Change-Id: I18abe41cd8f00fe18cb4fb972fcc054375f02d39
Reviewed-on: http://review.couchbase.org/78639
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# 14fcb066 15-Mar-2017 Jim Walker <jim@couchbase.com>

MB-16181: Integrate filters into DcpProducer and ActiveStream

The DCP producer now adds a filter to itself when opened, the filter
is configured from the DCP open input data.

Op

MB-16181: Integrate filters into DcpProducer and ActiveStream

The DCP producer now adds a filter to itself when opened, the filter
is configured from the DCP open input data.

Opening DCP without DCP_OPEN_COLLECTIONS allows access to the
default collection only (if it exists).

Opening DCP with DCP_OPEN_COLLECTIONS allows the client to specify
a filter or if no-value is given, a passthrough filter is created.

Change-Id: I6a8c24c0af20a07ddd029325487172b516e54b00
Reviewed-on: http://review.couchbase.org/78637
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# ef22f9b0 25-May-2017 Dave Rigby <daver@couchbase.com>

Move ep-engine to engines/ep


# 5cf47c05 24-May-2017 Jim Walker <jim@couchbase.com>

MB-16181: Filters with deleted collections

Upstream integration revealed an issue with the VB::Filter.
If we construct a filter with a collection "X" and "X" is actually
marked as de

MB-16181: Filters with deleted collections

Upstream integration revealed an issue with the VB::Filter.
If we construct a filter with a collection "X" and "X" is actually
marked as deleted, "X" should not be part of the filter.

We fix this by replacing VB::Manifest::doesCollectionExist with
VB::Manifest::isCollectionOpen which performs the correct checks.

Tests updated to cover this case.

Change-Id: I38d4ba025805da7653bf3a84053d4280f4f547d7
Reviewed-on: http://review.couchbase.org/78570
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# 042bf504 14-Mar-2017 Jim Walker <jim@couchbase.com>

MB-16181: Add Collections Filter classes and test

Two classes exist for filtering.

Collections::Filter
Collections::VB::Filter

The idea is that a DCP producer will esta

MB-16181: Add Collections Filter classes and test

Two classes exist for filtering.

Collections::Filter
Collections::VB::Filter

The idea is that a DCP producer will establish a Collections::Filter
that lives for the lifetime of the DCP producer.

As the DCP producer creates streams, a Collections::VB::Filter is
assigned to the stream which contains the real set of collections to
filter (and also the actual "filter" function).

Change-Id: I2f35b1698ce977116486a2e6940437eee25faef1
Reviewed-on: http://review.couchbase.org/78137
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


# 4885256f 21-Apr-2017 Jim Walker <jim@couchbase.com>

MB-16181: Make ActiveStream track the current collections separator

This patch updates the ActiveStream so that it stores a copy of the current
separator and tracks changes to as they ar

MB-16181: Make ActiveStream track the current collections separator

This patch updates the ActiveStream so that it stores a copy of the current
separator and tracks changes to as they are transmitted through the checkpoint
via the separator changed SystemEvent.

Change-Id: Ie3ea87d006b0bbab3e0edd8895a4756c7c5d9fe8
Reviewed-on: http://review.couchbase.org/75502
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


Revision tags: v4.6.2_mc, v4.6.1_ep
# cc92fc76 02-Mar-2017 Jim Walker <jim@couchbase.com>

MB-16181: Interface additions and manifest logic for DCP

Replica vbuckets will learn of collections from their active peer.
Add new functions which allow for addition and deletion of col

MB-16181: Interface additions and manifest logic for DCP

Replica vbuckets will learn of collections from their active peer.
Add new functions which allow for addition and deletion of collections
with DCP in mind, that is addition/deletion with pre-assigned sequence
numbers.

The manifest test code is now updated to keep a replica manifest in-sync
using the data the active places in the checkpoint. A very loose DCP
simulation.

Change-Id: If7bd2dbbf16e66118bc0759f80b8b395a7370825
Reviewed-on: http://review.couchbase.org/73508
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# 0345ecab 10-Feb-2017 Jim Walker <jim@couchbase.com>

MB-16181: Collections warmup support

The VBucket manifest state is persisted to disk and is used in the
construction of VBucket's on the warmup path.

Includes a test which creat

MB-16181: Collections warmup support

The VBucket manifest state is persisted to disk and is used in the
construction of VBucket's on the warmup path.

Includes a test which creates collections then forces a warmup
and checks those collections are still valid.

Change-Id: I8e237a72d0571294e9a821dded9f61756cb13ac3
Reviewed-on: http://review.couchbase.org/73507
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# 10dad95b 01-Mar-2017 Jim Walker <jim@couchbase.com>

MB-16181: Enable separator modifications

Up until now the separator was fixed as the default value of "::".
This commit allows incoming manifests to change the separator if
allowed,

MB-16181: Enable separator modifications

Up until now the separator was fixed as the default value of "::".
This commit allows incoming manifests to change the separator if
allowed, as follows:

1. No open collections exist.
2. Only the default collection exists.

A separator can be changed by two manifest "types" (when the above
rules are met)

1. A manifest that has a new "separator" field
2. A manifest that has a new "separator" field and a new "collection"

In the first case a new/dedicated SystemEvent is required that ensures
a serialised copy of the manifest is flushed.

In the second case the CreateCollection event will also flush the
new separator.

Change-Id: I6b563c32882b4c45ed5a3858da834ef733e08abc
Reviewed-on: http://review.couchbase.org/74608
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


# d7615449 06-Feb-2017 Jim Walker <jim@couchbase.com>

MB-16181: Flusher integration with set/get support

This commit ties together collections code so that system events
and manifest updates are now applied to storage.

This commit

MB-16181: Flusher integration with set/get support

This commit ties together collections code so that system events
and manifest updates are now applied to storage.

This commit updates the threading model to ensure concurrent sets and
collection manifest changes are interlocked.

All keys read and written belong to the default collection and because
the $default collection is pre-allocated, get and set with this patch
are successful, even with the collection policing in place.

Test code can now make use of new VBucket methods so that the
collection state can be changed and we can write tests that drive
data into collections (and check the collections policing).

A new class, SystemEventFlush, captures the extra state a single
run of the flusher needs for the handling of SystemEvents (the writing
special documents and _local docs)

This commit enables set/get only to be collection aware - each
datapath in/out method will need similar "isValid" checks.

Change-Id: Ia6e6cb14d7e0fa2c418e0f52d9ab38ab36baf12d
Reviewed-on: http://review.couchbase.org/73125
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...


12