History log of /5.5.2/kv_engine/engines/ep/src/collections/vbucket_filter.h (Results 1 - 5 of 5)
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
# 12e87fb6 15-May-2018 Dave Rigby <daver@couchbase.com>

MB-29675: Optimize collections lookups when disabled

While collections code is present in Vulcan, it is not enabled in
production configurations - only the default collection is present.

MB-29675: Optimize collections lookups when disabled

While collections code is present in Vulcan, it is not enabled in
production configurations - only the default collection is present.

As such, optimize a number of functions which show up in 'linux perf'
profiles:

- Use std::string[] instead of string::at() do avoid the runtime size
check (and setup for throwing an exception) in StoredDocKey.

- Split Collections::VB::Filter::checkAndUpdate() into a hot and slow
path, and inline the hot path (This is called for every outgoing DCP
mutation).

- Add an explicit case for DefaultCollection in
Collections::DocKey::make() - this avoids an unnecessary call to
findCollection which otherwise needs to scan the document key.

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

show more ...


# f8ac377c 11-Dec-2017 Jim Walker <jim@couchbase.com>

MB-25240: Close DCP streams when all collections are removed

Ensure that a stream with an empty filter (because it has processed
deletes of all filtered collections) progresses to stream

MB-25240: Close DCP streams when all collections are removed

Ensure that a stream with an empty filter (because it has processed
deletes of all filtered collections) progresses to stream_end.

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

show more ...


Revision tags: v5.0.1, v5.1.0
# 513d8e79 19-Oct-2017 Jim Walker <jim@couchbase.com>

MB-24572: Stop Collection aware DCP from sending empty snapshots

If a DCP stream is configured with filtering enabled and the filter
results in 0 mutations, we still send snapshot marker

MB-24572: Stop Collection aware DCP from sending empty snapshots

If a DCP stream is configured with filtering enabled and the filter
results in 0 mutations, we still send snapshot markers to the client.

"Hey here's 500 to 510" ... silence

In a needle/haystack situation, the client looking for needles will
get frequent snapshot markers triggered by the mutations made against
the haystack, it is preferential that the needle client gets nothing
until the needle collection is touched.

To recap on snapshots - a DCP snapshot is "a series of commands that
is guaranteed to contain a unique set of keys.", it isn't necessarily
representative of a disk checkpoint (commit).

Prior to this commit we may then do the following:

checkpoint: 0 1 2 3 4
[a1, b1, a2, b2, b3]

some example snapshot possibilities {start, end, commands}

unfiltered:

{0, 0, a1}, {1, 1, b1}, {2, 2, a2}, {3, 3, b2}, {4, 4, b3}
{0, 1, a1,b1}, {2, 2, a2}, {3, 3, b2}, {4, 4, b3}
{0, 1, a1,b1}, {2, 2, a2}, {3, 4, b2,b3}

filtered-a:

{0, 0, a1}, {1, 1, }, {2, 2, a2}, {3, 3, a3}, {4, 4, }
{0, 1, a1}, {2, 2, a2}, {3, 3, a3}, {4, 4, }
{0, 1, a1}, {2, 2, a2}, {3, 4, a3}

As shown some of the possible filtered permutations DCP may send

1. We send empty snapshots, a marker with no commands
2. We send partial snapshots e.g. {3, 4, a3} tells the client about
an end of 4, but never sent command 4 (which unfiltered does). A
client may expect 4 to trigger something...

With this change, filtering is moved earlier in the stream flow, now
when we build the 'readyQueue' we apply filtering allowing the
existing empty checkpoint/snapshot logic to prevent an empty snapshot
being sent and ensures correct start/end seqnos.

The examples now...

filtered-a:

{0, 0, a1}, {2, 2, a2}, {3, 3, a3}
{0, 0, a1}, {2, 2, a2}, {3, 3, a3}
{0, 0, a1}, {2, 2, a2}, {3, 3, a3}

The update shows no empty snapshots and correct start/end.

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

show more ...


Revision tags: v5.0.0
# ef22f9b0 25-May-2017 Dave Rigby <daver@couchbase.com>

Move ep-engine to engines/ep


Revision tags: v4.6.2_ep
# 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 ...