Hello Kudu Jenkins, Andrew Wong, Adar Dembo, Grant Henke,

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/15540

to look at the new patch set (#2).

Change subject: [rpc] Add RPC feature flag for Bloom filter predicate
......................................................................

[rpc] Add RPC feature flag for Bloom filter predicate

If a newer C++ client communicates with an older tablet server
that doesn't implement Bloom filter predicate push-down
then the tablet server will simply drop the protobuf message.

This change adds a RPC feature that'll report unsupported
feature flag error if a newer client were to send
Bloom filter predicate to an older tablet server.

Thought about 2 options:
1) Add a new state using a counter in ScanSpec class that tracks
whether any of the "predicates_" is a Bloom filter predicate.
This state will need to be managed for addition, removal, merging of
predicates etc.
Pros: Efficient since it'll be a single check when sending RPC.
Cons: Need to maintain additional state.

2) Don't add new state and use the existing "predicates_"
map in ScanSpec class to determine whether any Bloom filter
predicates are being sent.
Pros: Doesn't require tracking any additional state.
Cons: Can be inefficient with large number of predicates.

With both options, check can be skipped for scan continuations
reducing perf impact of the check on both client and server.

Opted for option#2, since number of predicates on a table
are expected to be small(unless the table has large number of columns)
and doesn't require maintaining additional state.

Tests:
- In tablet_service.cc SupportsFeature() function commented out
BLOOM_FILTER_PREDICATE and verified unit tests failed
with unsupported feature flag 4 error log message.

Change-Id: I87c6bac1e9f77a9ea306ab00404e5101a0c583b9
---
M src/kudu/client/scanner-internal.cc
M src/kudu/common/scan_spec.cc
M src/kudu/common/scan_spec.h
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tserver.proto
5 files changed, 19 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/40/15540/2
--
To view, visit http://gerrit.cloudera.org:8080/15540
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I87c6bac1e9f77a9ea306ab00404e5101a0c583b9
Gerrit-Change-Number: 15540
Gerrit-PatchSet: 2
Gerrit-Owner: Bankim Bhavsar <[email protected]>
Gerrit-Reviewer: Adar Dembo <[email protected]>
Gerrit-Reviewer: Andrew Wong <[email protected]>
Gerrit-Reviewer: Bankim Bhavsar <[email protected]>
Gerrit-Reviewer: Grant Henke <[email protected]>
Gerrit-Reviewer: Kudu Jenkins (120)

Reply via email to