[kudu-CR] KUDU-1291. Efficiently support predicates on non-prefix key components

2018-08-16 Thread Anupama Gupta (Code Review)
Anupama Gupta has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/10983 )

Change subject: KUDU-1291. Efficiently support predicates on non-prefix key 
components
..


Patch Set 15:

(39 comments)

http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/cfile/cfile_reader.cc
File src/kudu/cfile/cfile_reader.cc:

http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/cfile/cfile_reader.cc@792
PS14, Line 792: // Currently this block holds encoded composite key.
  :   Arena arena(16*1024);
  :
  :   DCHECK(!prepared_blocks_.empty());
  :
> nit: As a general rule of thumb, if something is indicative of a programmer
Thanks for this pointer. I have removed the DCHECK() in this case.


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/cfile/cfile_reader.cc@797
PS14, Line 797: us
> nit: I know some of the older code has this reversed, but for new code, we
Done


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/cfile/cfile_reader.cc@871
PS14, Line 871:   last_prepare_idx_ = b->first_row_idx() + 
b->dblk_->GetCurrentIndex();
  :   last_prepare_count_ = 0;
  :
  :   p
> Not sure if this is necessary to avoid breaking encapsulation, as I think w
ACK.


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/cfile/cfile_reader.cc@871
PS14, Line 871:   last_prepare_idx_ = b->first_row_idx() + 
b->dblk_->GetCurrentIndex();
  :   last_prepare_count_ = 0;
  :
  :   p
> It's worth documenting in the header the side effect of `cache_seeked_value
If `cache_seeked_value` is true, then a call to StoreCurrentValue() will not 
seek an extra row. Instead, due to the side effect of using 
CopyNextValues(size_t *n, ColumnDataView *dst) the first value from the last 
prepared PK column block will be fetched into 'dst'.

I have now documented this in the header file.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/cfile/cfile_reader.cc
File src/kudu/cfile/cfile_reader.cc:

http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/cfile/cfile_reader.cc@790
PS15, Line 790: Todo
> nit: s/Todo/TODO/
Done


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/cfile/cfile_reader.cc@793
PS15, Line 793: 16*1024
> Why did we go from using a constant back to using a magic number? http://wi
Made this a member variable of CFileIterator as a followup of the review 
comment in cfile_set.cc (L553). After discussing with Alexey, we came to the 
conclusion that it is safe to initialize Arena with an initial buffer size of 
1M. If required, the Arena size grows wrt the data being allocated to it.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/cfile/cfile_reader.cc@795
PS15, Line 795:   DCHECK(!prepared_blocks_.empty());
  :   if (prepared_blocks_.empty()) {
  : return Status::NotFound("blocks not found");
  :   }
> This has a code smell. https://martinfowler.com/bliki/CodeSmell.html In deb
Yes it is possible. I have removed DCHECK and handled this condition by 
returning Status::NotFound.


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/common/encoded_key.cc
File src/kudu/common/encoded_key.cc:

http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/common/encoded_key.cc@92
PS14, Line 92:gscoped_ptr 
*key,
 :Arena* arena, int32_t 
num_columns
> Per the GSG (https://google.github.io/styleguide/cppguide.html):
Done


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.h
File src/kudu/tablet/cfile_set.h:

http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.h@175
PS15, Line 175: // Due to the caveat(see below) listed for 
SkipToNextScan(size_t *remaining),
  : // this class should not reference a separate "client" class 
that uses key_iter->cur_val.
> I find this part of the comment confusing and I think we should just remove
Done


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.h@248
PS15, Line 248: Caveat:
> I don't think we need to specifically call this out as a caveat
Done


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.h@249
PS15, Line 249: key_iter->cur_val_
> How about just key_iter_? Is that sufficient? Talking about a private membe
Ok. Makes sense. Changed this to just key->iter_.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.h@362
PS15, Line 362: skip_scan_num_seeks_cutoff
> missing underscore suffix on member variable
Done


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/tablet/cfile_set.h
File src/kudu/tablet/cfile_set.h:

PS14:
> nit: s/unique prefix/distinct prefix
Done


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/tablet/cfile_set.h@174
PS14, Line 174: //
  : // Due to the caveat(see below) listed for 
SkipToNextScan(size_t 

[kudu-CR] KUDU-1291. Efficiently support predicates on non-prefix key components

2018-08-16 Thread Anupama Gupta (Code Review)
Hello Tidy Bot, Mike Percy, Alexey Serbin, Kudu Jenkins, Andrew Wong,

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

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

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

Change subject: KUDU-1291. Efficiently support predicates on non-prefix key 
components
..

KUDU-1291. Efficiently support predicates on non-prefix key components

This patch implements index skip scan approach in the case when there
exists an equality predicate on any of the non-first
primary key columns.

This feature uses the following approach:
1. Seek at the first unique prefix key in the ad-hoc index tree.
2. Seek to the relevant entry corresponding to the unique prefix key
   found in 1. and the predicate value on the suffix key column.
3. To handle the case where multiple entries exist with respect to
   a unique prefix key, store the upper bound index of these entries.
4. Repeat steps 1-3, till all the unique prefix keys are scanned.

Change-Id: I230cd5a288e28ace796b352a603e0d1bcc1e4e0f
---
M src/kudu/cfile/cfile-test.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/common/encoded_key.cc
M src/kudu/common/encoded_key.h
M src/kudu/common/partial_row.h
M src/kudu/tablet/CMakeLists.txt
M src/kudu/tablet/cfile_set.cc
M src/kudu/tablet/cfile_set.h
A src/kudu/tablet/index_skipscan-test.cc
10 files changed, 1,261 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/83/10983/16
--
To view, visit http://gerrit.cloudera.org:8080/10983
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I230cd5a288e28ace796b352a603e0d1bcc1e4e0f
Gerrit-Change-Number: 10983
Gerrit-PatchSet: 16
Gerrit-Owner: Anupama Gupta 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Anupama Gupta 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Tidy Bot


[kudu-CR] Efficiently support predicates on non-prefix key components

2018-08-16 Thread Anupama Gupta (Code Review)
Hello Kudu Jenkins,

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

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

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

Change subject: Efficiently support predicates on non-prefix key components
..

Efficiently support predicates on non-prefix key components

This patch implements index skip scan approach in the case when there
exists an equality predicate on any of the non-first
primary key columns.

This feature uses the following approach:
1. Seek at the first unique prefix key in the ad-hoc index tree.
2. Seek to the relevant entry corresponding to the unique prefix key
   found in 1. and the predicate value on the suffix key column.
3. To handle the case where multiple entries exist with respect to
   a unique prefix key, store the upper bound index of these entries.
4. Repeat steps 1-3, till all the unique prefix keys are scanned.

Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
---
M src/kudu/cfile/cfile-test.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/common/encoded_key.cc
M src/kudu/common/encoded_key.h
M src/kudu/common/partial_row.h
M src/kudu/tablet/CMakeLists.txt
M src/kudu/tablet/cfile_set.cc
M src/kudu/tablet/cfile_set.h
A src/kudu/tablet/index_skipscan-test.cc
10 files changed, 1,261 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/52/11252/4
--
To view, visit http://gerrit.cloudera.org:8080/11252
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
Gerrit-Change-Number: 11252
Gerrit-PatchSet: 4
Gerrit-Owner: Anupama Gupta 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2469 pt 1: add an IOContext

2018-08-16 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11248 )

Change subject: KUDU-2469 pt 1: add an IOContext
..


Patch Set 1:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h
File src/kudu/fs/io_context.h:

http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@33
PS1, Line 33: // Utility class used to pass strings across many layers, 
avoiding excessive
: // plumbing.
> I'd considered going through hte iters, but there are a couple paths to CFi
I don't think plumbing into the constructor makes sense; wasn't one of the 
goals to avoid adding new members to CFileReader? Besides, the ownership model 
for those classes isn't always straight-forward: IIRC, CFileSet is shared 
ownership because a new instance is swapped into a DRS during a compaction. 
Further, I expect IOContext to eventually contain information about the 
initiator of the IO, in addition to "static" information like the tablet ID. 
You can imagine implementing interesting QoS or resource management strategies 
based on the initiator's allowance. You wouldn't be able to account for this 
stuff if an IOContext was bound to a CFileReader at constructor time.

However, you may be able to get away with plumbing an IOContext into the 
_iterator_ constructors. That means the IOContext can't change between scan 
chunks (thus no per-RPC state), but maybe that's good enough?

Having looked at the second patch, I have an additional concern with the 
current approach: the loose coupling between the IO "initiator" and the IO 
"performer" means it's really tough to tell if we're 100% covered on all 
necessary SCOPED_IO_CONTEXT calls. That loose coupling means we probably can't 
assert that every IO path actually has an IOContext set, which makes the code 
more complex.



--
To view, visit http://gerrit.cloudera.org:8080/11248
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I645e10a2fda1f2564326b7052e6a0debc5ad738c
Gerrit-Change-Number: 11248
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Fri, 17 Aug 2018 03:15:00 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2469 pt 1: add an IOContext

2018-08-16 Thread Andrew Wong (Code Review)
Andrew Wong has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11248 )

Change subject: KUDU-2469 pt 1: add an IOContext
..


Patch Set 1:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h
File src/kudu/fs/io_context.h:

http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@33
PS1, Line 33: // Utility class used to pass strings across many layers, 
avoiding excessive
: // plumbing.
> You're right it's a one-time cost, though I leaned this way since the inten
I'd considered going through hte iters, but there are a couple paths to CFiles 
that weren't covered just going through the scan path:

- We also want the context when we Open() the Tablet; we need to read the 
min/max keys to populate the rowset tree, and open blooms (lazily).
- Whenever we insert, we check if the row is present.

If we did want to plumb the IOContext _only_ where we might do IO, these cases 
would need to be covered too. OTOH, these other cases (and scans via the iters) 
roughly go through the same call chain:

 Tablet-->DiskRowSet-->CFileSet-->{BloomFileReader/CFileReader}
   `->DeltaTracker-->DeltaFileReader-->CFileReader

We could plumb down the IOContext through the constructors of these classes. 
Less in the spirit of plumbing only when we do IO, but that's not really a 
requirement.



--
To view, visit http://gerrit.cloudera.org:8080/11248
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I645e10a2fda1f2564326b7052e6a0debc5ad738c
Gerrit-Change-Number: 11248
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Fri, 17 Aug 2018 01:30:19 +
Gerrit-HasComments: Yes


[kudu-CR] Efficiently support predicates on non-prefix key components

2018-08-16 Thread Anupama Gupta (Code Review)
Hello Kudu Jenkins,

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

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

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

Change subject: Efficiently support predicates on non-prefix key components
..

Efficiently support predicates on non-prefix key components

This patch implements index skip scan approach in the case when there
exists an equality predicate on any of the non-first
primary key columns.

This feature uses the following approach:
1. Seek at the first unique prefix key in the ad-hoc index tree.
2. Seek to the relevant entry corresponding to the unique prefix key
   found in 1. and the predicate value on the suffix key column.
3. To handle the case where multiple entries exist with respect to
   a unique prefix key, store the upper bound index of these entries.
4. Repeat steps 1-3, till all the unique prefix keys are scanned.

Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
---
M src/kudu/cfile/cfile-test.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/common/encoded_key.cc
M src/kudu/common/encoded_key.h
M src/kudu/common/partial_row.h
M src/kudu/tablet/CMakeLists.txt
M src/kudu/tablet/cfile_set.cc
M src/kudu/tablet/cfile_set.h
A src/kudu/tablet/index_skipscan-test.cc
10 files changed, 1,256 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/52/11252/3
--
To view, visit http://gerrit.cloudera.org:8080/11252
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
Gerrit-Change-Number: 11252
Gerrit-PatchSet: 3
Gerrit-Owner: Anupama Gupta 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] Efficiently support predicates on non-prefix key components

2018-08-16 Thread Anupama Gupta (Code Review)
Hello Kudu Jenkins,

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

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

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

Change subject: Efficiently support predicates on non-prefix key components
..

Efficiently support predicates on non-prefix key components

This patch implements index skip scan approach in the case when there
exists an equality predicate on any of the non-first
primary key columns.

This feature uses the following approach:
1. Seek at the first unique prefix key in the ad-hoc index tree.
2. Seek to the relevant entry corresponding to the unique prefix key
   found in 1. and the predicate value on the suffix key column.
3. To handle the case where multiple entries exist with respect to
   a unique prefix key, store the upper bound index of these entries.
4. Repeat steps 1-3, till all the unique prefix keys are scanned.

Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
---
M src/kudu/cfile/cfile-test.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/common/encoded_key.cc
M src/kudu/common/encoded_key.h
M src/kudu/common/partial_row.h
M src/kudu/tablet/CMakeLists.txt
M src/kudu/tablet/cfile_set.cc
M src/kudu/tablet/cfile_set.h
A src/kudu/tablet/index_skipscan-test.cc
10 files changed, 1,256 insertions(+), 30 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
Gerrit-Change-Number: 11252
Gerrit-PatchSet: 2
Gerrit-Owner: Anupama Gupta 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] Efficiently support predicates on non-prefix key components

2018-08-16 Thread Anupama Gupta (Code Review)
Anupama Gupta has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/11252


Change subject: Efficiently support predicates on non-prefix key components
..

Efficiently support predicates on non-prefix key components

This patch implements index skip scan approach in the case when there
exists an equality predicate on any of the non-first
primary key columns.

This feature uses the following approach:
1. Seek at the first unique prefix key in the ad-hoc index tree.
2. Seek to the relevant entry corresponding to the unique prefix key
   found in 1. and the predicate value on the suffix key column.
3. To handle the case where multiple entries exist with respect to
   a unique prefix key, store the upper bound index of these entries.
4. Repeat steps 1-3, till all the unique prefix keys are scanned.

Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
---
M src/kudu/cfile/cfile-test.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/common/encoded_key.cc
M src/kudu/common/encoded_key.h
M src/kudu/common/partial_row.h
M src/kudu/tablet/CMakeLists.txt
M src/kudu/tablet/cfile_set.cc
M src/kudu/tablet/cfile_set.h
A src/kudu/tablet/index_skipscan-test.cc
10 files changed, 1,248 insertions(+), 30 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/52/11252/1
--
To view, visit http://gerrit.cloudera.org:8080/11252
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: If9f5a4f2e9da39211d645b4d6d163ecdf919e5d2
Gerrit-Change-Number: 11252
Gerrit-PatchSet: 1
Gerrit-Owner: Anupama Gupta 


[kudu-CR] [WIP] KUDU-2245 Graceful leadership transfer

2018-08-16 Thread Will Berkeley (Code Review)
Will Berkeley has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/11251


Change subject: [WIP] KUDU-2245 Graceful leadership transfer
..

[WIP] KUDU-2245 Graceful leadership transfer

I will write more here.
Need to dist-test loop the patch.
Expect update soon.

Change-Id: Ic97343af9eb349556424c999799ed5e2941f0083
---
M src/kudu/consensus/consensus-test-util.h
M src/kudu/consensus/consensus.proto
M src/kudu/consensus/consensus_peers.cc
M src/kudu/consensus/consensus_peers.h
M src/kudu/consensus/consensus_queue.cc
M src/kudu/consensus/consensus_queue.h
M src/kudu/consensus/peer_manager.cc
M src/kudu/consensus/peer_manager.h
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/tools/kudu-admin-test.cc
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool_action_tablet.cc
M src/kudu/tools/tool_replica_util.cc
M src/kudu/tools/tool_replica_util.h
M src/kudu/tserver/tablet_service.cc
16 files changed, 531 insertions(+), 41 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/51/11251/1
--
To view, visit http://gerrit.cloudera.org:8080/11251
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic97343af9eb349556424c999799ed5e2941f0083
Gerrit-Change-Number: 11251
Gerrit-PatchSet: 1
Gerrit-Owner: Will Berkeley 


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 5:

> Patch Set 5:
>
> I don't have a strong preference. I think if you put it in the footer having 
> it on every page is nice.

we can also show it on the top next to the Kudu logo on the rest of the pages 
though


--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 5
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Mitch Barnett
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 22:31:51 +
Gerrit-HasComments: No


[kudu-CR] [master] replica selection honors placement policy

2018-08-16 Thread Will Berkeley (Code Review)
Will Berkeley has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11207 )

Change subject: [master] replica selection honors placement policy
..


Patch Set 3:

(3 comments)

http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc
File src/kudu/master/placement_policy.cc:

http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@254
PS3, Line 254: avalailable
available


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@256
PS3, Line 256: table
tablet


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@264
PS3, Line 264: break;
This loop combo is a little tricky. It took me a bit of thinking to see why we 
couldn't get stuck here. Could you add a comment about why we break / return at 
each point (except the one at L270 that's obvious) so it's clearer why we won't 
get stuck?



--
To view, visit http://gerrit.cloudera.org:8080/11207
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I4169098abf17d5591d4c1675561afc15b5477fcd
Gerrit-Change-Number: 11207
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Will Berkeley 
Gerrit-Comment-Date: Thu, 16 Aug 2018 21:19:59 +
Gerrit-HasComments: Yes


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Grant Henke (Code Review)
Grant Henke has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 5:

I don't have a strong preference. I think if you put it in the footer having it 
on every page is nice.


--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 5
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Mitch Barnett
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 21:10:18 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2469 pt 1: add an IOContext

2018-08-16 Thread Andrew Wong (Code Review)
Andrew Wong has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11248 )

Change subject: KUDU-2469 pt 1: add an IOContext
..


Patch Set 1:

(5 comments)

http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h
File src/kudu/fs/io_context.h:

http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@33
PS1, Line 33: // Utility class used to pass strings across many layers, 
avoiding excessive
: // plumbing.
> Ugh, why do we need to store IOContext in a threadlocal? Is the plumbing in
You're right it's a one-time cost, though I leaned this way since the intended 
immediate use of the IOContext is error handling. It felt like overkill to 
explicitly plumb down things specifically for that. Though you raise a good 
point that the IOContext may in the future be used for more substantial things.


http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@39
PS1, Line 39: there is significantly less visibility into
: // the string being passed.
> Not sure I understand this. For one, the intention of the IOContext abstrac
Right, it should be generalizable to anything, not just strings.

It's less visible in that any arbitrary thread could call CurrentIOContext() 
and hope it gets something useful back. With the plumbing alternative, it's 
more obvious when something _should_ have an IOContext.


http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@42
PS1, Line 42: class IOContext : public RefCountedThreadSafe {
> Please doc why IOContext needs to have shared ownership.
Ack


http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@51
PS1, Line 51:   void set_tablet_id(std::string tablet_id) {
: tablet_id_ = std::move(tablet_id);
:   }
> Why do we need the ability to manipulate tablet_id_ via both setter and con
We don't, will remove.


http://gerrit.cloudera.org:8080/#/c/11248/1/src/kudu/fs/io_context.h@89
PS1, Line 89: IOContext::threadlocal_io_context_ = old_context_;
> Is this "nesting" feature required? Under what circumstances does a thread
It's not required, but I added it to match the "scoped" semantics we have 
elsewhere. An alternative would be to disallow such preemption, perhaps with a 
DCHECK or somesuch.



--
To view, visit http://gerrit.cloudera.org:8080/11248
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I645e10a2fda1f2564326b7052e6a0debc5ad738c
Gerrit-Change-Number: 11248
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 21:00:36 +
Gerrit-HasComments: Yes


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 5:

> Patch Set 5:
>
> yea, either bottom or top are preferable in my book but no strong feelings.

Grant, do you prefer top or bottom? Also, if we do top, should it still be 
there on non-index pages next to the Kudu logo or should the Kudu logo replace 
it?


--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 5
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Mitch Barnett
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 20:35:25 +
Gerrit-HasComments: No


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Todd Lipcon (Code Review)
Todd Lipcon has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 5:

yea, either bottom or top are preferable in my book but no strong feelings.


--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 5
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Mitch Barnett
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 19:02:06 +
Gerrit-HasComments: No


[kudu-CR] WIP KUDU-2469 pt 2: fail replicas on CFile corruption

2018-08-16 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11249 )

Change subject: WIP KUDU-2469 pt 2: fail replicas on CFile corruption
..


Patch Set 2:

(3 comments)

http://gerrit.cloudera.org:8080/#/c/11249/2//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/11249/2//COMMIT_MSG@18
PS2, Line 18:
: I opted to add a new CFILE ErrorHandlerType enum rather than 
using the
: TABLET enum (which is currently a no-op and serves to serialize 
certain
: failures, see error_manager.h for more), as using the TABLET enum 
would
: change the existing error handling behavior of certain errors.
I read through the comment in error_manager.h but still don't understand why we 
can't reuse TABLET for these errors. I don't remember the details of our 
initial discussion on error serialization, unfortunately.


http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/cfile/cfile_reader.cc
File src/kudu/cfile/cfile_reader.cc:

http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/cfile/cfile_reader.cc@348
PS2, Line 348:   if (ctx && !ctx->tablet_id().empty()) {
Can we assert that this exists?


http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/fs/error_manager.h
File src/kudu/fs/error_manager.h:

http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/fs/error_manager.h@103
PS2, Line 103: saftey
safety



--
To view, visit http://gerrit.cloudera.org:8080/11249
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I63d541443bc68c83fd0ca6d51315143fee04d50f
Gerrit-Change-Number: 11249
Gerrit-PatchSet: 2
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 16 Aug 2018 18:40:02 +
Gerrit-HasComments: Yes


[kudu-CR] WIP KUDU-2469 pt 2: fail replicas on CFile corruption

2018-08-16 Thread Grant Henke (Code Review)
Grant Henke has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11249 )

Change subject: WIP KUDU-2469 pt 2: fail replicas on CFile corruption
..


Patch Set 2:

(3 comments)

http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/cfile/cfile_reader.cc
File src/kudu/cfile/cfile_reader.cc:

http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/cfile/cfile_reader.cc@81
PS2, Line 81: DEFINE_double(cfile_inject_corruption, 0,
One of the reasons I didn't do this while writing the checksum code  was due to 
all the locations it would need to be called/used. Instead I wrote a test that 
manually corrupts each bit. See cfile-test.cc CorruptAndReadBlock.

Not saying you can't do this, it's just another option.


http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/cfile/cfile_reader.cc@227
PS2, Line 227:   if (s.IsCorruption()) {
Should we use a macro for this pattern? Something similar to the 
HANDLE_DISK_FAILURE macro?


http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/fs/error_manager.h
File src/kudu/fs/error_manager.h:

http://gerrit.cloudera.org:8080/#/c/11249/2/src/kudu/fs/error_manager.h@76
PS2, Line 76:   CFILE,
Do we need a new handler type? Or is TABLET good enough to re-use?

Is there a different action we would take because it's CFILE and not TABLET?



--
To view, visit http://gerrit.cloudera.org:8080/11249
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I63d541443bc68c83fd0ca6d51315143fee04d50f
Gerrit-Change-Number: 11249
Gerrit-PatchSet: 2
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 16 Aug 2018 17:30:09 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2469 pt 1: add an IOContext

2018-08-16 Thread Andrew Wong (Code Review)
Andrew Wong has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11248 )

Change subject: KUDU-2469 pt 1: add an IOContext
..


Patch Set 1:

NOTE: the implementation is very much inspired by util/trace.h


--
To view, visit http://gerrit.cloudera.org:8080/11248
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I645e10a2fda1f2564326b7052e6a0debc5ad738c
Gerrit-Change-Number: 11248
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 16 Aug 2018 17:09:41 +
Gerrit-HasComments: No


[kudu-CR] WIP KUDU-2469 pt 2: fail replicas on CFile corruption

2018-08-16 Thread Andrew Wong (Code Review)
Hello Kudu Jenkins,

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

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

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

Change subject: WIP KUDU-2469 pt 2: fail replicas on CFile corruption
..

WIP KUDU-2469 pt 2: fail replicas on CFile corruption

wip: add tests

This patch adds handling for CFile corruption errors via the error
manager, pulling the tablet id of interest with the SCOPED_IO_CONTEXT.

The tablet id is plumbed down at various points that may incur CFile IO:
- when performing any maintenance op
- when opening the tablet to open the keys
- when beginning a scan

I opted to add a new CFILE ErrorHandlerType enum rather than using the
TABLET enum (which is currently a no-op and serves to serialize certain
failures, see error_manager.h for more), as using the TABLET enum would
change the existing error handling behavior of certain errors.

Change-Id: I63d541443bc68c83fd0ca6d51315143fee04d50f
---
M src/kudu/cfile/bloomfile.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/fs/error_manager.cc
M src/kudu/fs/error_manager.h
M src/kudu/tablet/tablet.cc
M src/kudu/tablet/tablet_mm_ops.cc
M src/kudu/tablet/tablet_replica_mm_ops.cc
M src/kudu/tserver/tablet_server.cc
M src/kudu/tserver/tablet_service.cc
10 files changed, 125 insertions(+), 28 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I63d541443bc68c83fd0ca6d51315143fee04d50f
Gerrit-Change-Number: 11249
Gerrit-PatchSet: 2
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] WIP KUDU-2469 pt 2: fail replicas on CFile corruption

2018-08-16 Thread Andrew Wong (Code Review)
Andrew Wong has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/11249


Change subject: WIP KUDU-2469 pt 2: fail replicas on CFile corruption
..

WIP KUDU-2469 pt 2: fail replicas on CFile corruption

wip: add tests

This patch adds handling for CFile corruption errors via the error
manager, pulling the tablet id of interest with the SCOPED_IO_CONTEXT.

The tablet id is plumbed down at various points that may incur CFile IO:
- when performing any maintenance op
- when opening the tablet to open the keys
- when beginning a scan

I opted to add a new CFILE ErrorHandlerType enum rather than using the
TABLET enum (which is currently a no-op and serves to serialize certain
failures, see error_manager.h for more), as updating the TABLET error
handling behavior would change the existing error handling behavior.

Change-Id: I63d541443bc68c83fd0ca6d51315143fee04d50f
---
M src/kudu/cfile/bloomfile.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/cfile/cfile_reader.h
M src/kudu/fs/error_manager.cc
M src/kudu/fs/error_manager.h
M src/kudu/tablet/tablet.cc
M src/kudu/tablet/tablet_mm_ops.cc
M src/kudu/tablet/tablet_replica_mm_ops.cc
M src/kudu/tserver/tablet_server.cc
M src/kudu/tserver/tablet_service.cc
10 files changed, 125 insertions(+), 28 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/49/11249/1
--
To view, visit http://gerrit.cloudera.org:8080/11249
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I63d541443bc68c83fd0ca6d51315143fee04d50f
Gerrit-Change-Number: 11249
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 


[kudu-CR] KUDU-2469 pt 1: add an IOContext

2018-08-16 Thread Andrew Wong (Code Review)
Andrew Wong has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/11248


Change subject: KUDU-2469 pt 1: add an IOContext
..

KUDU-2469 pt 1: add an IOContext

This patch introduces the IOContext class that can be used to pass
strings across layers without excessive plumbing. The goal is to use
this to plumb tablet ids from the tablet/tserver layers down to the
CFile layer so they can be used for error handling, e.g. by calling a
callback that fails the tablet in the event of a CFile corruption.

Change-Id: I645e10a2fda1f2564326b7052e6a0debc5ad738c
---
M src/kudu/fs/CMakeLists.txt
A src/kudu/fs/io_context-test.cc
A src/kudu/fs/io_context.cc
A src/kudu/fs/io_context.h
4 files changed, 210 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/48/11248/1
--
To view, visit http://gerrit.cloudera.org:8080/11248
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I645e10a2fda1f2564326b7052e6a0debc5ad738c
Gerrit-Change-Number: 11248
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Anonymous Coward (Code Review)
Anonymous Coward #425 has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 5:

> Patch Set 5:
>
> (1 comment)

Any of those 3 look fine to me - think top may be best.


--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 5
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Anonymous Coward #425
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 16:24:54 +
Gerrit-HasComments: No


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 5:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/11211/4/index.html
File index.html:

http://gerrit.cloudera.org:8080/#/c/11211/4/index.html@21
PS4, Line 21:   https://www.apache.org/events/current-event.html;>https://www.apache.org/events/current-event-234x60.png"/>
> That's second one isn't bad. What about right aligned in the footer?
That also looks good. 
http://people.apache.org/~abukor/kudusite_apachecon_bottom.png



--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 5
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 14:07:22 +
Gerrit-HasComments: Yes


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Grant Henke (Code Review)
Grant Henke has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/11211/4/index.html
File index.html:

http://gerrit.cloudera.org:8080/#/c/11211/4/index.html@21
PS4, Line 21:   https://www.apache.org/events/current-event.html;>https://www.apache.org/events/current-event-234x60.png"/>
> Yeah it's right there next to them. I wasn't sure where to put it, and it w
That's second one isn't bad. What about right aligned in the footer?



--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 4
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 13:36:14 +
Gerrit-HasComments: Yes


[kudu-CR] Implement BloomFilter Predicate in server side.

2018-08-16 Thread ZhangYao (Code Review)
ZhangYao has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11100 )

Change subject: Implement BloomFilter Predicate in server side.
..


Patch Set 5:

(4 comments)

http://gerrit.cloudera.org:8080/#/c/11100/4/src/kudu/common/column_predicate.h
File src/kudu/common/column_predicate.h:

http://gerrit.cloudera.org:8080/#/c/11100/4/src/kudu/common/column_predicate.h@286
PS4, Line 286:   }
> Add a space above.  Is the comment correct, what's 'nhash'?
Done


http://gerrit.cloudera.org:8080/#/c/11100/4/src/kudu/common/column_predicate.cc
File src/kudu/common/column_predicate.cc:

http://gerrit.cloudera.org:8080/#/c/11100/4/src/kudu/common/column_predicate.cc@42
PS4, Line 42:
> (meta-comment) If I understand the changes to this file correctly, Range pr
True. I think your advice is very reasonable and I change the relevant code.


http://gerrit.cloudera.org:8080/#/c/11100/4/src/kudu/common/column_predicate.cc@460
PS4, Line 460: default: {
> Simplify with std::copy_if or something equivalent.
Done


http://gerrit.cloudera.org:8080/#/c/11100/4/src/kudu/common/column_predicate.cc@563
PS4, Line 563:
> likewise
Done



--
To view, visit http://gerrit.cloudera.org:8080/11100
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I62c2de42667d0255d94e19db773240f7f9ee636c
Gerrit-Change-Number: 11100
Gerrit-PatchSet: 5
Gerrit-Owner: ZhangYao 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: ZhangYao 
Gerrit-Comment-Date: Thu, 16 Aug 2018 09:35:11 +
Gerrit-HasComments: Yes


[kudu-CR] Implement BloomFilter Predicate in server side.

2018-08-16 Thread ZhangYao (Code Review)
Hello Tidy Bot, Dan Burkert, Kudu Jenkins, Andrew Wong, Todd Lipcon,

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

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

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

Change subject: Implement BloomFilter Predicate in server side.
..

Implement BloomFilter Predicate in server side.

Change-Id: I62c2de42667d0255d94e19db773240f7f9ee636c
---
M src/kudu/common/column_predicate-test.cc
M src/kudu/common/column_predicate.cc
M src/kudu/common/column_predicate.h
M src/kudu/common/common.proto
M src/kudu/common/key_util.cc
M src/kudu/common/scan_spec.cc
M src/kudu/common/wire_protocol-test.cc
M src/kudu/common/wire_protocol.cc
M src/kudu/tablet/cfile_set-test.cc
9 files changed, 1,062 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/00/11100/5
--
To view, visit http://gerrit.cloudera.org:8080/11100
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I62c2de42667d0255d94e19db773240f7f9ee636c
Gerrit-Change-Number: 11100
Gerrit-PatchSet: 5
Gerrit-Owner: ZhangYao 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: ZhangYao 


[kudu-CR] [docs] KUDU-1951 Fix links in docs

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has removed a vote on this change.

Change subject: [docs] KUDU-1951 Fix links in docs
..


Removed Verified-1 by Kudu Jenkins (120)
--
To view, visit http://gerrit.cloudera.org:8080/11239
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: deleteVote
Gerrit-Change-Id: I2c498c8a7f9d957a737c12c08d1b313df3d68007
Gerrit-Change-Number: 11239
Gerrit-PatchSet: 3
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] [docs] KUDU-1951 Fix links in docs

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11239 )

Change subject: [docs] KUDU-1951 Fix links in docs
..


Patch Set 3: Verified+1


--
To view, visit http://gerrit.cloudera.org:8080/11239
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I2c498c8a7f9d957a737c12c08d1b313df3d68007
Gerrit-Change-Number: 11239
Gerrit-PatchSet: 3
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 08:10:59 +
Gerrit-HasComments: No


[kudu-CR](gh-pages) [site] add links required by ASF

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11209 )

Change subject: [site] add links required by ASF
..


Patch Set 6:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/11209/5/_includes/bottom_common.html
File _includes/bottom_common.html:

http://gerrit.cloudera.org:8080/#/c/11209/5/_includes/bottom_common.html@6
PS5, Line 6: Apache Kudu, Kudu, Apache, the Apache feather logo, and 
the Apache Kudu
> nit: please wrap if possible
Done


http://gerrit.cloudera.org:8080/#/c/11209/4/community.md
File community.md:

http://gerrit.cloudera.org:8080/#/c/11209/4/community.md@53
PS4, Line 53: * [**Apache Kudu Committers list**](/committers.html)
> We were using that before so that these links work even on non-top-level gi
I think you mean http://apache.github.io/kudu/

Looking at the current community.html, it seems Jekyll is smart enough to 
handle this properly:

$ curl http://apache.github.io/kudu/community.html 2>/dev/null | grep "coding 
guidelines"
the project coding 
guidelines are before

In L95 you can see the source for this link looks like this: [coding 
guidelines](docs/contributing.html#_code_style)



--
To view, visit http://gerrit.cloudera.org:8080/11209
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia6983314e598eff73ac8f476924acd9d6f62196f
Gerrit-Change-Number: 11209
Gerrit-PatchSet: 6
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 08:10:40 +
Gerrit-HasComments: Yes


[kudu-CR](gh-pages) [site] add links required by ASF

2018-08-16 Thread Attila Bukor (Code Review)
Hello Mike Percy, Grant Henke, Todd Lipcon,

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

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

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

Change subject: [site] add links required by ASF
..

[site] add links required by ASF

ASF requires the following links to be included in the navigation
system[1]:

---
* "License" should link to: http://www.apache.org/licenses/

* "Sponsorship" or "Donate" should link to:
http://www.apache.org/foundation/sponsorship.html

* "Thanks" should link to: http://www.apache.org/foundation/thanks.html

* "Security" should link to either to a project-specific page detailing
how users may securely report potential vulnerabilities, or to the main
http://www.apache.org/security/ page

* All projects must feature some prominent link back to the main ASF
homepage at http://www.apache.org/
---

It also requires a trademark notice[2].

This commit adds all of these.

[1] https://www.apache.org/foundation/marks/pmcs#navigation
[2] https://www.apache.org/foundation/marks/pmcs#attributions

Change-Id: Ia6983314e598eff73ac8f476924acd9d6f62196f
---
M _includes/bottom_common.html
M _includes/top_common.html
M community.md
M index.html
4 files changed, 17 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/09/11209/6
--
To view, visit http://gerrit.cloudera.org:8080/11209
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia6983314e598eff73ac8f476924acd9d6f62196f
Gerrit-Change-Number: 11209
Gerrit-PatchSet: 6
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-1291. Efficiently support predicates on non-prefix key components

2018-08-16 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/10983 )

Change subject: KUDU-1291. Efficiently support predicates on non-prefix key 
components
..


Patch Set 14:

(3 comments)

http://gerrit.cloudera.org:8080/#/c/10983/12/src/kudu/tablet/cfile_set.cc
File src/kudu/tablet/cfile_set.cc:

http://gerrit.cloudera.org:8080/#/c/10983/12/src/kudu/tablet/cfile_set.cc@551
PS12, Line 551: atus CFileSet::Iterator::SeekToNextPrefixKey(size_t 
num_prefix_cols, bool cache_seeked_value) {
  :   gscoped_ptr enc_key;
  :   Arena arena(kEncodedCompositeKeyMaxSize);
> Might be helpful: from util/memory/arena.h and the definition of Reset():
+1

Using dedicated Arena per iterator instance sounds good to me.  It seems we can 
easily reset it in the long loop of the SkipToNextScan() method.


http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/tablet/cfile_set.cc
File src/kudu/tablet/cfile_set.cc:

http://gerrit.cloudera.org:8080/#/c/10983/14/src/kudu/tablet/cfile_set.cc@770
PS14, Line 770: Check to see whether we have effectively seeked backwards
> We effectively have two pointers we are tracking with skip-scan: the primar
Adding a comment would definitely help.  That might be a comment for the 
method, as well as an extra for already existing high-level description of the 
algorithm at line 656.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc
File src/kudu/tablet/cfile_set.cc:

http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@557
PS15, Line 557: // columns of the cached value obtained after
> I think it's possible to pass an instance of arena from the upper level to
And the best approach I think is suggested by Andrew -- have an instance of 
Arena as a member of CFileSet::Iterator.  Probably, it's necessary to reset it 
after use in every cycle of the loop in SkipToNextScan() method.



--
To view, visit http://gerrit.cloudera.org:8080/10983
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I230cd5a288e28ace796b352a603e0d1bcc1e4e0f
Gerrit-Change-Number: 10983
Gerrit-PatchSet: 14
Gerrit-Owner: Anupama Gupta 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Anupama Gupta 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Thu, 16 Aug 2018 07:24:09 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-1291. Efficiently support predicates on non-prefix key components

2018-08-16 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/10983 )

Change subject: KUDU-1291. Efficiently support predicates on non-prefix key 
components
..


Patch Set 15:

(9 comments)

http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc
File src/kudu/tablet/cfile_set.cc:

http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@557
PS15, Line 557: Arena arena(FLAGS_max_encoded_key_size_bytes);
I think it's possible to pass an instance of arena from the upper level to use 
it here, like it's done in DecodeCurrentKey().

BTW, that parameter for the Arena constructor -- it's just initial size for the 
arena, it can grow bigger up to the allowed max size (by default 127 * 8KB, 
i.e. almost 1 MB).  However, setting it up to FLAGS_max_encoded_key_size_bytes 
is a good enough (arena grows 2x times when needed).


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@571
PS15, Line 571: (
nit: this and the pairing brace are not needed.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@597
PS15, Line 597: KuduPartialRow *p_row,
  : const gscoped_ptr& cur_enc_key
style nit: usually we have input parameter specified first, then go output 
parameters.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@603
PS15, Line 603: auto const 
style nit: const auto& value


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@606
PS15, Line 606: p_row->Set(col_id, data);
What if this returns non-OK?


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@611
PS15, Line 611: p_row->Set(skip_scan_predicate_column_id_, suffix_col_value);
ditto


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@619
PS15, Line 619: (
nit: this and the closing parenthesis are not needed


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@742
PS15, Line 742: CheckPredicateMatch(lower_bound_key);
I'm not sure this is what is needed: CheckPredicateMatch() verifies that only 
the first column of the predicate matches, but we want all columns of the 
predicate to match, no?  If it's what we actually need, maybe add a comment 
that the lower  bound key is just about the match of the first column of the 
predicate.


http://gerrit.cloudera.org:8080/#/c/10983/15/src/kudu/tablet/cfile_set.cc@811
PS15, Line 811: ERROR
I think this should be WARNING, because there are some legit cases where 
SkipToNextScan() can return non-OK.  E.g.:

E0815 21:19:24.748093  1681 cfile_set.cc:811] Skip scan failed: Illegal state: 
No lexicographically greater key exists



--
To view, visit http://gerrit.cloudera.org:8080/10983
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I230cd5a288e28ace796b352a603e0d1bcc1e4e0f
Gerrit-Change-Number: 10983
Gerrit-PatchSet: 15
Gerrit-Owner: Anupama Gupta 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Anupama Gupta 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Thu, 16 Aug 2018 06:49:03 +
Gerrit-HasComments: Yes


[kudu-CR](gh-pages) [site] Add current Apache event

2018-08-16 Thread Attila Bukor (Code Review)
Attila Bukor has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11211 )

Change subject: [site] Add current Apache event
..


Patch Set 4:

(1 comment)

> Patch Set 4:
>
> (1 comment)

http://gerrit.cloudera.org:8080/#/c/11211/4/index.html
File index.html:

http://gerrit.cloudera.org:8080/#/c/11211/4/index.html@21
PS4, Line 21:   https://www.apache.org/events/current-event.html;>https://www.apache.org/events/current-event-234x60.png"/>
> mind posting a screenshot? It seems like this is going to be front-and-cent
Yeah it's right there next to them. I wasn't sure where to put it, and it was 
incidentally the same height as the buttons, so my colleague suggested to put 
it there. http://people.apache.org/~abukor/kudusite_apachecon.png

Any suggestions where to put it? I originally put it under the fast analytics 
column but it kinda felt weird there too.

My wife just suggested putting it at the top before the navbar, what do you 
think? http://people.apache.org/~abukor/kudusite_apachecon_top.png



--
To view, visit http://gerrit.cloudera.org:8080/11211
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: gh-pages
Gerrit-MessageType: comment
Gerrit-Change-Id: I945ad0432773d748bd21c21a7c55e5efca70b429
Gerrit-Change-Number: 11211
Gerrit-PatchSet: 4
Gerrit-Owner: Attila Bukor 
Gerrit-Reviewer: Attila Bukor 
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Thu, 16 Aug 2018 06:08:23 +
Gerrit-HasComments: Yes


[kudu-CR] [master] replica selection honors placement policy

2018-08-16 Thread Will Berkeley (Code Review)
Will Berkeley has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/11207 )

Change subject: [master] replica selection honors placement policy
..


Patch Set 3:

(29 comments)

Looks pretty good. I didn't get to review all of the test cases yet but I 
wanted to post some feedback since it's taken me a while to start reviewing 
this. Sorry about that.

http://gerrit.cloudera.org:8080/#/c/11207/3//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/11207/3//COMMIT_MSG@7
PS3, Line 7: [master]
nit: Consider making the label [location_awareness] to be consistent with this 
patch's parent.


http://gerrit.cloudera.org:8080/#/c/11207/3//COMMIT_MSG@9
PS3, Line 9: placement policy
Would you mind adding another sentence explaining the single policy that is 
implemented? Just enough to cover that it is meant to be location aware and to 
spread replicas evenly over tablet servers. You can refer people to the design 
doc for the details.


http://gerrit.cloudera.org:8080/#/c/11207/3//COMMIT_MSG@10
PS3, Line 10:
nit: One space.


http://gerrit.cloudera.org:8080/#/c/11207/3//COMMIT_MSG@13
PS3, Line 13: Added
nit: This patch also adds a few...


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/catalog_manager.h
File src/kudu/master/catalog_manager.h:

http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/catalog_manager.h@524
PS3, Line 524: std::string, int
Please add a short comment explaining what the key and value types are.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/catalog_manager.h@880
PS3, Line 880: online
nit: I think the standard term in "live".


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/catalog_manager.h@880
PS3, Line 880: grouped by location
 :   // (as specified by 'ltd')
What is 'ltd'? Looks like this comment is stale.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/catalog_manager.h@887
PS3, Line 887: PlacementPolicy*
nit: Naively I expected this to be a cref because something called a 
PlacementPolicy would have no state. If the state necessary to do placements 
will live in the PlacementPolicy class, I vote for a slightly different name. 
Perhaps a PlacementAlgorithm?


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h
File src/kudu/master/placement_policy.h:

http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@39
PS3, Line 39: at proper tablet servers
on tablet servers according to some rules.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@39
PS3, Line 39: placing
place


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@40
PS3, Line 40: class PlacementPolicy {
Please add another sentence with a brief description of the specific policy. I 
also think it'd be a good idea to add one more sentence stating that this class 
implements a specific placement policy but it could eventually be a base class 
for subclasses that implement other placement policies.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@49
PS3, Line 49: destructed
"destroyed", or say that 'rng' must outlive of the PlacementPolicy.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@82
PS3, Line 82:   // TODO (aserbin): add the reference to the document once it's 
in the repo
nit: End with .


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@100
PS3, Line 100: is
Remove extra word.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.h@108
PS3, Line 108: : it's in constructor and cached
I think if we make this member const it enforces these two things.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc
File src/kudu/master/placement_policy.cc:

http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@51
PS3, Line 51:
the


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@51
PS3, Line 51:
a


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@51
PS3, Line 51: repilcas
replicas


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@52
PS3, Line 52: of
Remove extra 'of'.


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@55
PS3, Line 55: unordered_map
Is this a ReplicaLocationsInfo type?


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@57
PS3, Line 57: DCHECK(it != ltd.end());
:   if (it == ltd.end()) {
: return numeric_limits::max();
:   }
Is there a reason we shouldn't always crash if we break the invariant that 
'location' must be a key present in 'locations_info'?


http://gerrit.cloudera.org:8080/#/c/11207/3/src/kudu/master/placement_policy.cc@62
PS3, Line 62: DCHECK(!ts_descriptors.empty());