[kudu-CR] KUDU-2238. DMS not flush under memory pressure.

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

Change subject: KUDU-2238. DMS not flush under memory pressure.
..


Patch Set 4: Code-Review+2

Looks good. Please report back if this helps with your workload


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
Gerrit-Change-Number: 8904
Gerrit-PatchSet: 4
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 07:54:15 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2238. DMS not flush under memory pressure.

2018-01-16 Thread zhen.zhang (Code Review)
zhen.zhang has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/8904 )

Change subject: KUDU-2238. DMS not flush under memory pressure.
..


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc
File src/kudu/tablet/tablet.cc:

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc@1909
PS2, Line 1909: (score > max_score - 1 && mem > mem_size)) {
> Good point.
Good idea, thanks Todd. Already updated.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
Gerrit-Change-Number: 8904
Gerrit-PatchSet: 4
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 07:47:52 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2238. DMS not flush under memory pressure.

2018-01-16 Thread zhen.zhang (Code Review)
Hello Mike Percy, Jean-Daniel Cryans, Kudu Jenkins, Todd Lipcon,

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

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

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

Change subject: KUDU-2238. DMS not flush under memory pressure.
..

KUDU-2238. DMS not flush under memory pressure.

When we choose DMS to flush, now we always pick the DMS with
highest log retention. However, as KUDU-2238 shows, in some cases
DMS with highest log retention may only consume little memory, and
other DMSs may consume much more memory, but get no chance to be
flushed, even under memory pressure.

This patch gives the ability to take memory consumption into
consideration when we choose DMS.

Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
---
M src/kudu/tablet/tablet.cc
M src/kudu/tablet/tablet.h
M src/kudu/tablet/tablet_replica_mm_ops.cc
3 files changed, 18 insertions(+), 8 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
Gerrit-Change-Number: 8904
Gerrit-PatchSet: 4
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 


[kudu-CR] KUDU-2238. DMS not flush under memory pressure.

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

Change subject: KUDU-2238. DMS not flush under memory pressure.
..


Patch Set 2:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc
File src/kudu/tablet/tablet.cc:

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc@1909
PS2, Line 1909: (size == retention_size && mem > mem_size)) {
> As both score and max_score are double, maybe it's not good to compare them
Good point.

In this case I think we should go with something like:

score > max_score - 1 && mem > mem_size

(we don't need to worry about std::abs since we already compared above the case 
where score > max_score). Since the units of score is bytes*100 here we expect 
large numbers and so I think "- 1" is pretty reasonable vs 0.0001 or something.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
Gerrit-Change-Number: 8904
Gerrit-PatchSet: 2
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 07:35:44 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2238. DMS not flush under memory pressure.

2018-01-16 Thread zhen.zhang (Code Review)
zhen.zhang has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/8904 )

Change subject: KUDU-2238. DMS not flush under memory pressure.
..


Patch Set 3:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc
File src/kudu/tablet/tablet.cc:

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc@1909
PS2, Line 1909: double score = mem * mem_weight + size * (100 - mem_weight);
> should this tie-breaker line now say "score == max_score && mem > mem_size"
As both score and max_score are double, maybe it's not good to compare them, 
and "score==max_score" can represent the same logic, so I leave it here. BTW, 
I'm not sure how we do double comparison in kudu, is "std::abs(score-max_score) 
< 0.0001" good?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
Gerrit-Change-Number: 8904
Gerrit-PatchSet: 3
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 07:30:38 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

2018-01-16 Thread Todd Lipcon (Code Review)
Todd Lipcon has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/9015 )

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..

KUDU-2208 Add RETRY_ON_EINTR() to Subprocess

This patch submits a unit test that create a Subprocess thread
and while it is starting and waiting, another thread sends kill signals
to the Subprocess thread. Since the pthread_kill() signal is sent
asynchronously, sometimes the pthread_kill() raises error signal 3.
In that condition, the unit test logs the incident as an INFO.

Prior to this bug fix patch, the Subprocess throws an exception
because it cannot handle the kill signal in Wait() state. To fix the bug,
we add RETRY_ON_EINTR() inside Subprocess::DoWait() function.

Furthermore, this patch also moves the RETRY_ON_EINTR() function
that occurs in many places across the code to os-util.h and it adds
alarm reset in the end of TestReadFromStdoutAndStderr in
Subprocess-test.

Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Reviewed-on: http://gerrit.cloudera.org:8080/9015
Tested-by: Kudu Jenkins
Reviewed-by: Todd Lipcon 
---
M src/kudu/consensus/log_index.cc
M src/kudu/util/env_posix.cc
M src/kudu/util/net/socket.cc
M src/kudu/util/os-util.h
M src/kudu/util/subprocess-test.cc
M src/kudu/util/subprocess.cc
6 files changed, 77 insertions(+), 22 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Todd Lipcon: Looks good to me, approved

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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Gerrit-Change-Number: 9015
Gerrit-PatchSet: 13
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

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

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..


Patch Set 12: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Gerrit-Change-Number: 9015
Gerrit-PatchSet: 12
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 07:30:34 +
Gerrit-HasComments: No


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, David Ribeiro Alves, Kudu Jenkins, Adar Dembo, Todd Lipcon,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a performance bottleneck. Often times the drive containing
the WALs is a better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

The following test changes are included:
- fs_manager-test: unit tests for various scenarios
- data_dirs-test: a test case is updated to show that we can now open
  the directory manager with a failed first data directory (previously
  this codepath would hit D/CHECK failures)
- mini_tablet_server-test: an end-to-end test is added to manually
  go back and forth between the old and new default metadata directories
- kudu-tool-test: a small test that tools still work, but only when the
  appropriate FS flags are provided

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool_action_fs.cc
M src/kudu/tools/tool_action_local_replica.cc
M src/kudu/tserver/mini_tablet_server-test.cc
11 files changed, 328 insertions(+), 69 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/27/9027/11
--
To view, visit http://gerrit.cloudera.org:8080/9027
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 11
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 11:

(4 comments)

http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/data_dirs.cc
File src/kudu/fs/data_dirs.cc:

http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/data_dirs.cc@728
PS10, Line 728:   CHECK_NE(first_healthy, -1); // Guaranteed by LoadInstances().
> maybe just make this a CHECK since it'll avoid some ugly stack overwriting
Done


http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc
File src/kudu/fs/fs_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc@94
PS10, Line 94: compatibility
> typo
Done


http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc@96
PS10, Line 96: exist
> nit: exists
Done


http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc@98
PS10, Line 98: TAG_FLAG(fs_metadata_dir, stable);
> maybe this should be stable out of the gate?
Done



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 11
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 07:29:34 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2195 (part 1): always sync PBC-format metadata files

2018-01-16 Thread Todd Lipcon (Code Review)
Hello Adar Dembo,

I'd like you to do a code review. Please visit

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

to review the following change.


Change subject: KUDU-2195 (part 1): always sync PBC-format metadata files
..

KUDU-2195 (part 1): always sync PBC-format metadata files

This changes the writing of metadata files to always fsync data before
renaming into place. Previously, we didn't do this in a few cases, most
notably for consensus metadata when WAL fsync is off (the default).

However, ext4 already has some automatic fsync when it detects the
commmon "write and rename-to-replace" paradigm used by a lot of
software. So, adding the explicit fsync isn't likely to slow down ext4
much.

More importantly, xfs does _not_ have this behavior, and we've recently
seen some issues on an xfs-enabled system where consensus metadata files
were unexpectedly zero-length or appear to have lost term changes,
causing tablets to fail to initialize. Initial investigation seems to
indicate that the hosts with these issues had experienced some hard
resets, lending further credence to the theory that it was due to lack
of syncing metadata.

Lots of good background reading can be found here (particularly in the
comments):
https://lwn.net/Articles/351422/

Change-Id: I4f0c911662b2ff35fcf3915790248ba85bf6026f
---
M src/kudu/consensus/consensus_meta.cc
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
M src/kudu/server/server_base.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/util/pb_util-test.cc
M src/kudu/util/pb_util.cc
M src/kudu/util/pb_util.h
11 files changed, 48 insertions(+), 76 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4f0c911662b2ff35fcf3915790248ba85bf6026f
Gerrit-Change-Number: 9043
Gerrit-PatchSet: 1
Gerrit-Owner: Todd Lipcon 
Gerrit-Reviewer: Adar Dembo 


[kudu-CR] KUDU-2261: The order of the responses after flush should match the order we call apply

2018-01-16 Thread zhen.zhang (Code Review)
Hello Mike Percy, Jean-Daniel Cryans, Kudu Jenkins, Todd Lipcon,

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

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

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

Change subject: KUDU-2261: The order of the responses after flush should match 
the order we call apply
..

KUDU-2261: The order of the responses after flush should match the order we 
call apply

The response list of flush() should have the same order of we apply operations,
so it's easier to know which operation failed and which succeeded.

Change-Id: Ib37c9e85ad03731bb7d5b83be77d40fcd95e803a
---
M java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
M java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
M java/kudu-client/src/main/java/org/apache/kudu/client/BatchResponse.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduSession.java
4 files changed, 71 insertions(+), 10 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ib37c9e85ad03731bb7d5b83be77d40fcd95e803a
Gerrit-Change-Number: 9029
Gerrit-PatchSet: 2
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

2018-01-16 Thread Jeffrey F. Lukman (Code Review)
Jeffrey F. Lukman has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9015 )

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..


Patch Set 12:

(4 comments)

http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/os-util.h
File src/kudu/util/os-util.h:

http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/os-util.h@27
PS10, Line 27:
> should probably #include  here since EINTR is defined there
Done


http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc
File src/kudu/util/subprocess-test.cc:

http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc@338
PS10, Line 338:   ASSERT_TRUE(err == 0 || err == ESRCH);
> nit: I think this would read better as ASSERT_TRUE(err == 0 || err == ESRCH
Done


http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc@340
PS10, Line 340: LOG(INFO) << "Async kill signal failed with err=" << 
err <<
> can you add an ASSERT_TRUE(t_finished) here? we should only get ESRCH in th
Done


http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc@344
PS10, Line 344:   // Add microseconds delay to make the unit test runs 
faster and more reliable
> can you change this to rand() % 1? It still runs quickly on my machine with
Done



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Gerrit-Change-Number: 9015
Gerrit-PatchSet: 12
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 06:44:32 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

2018-01-16 Thread Jeffrey F. Lukman (Code Review)
Hello Kudu Jenkins, Todd Lipcon,

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

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

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

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..

KUDU-2208 Add RETRY_ON_EINTR() to Subprocess

This patch submits a unit test that create a Subprocess thread
and while it is starting and waiting, another thread sends kill signals
to the Subprocess thread. Since the pthread_kill() signal is sent
asynchronously, sometimes the pthread_kill() raises error signal 3.
In that condition, the unit test logs the incident as an INFO.

Prior to this bug fix patch, the Subprocess throws an exception
because it cannot handle the kill signal in Wait() state. To fix the bug,
we add RETRY_ON_EINTR() inside Subprocess::DoWait() function.

Furthermore, this patch also moves the RETRY_ON_EINTR() function
that occurs in many places across the code to os-util.h and it adds
alarm reset in the end of TestReadFromStdoutAndStderr in
Subprocess-test.

Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
---
M src/kudu/consensus/log_index.cc
M src/kudu/util/env_posix.cc
M src/kudu/util/net/socket.cc
M src/kudu/util/os-util.h
M src/kudu/util/subprocess-test.cc
M src/kudu/util/subprocess.cc
6 files changed, 77 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/15/9015/12
--
To view, visit http://gerrit.cloudera.org:8080/9015
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Gerrit-Change-Number: 9015
Gerrit-PatchSet: 12
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

2018-01-16 Thread Jeffrey F. Lukman (Code Review)
Jeffrey F. Lukman has abandoned this change. ( 
http://gerrit.cloudera.org:8080/9042 )

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..


Abandoned

Wrong commit
--
To view, visit http://gerrit.cloudera.org:8080/9042
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: abandon
Gerrit-Change-Id: Iffabada54eb2359730e9e2973b263d71645fa572
Gerrit-Change-Number: 9042
Gerrit-PatchSet: 1
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

2018-01-16 Thread Jeffrey F. Lukman (Code Review)
Jeffrey F. Lukman has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/9042


Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..

KUDU-2208 Add RETRY_ON_EINTR() to Subprocess

This patch submits a unit test that create a Subprocess thread
and while it is starting and waiting, another thread sends kill signals
to the Subprocess thread. Since the pthread_kill() signal is sent
asynchronously, sometimes the pthread_kill() raises error signal 3.
In that condition, the unit test logs the incident as an INFO.

Prior to this bug fix patch, the Subprocess throws an exception
because it cannot handle the kill signal in Wait() state. To fix the bug,
we add RETRY_ON_EINTR() inside Subprocess::DoWait() function.

Furthermore, this patch also moves the RETRY_ON_EINTR() function
that occurs in many places across the code to os-util.h and it adds
alarm reset in the end of TestReadFromStdoutAndStderr in
Subprocess-test

Change-Id: Iffabada54eb2359730e9e2973b263d71645fa572
---
M src/kudu/util/os-util.h
M src/kudu/util/subprocess-test.cc
2 files changed, 5 insertions(+), 2 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iffabada54eb2359730e9e2973b263d71645fa572
Gerrit-Change-Number: 9042
Gerrit-PatchSet: 1
Gerrit-Owner: Jeffrey F. Lukman 


[kudu-CR] tools: Add debug mode to pb dump tool

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

Change subject: tools: Add debug mode to pb dump tool
..


Patch Set 1:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/util/pb_util.cc
File src/kudu/util/pb_util.cc:

http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/util/pb_util.cc@930
PS1, Line 930: // Fallthrough.
use FALLTHROUGH_INTENDED from macros.h which has some magic effect on clang.

Or, since this is just the common case of multiple case labels, and not a case 
where there is some code for DEFAULT which then falls through to DEBUG, I don't 
think it's really necessary in the first place. Mostly I like to document 
fallthrough in cases like:

case A:
  some code;
  some more code;
case B:
  even more code;
  break;

because it looks like someone forgot the 'break' on case A.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ica2a74a2e252d140cf7704ff68037a64db19cd80
Gerrit-Change-Number: 9024
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 06:22:28 +
Gerrit-HasComments: Yes


[kudu-CR] rpc: allow setting --rpc tls min protocol on older RHEL versions

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

Change subject: rpc: allow setting --rpc_tls_min_protocol on older RHEL versions
..


Patch Set 3: Code-Review+1

lgtm, please test using LD_LIBRARY_PATH against both versions before pushing 
just in case we missed something


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic61f31788d63072fae609c6a2186e52d5e2467b7
Gerrit-Change-Number: 7821
Gerrit-PatchSet: 3
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Henry Robinson 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Sailesh Mukil 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 06:18:38 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

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

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..


Patch Set 10:

(4 comments)

http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/os-util.h
File src/kudu/util/os-util.h:

http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/os-util.h@27
PS10, Line 27: #include 
should probably #include  here since EINTR is defined there


http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc
File src/kudu/util/subprocess-test.cc:

http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc@338
PS10, Line 338:   ASSERT_FALSE(err != 0 && err != ESRCH);
nit: I think this would read better as ASSERT_TRUE(err == 0 || err == ESRCH)


http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc@340
PS10, Line 340: LOG(INFO) << "Async kill signal failed with err=" << 
err <<
can you add an ASSERT_TRUE(t_finished) here? we should only get ESRCH in the 
case where the thread finished


http://gerrit.cloudera.org:8080/#/c/9015/10/src/kudu/util/subprocess-test.cc@344
PS10, Line 344:   SleepFor(MonoDelta::FromMicroseconds(rand() % 100));
can you change this to rand() % 1? It still runs quickly on my machine with 
that setting and seems more likely to produce races



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Gerrit-Change-Number: 9015
Gerrit-PatchSet: 10
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 06:16:51 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2238. DMS not flush under memory pressure.

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

Change subject: KUDU-2238. DMS not flush under memory pressure.
..


Patch Set 2:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc
File src/kudu/tablet/tablet.cc:

http://gerrit.cloudera.org:8080/#/c/8904/2/src/kudu/tablet/tablet.cc@1909
PS2, Line 1909: (size == retention_size && mem > mem_size)) {
should this tie-breaker line now say "score == max_score && mem > mem_size"?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I0c04d76aa0e3888352dc56eeb493a5437ef47e42
Gerrit-Change-Number: 8904
Gerrit-PatchSet: 2
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 06:12:12 +
Gerrit-HasComments: Yes


[kudu-CR](branch-1.5.x) KUDU-2193 (part 2): avoid holding TSTabletManager::lock for a long time

2018-01-16 Thread Todd Lipcon (Code Review)
Todd Lipcon has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/8526 )

Change subject: KUDU-2193 (part 2): avoid holding TSTabletManager::lock_ for a 
long time
..

KUDU-2193 (part 2): avoid holding TSTabletManager::lock_ for a long time

This changes tablet report generation to only hold the TSTabletManager lock
long enough to copy a list of refs to the relevant tablets.

Even though the lock is a reader-writer lock, a long read-side critical
section can end up blocking other readers as long as any writer shows up.
I saw the following in a cluster:

- election storm ongoing
- T1 generating a tablet report (thus holding the reader lock)
  - blocks for a long time getting ConsensusState from some tablets currently
mid-fsync.
- T2 handling a DeleteTablet or CreateTablet call (waiting for writer lock)
- T3 through T20: blocking on reader lock in LookupTablet()

The effect here is that all other threads end up blocked until T1 finishes
its tablet report generation, which in this case can be tens of seconds due
to all of the fsync traffic. These blocked threads then contribute to the
ongoing election storm since they may delay timely responses to vote requests
from other tablets.

I tested this and the previous patch on a cluster that was previously
experiencing the issue. I triggered some elections by kill -STOPping some
servers and resuming them a few seconds later. Without these patches,
other servers started doing lots of context switches (due to the spinlock
used prior to this patch series) and I saw lots of blocked threads in
pstack. With the patch, things seem cleaner.

The following screenshot shows before/after voluntary_context_switch rate:

https://i.imgur.com/7zcbImw.png

(the missing data around 5pm is my restarting the servers with this patch)

Change-Id: I0f645775e8347a18af112b308dba56a3b4a2c681
Reviewed-on: http://gerrit.cloudera.org:8080/8346
Tested-by: Kudu Jenkins
Reviewed-by: Todd Lipcon 
(cherry picked from commit f2c21b4fac15fcaa5f53a6c7960ecd19a0664c45)
Reviewed-on: http://gerrit.cloudera.org:8080/8526
Reviewed-by: Adar Dembo 
---
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
2 files changed, 31 insertions(+), 18 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Adar Dembo: Looks good to me, approved

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

Gerrit-Project: kudu
Gerrit-Branch: branch-1.5.x
Gerrit-MessageType: merged
Gerrit-Change-Id: I0f645775e8347a18af112b308dba56a3b4a2c681
Gerrit-Change-Number: 8526
Gerrit-PatchSet: 2
Gerrit-Owner: Todd Lipcon 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR](branch-1.4.x) KUDU-2193 (part 2): avoid holding TSTabletManager::lock for a long time

2018-01-16 Thread Todd Lipcon (Code Review)
Todd Lipcon has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/8528 )

Change subject: KUDU-2193 (part 2): avoid holding TSTabletManager::lock_ for a 
long time
..

KUDU-2193 (part 2): avoid holding TSTabletManager::lock_ for a long time

This changes tablet report generation to only hold the TSTabletManager lock
long enough to copy a list of refs to the relevant tablets.

Even though the lock is a reader-writer lock, a long read-side critical
section can end up blocking other readers as long as any writer shows up.
I saw the following in a cluster:

- election storm ongoing
- T1 generating a tablet report (thus holding the reader lock)
  - blocks for a long time getting ConsensusState from some tablets currently
mid-fsync.
- T2 handling a DeleteTablet or CreateTablet call (waiting for writer lock)
- T3 through T20: blocking on reader lock in LookupTablet()

The effect here is that all other threads end up blocked until T1 finishes
its tablet report generation, which in this case can be tens of seconds due
to all of the fsync traffic. These blocked threads then contribute to the
ongoing election storm since they may delay timely responses to vote requests
from other tablets.

I tested this and the previous patch on a cluster that was previously
experiencing the issue. I triggered some elections by kill -STOPping some
servers and resuming them a few seconds later. Without these patches,
other servers started doing lots of context switches (due to the spinlock
used prior to this patch series) and I saw lots of blocked threads in
pstack. With the patch, things seem cleaner.

The following screenshot shows before/after voluntary_context_switch rate:

https://i.imgur.com/7zcbImw.png

(the missing data around 5pm is my restarting the servers with this patch)

Change-Id: I0f645775e8347a18af112b308dba56a3b4a2c681
Reviewed-on: http://gerrit.cloudera.org:8080/8346
Tested-by: Kudu Jenkins
Reviewed-by: Todd Lipcon 
(cherry picked from commit f2c21b4fac15fcaa5f53a6c7960ecd19a0664c45)
Reviewed-on: http://gerrit.cloudera.org:8080/8528
Reviewed-by: Adar Dembo 
---
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
2 files changed, 31 insertions(+), 18 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Adar Dembo: Looks good to me, approved

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

Gerrit-Project: kudu
Gerrit-Branch: branch-1.4.x
Gerrit-MessageType: merged
Gerrit-Change-Id: I0f645775e8347a18af112b308dba56a3b4a2c681
Gerrit-Change-Number: 8528
Gerrit-PatchSet: 2
Gerrit-Owner: Todd Lipcon 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Will Berkeley 


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 10:

(4 comments)

http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/data_dirs.cc
File src/kudu/fs/data_dirs.cc:

http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/data_dirs.cc@728
PS10, Line 728:   DCHECK_NE(first_healthy, -1); // Guaranteed by 
LoadInstances().
maybe just make this a CHECK since it'll avoid some ugly stack overwriting on 
the next line, and this isn't any sort of perf-critical code


http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc
File src/kudu/fs/fs_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc@94
PS10, Line 94: compatability
typo


http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc@96
PS10, Line 96: exist
nit: exists


http://gerrit.cloudera.org:8080/#/c/9027/10/src/kudu/fs/fs_manager.cc@98
PS10, Line 98: TAG_FLAG(fs_metadata_dir, advanced);
maybe this should be stable out of the gate?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 10
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 06:07:00 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2261: The order of the responses after flush should match the order we call apply

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

Change subject: KUDU-2261: The order of the responses after flush should match 
the order we call apply
..


Patch Set 1:

(5 comments)

http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
File 
java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java:

http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java@22
PS1, Line 22: import java.util.*;
nit: we don't use wildcard imports


http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java@383
PS1, Line 383: batchResponses.add(Deferred.fromResult(new 
BatchResponse(opsFailedInLookup, opsFailedIndexesList)));
nit: please wrap


http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java@485
PS1, Line 485: for ( int i = 0; i < indexList.size(); i++) {
nit: extra space


http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java@486
PS1, Line 486:   responses[indexList.get(i)] = responseList.get(i);
nit: can you add an assert like:

int idx = indexList.get(i);
assert responses[idx] == null;
responses[idx] = responseList.get(i);


http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
File java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java:

http://gerrit.cloudera.org:8080/#/c/9029/1/java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java@46
PS1, Line 46:   /** Holds indexes of operations. */
can you specify "in the original user's batch"



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ib37c9e85ad03731bb7d5b83be77d40fcd95e803a
Gerrit-Change-Number: 9029
Gerrit-PatchSet: 1
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 05:53:18 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-1913: LIFO wake up ordering for threadpool worker threads

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

Change subject: KUDU-1913: LIFO wake up ordering for threadpool worker threads
..


Patch Set 1: Code-Review+1

(3 comments)

http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/test_util.h
File src/kudu/util/test_util.h:

http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/test_util.h@115
PS1, Line 115:   // Do not use any back-off and loop every millisecond.
nit: it doesn't check every millisecond, but rather sleeps one millisecond 
between checks (which might result in checking less frequently in the case that 
the checks themselves take some time)


http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/threadpool-test.cc
File src/kudu/util/threadpool-test.cc:

http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/threadpool-test.cc@934
PS1, Line 934: [](){}
> o_O
at least he didn't use the equivalent syntax  <:]{%>


http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/threadpool.cc
File src/kudu/util/threadpool.cc:

http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/threadpool.cc@621
PS1, Line 621:   auto cleanup = MakeScopedCleanup([&]() {
can you use the SCOPED_CLEANUP macro instead if you don't need the named 
variable for cancellation purposes?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I8036bf0d15f9ffcb3fa76579e3bfe0a340d38320
Gerrit-Change-Number: 9021
Gerrit-PatchSet: 1
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 05:48:08 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, David Ribeiro Alves, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a performance bottleneck. Often times the drive containing
the WALs is a better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

The following test changes are included:
- fs_manager-test: unit tests for various scenarios
- data_dirs-test: a test case is updated to show that we can now open
  the directory manager with a failed first data directory (previously
  this codepath would hit D/CHECK failures)
- mini_tablet_server-test: an end-to-end test is added to manually
  go back and forth between the old and new default metadata directories
- kudu-tool-test: a small test that tools still work, but only when the
  appropriate FS flags are provided

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool_action_fs.cc
M src/kudu/tools/tool_action_local_replica.cc
M src/kudu/tserver/mini_tablet_server-test.cc
11 files changed, 327 insertions(+), 69 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/27/9027/10
--
To view, visit http://gerrit.cloudera.org:8080/9027
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 10
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] [catalog manager] more info if unable to replace a replica

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

Change subject: [catalog_manager] more info if unable to replace a replica
..


Patch Set 4:

> Shouldn't we also periodically print this warning even if the
 > cluster is healthy and there are no replicas to replace?

One option I can see is to print this sort of warning every time a new table 
created with the replication factor greater than one and equal to the number of 
tablet servers in the cluster.  Would it make sense?


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 4
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Wed, 17 Jan 2018 04:10:19 +
Gerrit-HasComments: No


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Alexey Serbin (Code Review)
Alexey Serbin has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/9040 )

Change subject: [catalog_manager] more info if unable to replace a replica
..

[catalog_manager] more info if unable to replace a replica

Output actionable warning message when the catalog manager is unable
to find a spot for a replacement replica.  Since the 3-4-3 replication
scheme is now enabled by default, this might be useful in case if
running a cluster with just 3 tablet servers when tables have
replication factor of 3.

Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Reviewed-on: http://gerrit.cloudera.org:8080/9040
Reviewed-by: Mike Percy 
Tested-by: Kudu Jenkins
---
M src/kudu/master/catalog_manager.cc
M src/kudu/master/ts_manager.cc
M src/kudu/master/ts_manager.h
3 files changed, 41 insertions(+), 9 deletions(-)

Approvals:
  Mike Percy: Looks good to me, approved
  Kudu Jenkins: Verified

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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 4
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 


[kudu-CR] [catalog manager] more info if unable to replace a replica

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

Change subject: [catalog_manager] more info if unable to replace a replica
..


Patch Set 3:

> Shouldn't we also periodically print this warning even if the
 > cluster is healthy and there are no replicas to replace?

I think that's a good idea.  Where would it be the best place to add such a 
warning?


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Wed, 17 Jan 2018 03:17:56 +
Gerrit-HasComments: No


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, David Ribeiro Alves, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a performance bottleneck. Often times the drive containing
the WALs is a better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

The following test changes are included:
- fs_manager-test: unit tests for various scenarios
- data_dirs-test: a test case is updated to show that we can now open
  the directory manager with a failed first data directory (previously
  this codepath would hit D/CHECK failures)
- mini_tablet_server-test: an end-to-end test is added to manually
  go back and forth between the old and new default metadata directories
- kudu-tool-test: a small test that tools still work, but only when the
  appropriate FS flags are provided

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool_action_fs.cc
M src/kudu/tools/tool_action_local_replica.cc
M src/kudu/tserver/mini_tablet_server-test.cc
11 files changed, 327 insertions(+), 69 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/27/9027/9
--
To view, visit http://gerrit.cloudera.org:8080/9027
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 9
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 7:

(9 comments)

Done, and added a more integration-y test per David's feedback.

http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/block_manager_util.cc
File src/kudu/fs/block_manager_util.cc:

http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/block_manager_util.cc@176
PS6, Line 176:
> typo
Done


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc
File src/kudu/fs/fs_manager-test.cc:

http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@248
PS6, Line 248: "wal"
> could we be more specific? maybe look for full suffix?
Done


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@255
PS6, Line 255:   LOG(INFO) << s.ToString();
> leftover from testing? if you want to print the status on failure you can d
Done


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@258
PS6, Line 258:
 : TEST_F(FsManagerTestBase, TestMetadataDirInData
> check the status
Per Adar's comment, I moved these each into their own test.


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@263
PS6, Line 263:
 :   // Creating a brand new FS layout configured with metadata in 
the first data
 :   // directory emulates the default behavior in Kudu 1.6 and 
below.
 :   opts.metadata_root = GetTestPath("data");
 :   ReinitFsManagerWithOpts(opts);
> in the case before this one you test with a metadata root path that does no
Done


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@269
PS6, Line 269:   ASSERT_OK(fs_manager()->Open());
 :   ASSERT_STR_CONTAINS(fs_manager()->GetTabletMetadataDir(), 
"data");
> wait, empty string is different from "unset"? why?
Mm, not sure I understand, what  do you mean by "unset" here?

This behavior is for backwards compatibility: older deployments can continue 
running with no change to their configurations (i.e. with an empty 
fs_metadata_dir flag) while maintaining that their metadata will be in the 
first data dir. New deployments will use the fs_wal_dir for metadata if 
fs_metadata_dir is empty.


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@276
PS6, Line 276:   ASSERT_OK(fs_manager()->Open());
 :   ASSERT_STR_CONTAINS(fs_manager()->GetTabletMe
> same
Ack


http://gerrit.cloudera.org:8080/#/c/9027/7/src/kudu/fs/fs_manager-test.cc
File src/kudu/fs/fs_manager-test.cc:

http://gerrit.cloudera.org:8080/#/c/9027/7/src/kudu/fs/fs_manager-test.cc@534
PS7, Line 534:   // Adding a new data dir elsewhere in the list is OK.
> This isn't what the test does anymore though; it's just shuffling the order
Ah you're right, my bad. Removing it. I'll add a similar test up where we test 
metadata in the first data root.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc
File src/kudu/fs/fs_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@256
PS4, Line 256: const string meta_dir_in_data_root = 
JoinPathSegments(canonicalized_data_fs_roots_[0].path,
> My concern is with the following sequence:
I see. Step 3 would fail at CreateFileSystemRoots(). The canonicalized roots 
wouldn't be empty, so this would lead to an AlreadyPresent error.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 7
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:57:03 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, David Ribeiro Alves, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a bottleneck. Often times the drive containing the WALs is a
better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

The following tests are added:
- fs_manager-test: unit tests for various scenarios
- data_dirs-test: a test case is updated to show that we can now open
  the directory manager with a failed first data directory (previously
  this codepath would hit D/CHECK failures)
- mini_tablet_server-test: an end-to-end test is added to switch back
  and forth between the old and new default metadata directories
- kudu-tool-test: a small test that tools still work, but only when the
  appropriate FS flags are provided

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool_action_fs.cc
M src/kudu/tserver/mini_tablet_server-test.cc
10 files changed, 316 insertions(+), 69 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/27/9027/8
--
To view, visit http://gerrit.cloudera.org:8080/9027
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 8
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9040 )

Change subject: [catalog_manager] more info if unable to replace a replica
..


Patch Set 3:

Shouldn't we also periodically print this warning even if the cluster is 
healthy and there are no replicas to replace?


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:47:41 +
Gerrit-HasComments: No


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9040 )

Change subject: [catalog_manager] more info if unable to replace a replica
..


Patch Set 3: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:45:59 +
Gerrit-HasComments: No


[kudu-CR] [catalog manager] more info if unable to replace a replica

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

Change subject: [catalog_manager] more info if unable to replace a replica
..


Patch Set 2:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/9040/2/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9040/2/src/kudu/master/catalog_manager.cc@3164
PS2, Line 3164: should be present
> how about: are required
Done


http://gerrit.cloudera.org:8080/#/c/9040/2/src/kudu/master/catalog_manager.cc@3172
PS2, Line 3172: KLOG_EVERY_N(WARNING, 100)
> how about: KLOG_EVERY_N_SECS(WARNING, 60)
Done



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 2
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:41:04 +
Gerrit-HasComments: Yes


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Alexey Serbin (Code Review)
Hello Mike Percy, Kudu Jenkins,

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

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

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

Change subject: [catalog_manager] more info if unable to replace a replica
..

[catalog_manager] more info if unable to replace a replica

Output actionable warning message when the catalog manager is unable
to find a spot for a replacement replica.  Since the 3-4-3 replication
scheme is now enabled by default, this might be useful in case if
running a cluster with just 3 tablet servers when tables have
replication factor of 3.

Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
---
M src/kudu/master/catalog_manager.cc
M src/kudu/master/ts_manager.cc
M src/kudu/master/ts_manager.h
3 files changed, 41 insertions(+), 9 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 


[kudu-CR] rpc: allow setting --rpc tls min protocol on older RHEL versions

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

Change subject: rpc: allow setting --rpc_tls_min_protocol on older RHEL versions
..


Patch Set 3: Code-Review+1

LGTM (deferring to other reviewers who might have some more feedback).


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic61f31788d63072fae609c6a2186e52d5e2467b7
Gerrit-Change-Number: 7821
Gerrit-PatchSet: 3
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Henry Robinson 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Sailesh Mukil 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:32:06 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

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

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 2:

(5 comments)

lgtm, just a few nits

http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc
File src/kudu/server/server_base.cc:

http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc@522
PS1, Line 522: rpc
nit: RPC


http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc@525
PS1, Line 525: rpc
nit: RPC


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc
File src/kudu/tserver/tablet_server-test.cc:

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@211
PS2, Line 211: controller.Reset();
nit: maybe, just move RpcController under the scope of the 'while() {}' loop 
below?


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@215
PS2, Line 215: CHECK(resp.has_status());
nit: since there are many iterations of calling the GetStatus() method, maybe 
it's cleaner to move the 'resp' under the scope of the 'while() {}' loop to 
start with a clean state every iteration?


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@230
PS2, Line 230: ASSERT_OK(mini_server_->Restart());
nit: consider adding some scope-related mechanics to join the thread if this 
assert fails.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 2
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:21:05 +
Gerrit-HasComments: Yes


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9040 )

Change subject: [catalog_manager] more info if unable to replace a replica
..


Patch Set 2:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/9040/2/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9040/2/src/kudu/master/catalog_manager.cc@3164
PS2, Line 3164: should be present
how about: are required


http://gerrit.cloudera.org:8080/#/c/9040/2/src/kudu/master/catalog_manager.cc@3172
PS2, Line 3172: KLOG_EVERY_N(WARNING, 100)
how about: KLOG_EVERY_N_SECS(WARNING, 60)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 2
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Wed, 17 Jan 2018 01:58:59 +
Gerrit-HasComments: Yes


[kudu-CR] consensus: Fix KUDU-1735 regression test in 3-4-3 mode

2018-01-16 Thread Mike Percy (Code Review)
Mike Percy has abandoned this change. ( http://gerrit.cloudera.org:8080/9013 )

Change subject: consensus: Fix KUDU-1735 regression test in 3-4-3 mode
..


Abandoned

Superseded by https://gerrit.cloudera.org/c/8989/
--
To view, visit http://gerrit.cloudera.org:8080/9013
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: abandon
Gerrit-Change-Id: I275ba76c7fc7711e05b9dbda02a659d4245c40d0
Gerrit-Change-Number: 9013
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-16 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert, Kudu Jenkins,

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

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

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

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/tserver/tablet_server-test.cc
6 files changed, 82 insertions(+), 15 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 2
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-16 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert,

I'd like you to do a code review. Please visit

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

to review the following change.


Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/tserver/tablet_server-test.cc
6 files changed, 82 insertions(+), 15 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 1
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 


[kudu-CR] KUDU-2261: The order of the responses after flush should match the order we call apply

2018-01-16 Thread zhen.zhang (Code Review)
zhen.zhang has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9029 )

Change subject: KUDU-2261: The order of the responses after flush should match 
the order we call apply
..


Patch Set 1:

The test failed seems unrelated with this change.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ib37c9e85ad03731bb7d5b83be77d40fcd95e803a
Gerrit-Change-Number: 9029
Gerrit-PatchSet: 1
Gerrit-Owner: zhen.zhang 
Gerrit-Reviewer: Jean-Daniel Cryans 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: zhen.zhang 
Gerrit-Comment-Date: Wed, 17 Jan 2018 01:41:45 +
Gerrit-HasComments: No


[kudu-CR] KUDU-1913: LIFO wake up ordering for threadpool worker threads

2018-01-16 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9021 )

Change subject: KUDU-1913: LIFO wake up ordering for threadpool worker threads
..


Patch Set 1: Code-Review+1

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/threadpool-test.cc
File src/kudu/util/threadpool-test.cc:

http://gerrit.cloudera.org:8080/#/c/9021/1/src/kudu/util/threadpool-test.cc@934
PS1, Line 934: [](){}
o_O



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I8036bf0d15f9ffcb3fa76579e3bfe0a340d38320
Gerrit-Change-Number: 9021
Gerrit-PatchSet: 1
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 01:28:47 +
Gerrit-HasComments: Yes


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Alexey Serbin (Code Review)
Hello Mike Percy, Kudu Jenkins,

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

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

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

Change subject: [catalog_manager] more info if unable to replace a replica
..

[catalog_manager] more info if unable to replace a replica

Output actionable warning message when the catalog manager is unable
to find a place for a replacement replica.  Since the 3-4-3 replication
scheme is now enabled by default, this might be useful in case if
running a cluster with just 3 tablet servers when tables have
replication factor of 3.

Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
---
M src/kudu/master/catalog_manager.cc
M src/kudu/master/ts_manager.cc
M src/kudu/master/ts_manager.h
3 files changed, 41 insertions(+), 9 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 2
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy 


[kudu-CR] rpc: allow setting --rpc tls min protocol on older RHEL versions

2018-01-16 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/7821 )

Change subject: rpc: allow setting --rpc_tls_min_protocol on older RHEL versions
..


Patch Set 3:

I've updated according to Alexey's suggestion. The check now happens at 
startup, which is a definite improvement.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic61f31788d63072fae609c6a2186e52d5e2467b7
Gerrit-Change-Number: 7821
Gerrit-PatchSet: 3
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Henry Robinson 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Sailesh Mukil 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Wed, 17 Jan 2018 01:09:06 +
Gerrit-HasComments: No


[kudu-CR] mini-cluster: rename data root to cluster root

2018-01-16 Thread Andrew Wong (Code Review)
Andrew Wong has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/9033 )

Change subject: mini-cluster: rename data_root to cluster_root
..

mini-cluster: rename data_root to cluster_root

I found that the name data_root for the root directory in which to place
the cluster's data and logs was a confusing name because:
  1. we use "data" here loosely to describe any old bytes, encompassing
 not only data blocks, but WALs and logs as well, and
  2. the concept of a "data root" already exists to mean a
 user-specified location to place data blocks (i.e. an entry in
 fs_data_dirs).

As such, this patch renames External- and InternalMiniClusterOptions'
"data_root" members to "cluster_root".

Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Reviewed-on: http://gerrit.cloudera.org:8080/9033
Reviewed-by: Adar Dembo 
Tested-by: Andrew Wong 
---
M src/kudu/benchmarks/tpch/tpch1.cc
M src/kudu/benchmarks/tpch/tpch_real_world.cc
M src/kudu/integration-tests/ts_itest-base.cc
M src/kudu/mini-cluster/external_mini_cluster.cc
M src/kudu/mini-cluster/external_mini_cluster.h
M src/kudu/mini-cluster/internal_mini_cluster.cc
M src/kudu/mini-cluster/internal_mini_cluster.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool.proto
M src/kudu/tools/tool_action_test.cc
10 files changed, 42 insertions(+), 42 deletions(-)

Approvals:
  Adar Dembo: Looks good to me, approved
  Andrew Wong: Verified

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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 5
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] rpc: allow setting --rpc tls min protocol on older RHEL versions

2018-01-16 Thread Dan Burkert (Code Review)
Hello Alexey Serbin, Henry Robinson, Adar Dembo, Sailesh Mukil, Todd Lipcon,

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

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

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

Change subject: rpc: allow setting --rpc_tls_min_protocol on older RHEL versions
..

rpc: allow setting --rpc_tls_min_protocol on older RHEL versions

Change-Id: Ic61f31788d63072fae609c6a2186e52d5e2467b7
---
M src/kudu/security/tls_context.cc
1 file changed, 36 insertions(+), 12 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ic61f31788d63072fae609c6a2186e52d5e2467b7
Gerrit-Change-Number: 7821
Gerrit-PatchSet: 3
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Henry Robinson 
Gerrit-Reviewer: Sailesh Mukil 
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread Dan Burkert (Code Review)
Dan Burkert has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/9037 )

Change subject: heavy-update-compaction-itest
..

heavy-update-compaction-itest

This is an integration test which simulates an extremely update-heavy
workload. It was written while trying to repro KUDU-2251, and
subsequently led to discovering the issues in KUDU-2253.

Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Reviewed-on: http://gerrit.cloudera.org:8080/9037
Reviewed-by: David Ribeiro Alves 
Tested-by: Kudu Jenkins
---
M src/kudu/integration-tests/CMakeLists.txt
A src/kudu/integration-tests/heavy-update-compaction-itest.cc
2 files changed, 245 insertions(+), 0 deletions(-)

Approvals:
  David Ribeiro Alves: Looks good to me, approved
  Kudu Jenkins: Verified

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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 3
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] [catalog manager] more info if unable to replace a replica

2018-01-16 Thread Alexey Serbin (Code Review)
Alexey Serbin has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/9040


Change subject: [catalog_manager] more info if unable to replace a replica
..

[catalog_manager] more info if unable to replace a replica

Output actionable warning message when the catalog manager is unable
to find a place for a replacement replica.  Since the 3-4-3 replication
scheme is now enabled by default, this might be useful in case if
running a cluster with just 3 tablet servers when tables have
replication factor of 3.

Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
---
M src/kudu/master/catalog_manager.cc
M src/kudu/master/ts_manager.cc
M src/kudu/master/ts_manager.h
3 files changed, 36 insertions(+), 9 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id5f562c6d1ff526daa785ea535e440598c03cd37
Gerrit-Change-Number: 9040
Gerrit-PatchSet: 1
Gerrit-Owner: Alexey Serbin 


[kudu-CR] mini-cluster: rename data root to cluster root

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

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 4: Verified+1

The failure was due to a clock sync issue.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 22:07:46 +
Gerrit-HasComments: No


[kudu-CR] mini-cluster: rename data root to cluster root

2018-01-16 Thread Andrew Wong (Code Review)
Andrew Wong has removed a vote on this change.

Change subject: mini-cluster: rename data_root to cluster_root
..


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: deleteVote
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 7:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/9027/7/src/kudu/fs/fs_manager-test.cc
File src/kudu/fs/fs_manager-test.cc:

http://gerrit.cloudera.org:8080/#/c/9027/7/src/kudu/fs/fs_manager-test.cc@534
PS7, Line 534:   // Adding a new data dir elsewhere in the list is OK.
This isn't what the test does anymore though; it's just shuffling the order of 
the directories in data_roots. Is that worth testing? If so, reword the comment 
further. If not, remove this part of the test.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc
File src/kudu/fs/fs_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@256
PS4, Line 256: const string meta_dir_in_data_root = 
JoinPathSegments(canonicalized_data_fs_roots_[0].path,
> Is your concern that if the FS layout already partially exists, but not com
My concern is with the following sequence:
  1. I'm going to create an FS with wal_dir=/a, metadata_dir="", data_dirs=/b.
  2. First I do "mkdir -p /b/tablet-meta".
  3. Then I do FSManager.CreateInitialFileSystemLayout.
  4. Then I do FSManager.Open.

I think I'll wind up with metadata_dir=/b/tablet-meta instead of 
/a/tablet-meta, but maybe this is too contrived due to step #2. What would be 
interesting is if step #2 could be substituted with an otherwise valid Kudu 
operation.

Anyway, my question was "will step #3 fail because of the directory created in 
step #2"? If so, this is a non-issue.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 7
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Tue, 16 Jan 2018 21:23:46 +
Gerrit-HasComments: Yes


[kudu-CR] mini-cluster: rename data root to cluster root

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

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 4: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 21:12:44 +
Gerrit-HasComments: No


[kudu-CR] mini-cluster: rename data root to cluster root

2018-01-16 Thread Andrew Wong (Code Review)
Hello David Ribeiro Alves, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: mini-cluster: rename data_root to cluster_root
..

mini-cluster: rename data_root to cluster_root

I found that the name data_root for the root directory in which to place
the cluster's data and logs was a confusing name because:
  1. we use "data" here loosely to describe any old bytes, encompassing
 not only data blocks, but WALs and logs as well, and
  2. the concept of a "data root" already exists to mean a
 user-specified location to place data blocks (i.e. an entry in
 fs_data_dirs).

As such, this patch renames External- and InternalMiniClusterOptions'
"data_root" members to "cluster_root".

Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
---
M src/kudu/benchmarks/tpch/tpch1.cc
M src/kudu/benchmarks/tpch/tpch_real_world.cc
M src/kudu/integration-tests/ts_itest-base.cc
M src/kudu/mini-cluster/external_mini_cluster.cc
M src/kudu/mini-cluster/external_mini_cluster.h
M src/kudu/mini-cluster/internal_mini_cluster.cc
M src/kudu/mini-cluster/internal_mini_cluster.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool.proto
M src/kudu/tools/tool_action_test.cc
10 files changed, 42 insertions(+), 42 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] mini-cluster: rename data root to cluster root

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

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 3:

(1 comment)

> Patch Set 3:
>
> (1 comment)

http://gerrit.cloudera.org:8080/#/c/9033/3/src/kudu/mini-cluster/external_mini_cluster.h
File src/kudu/mini-cluster/external_mini_cluster.h:

http://gerrit.cloudera.org:8080/#/c/9033/3/src/kudu/mini-cluster/external_mini_cluster.h@90
PS3, Line 90:   // Directory in which to store data.
> Maybe update this?
Done



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 3
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 21:04:08 +
Gerrit-HasComments: Yes


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread David Ribeiro Alves (Code Review)
David Ribeiro Alves has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9037 )

Change subject: heavy-update-compaction-itest
..


Patch Set 2: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 2
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 20:45:16 +
Gerrit-HasComments: No


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 6:

(18 comments)

http://gerrit.cloudera.org:8080/#/c/9027/4//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/9027/4//COMMIT_MSG@20
PS4, Line 20: It is up to the user to take caution in changing this flag; 
updating the
: flag without also manually moving any existing metadata will 
cause Kudu
: to fail at startup.
> Isn't the same true of fs_wal_dir and fs_data_dirs? Or is changing fs_metad
Good point. No point in bringing it up, I'll take this out.


http://gerrit.cloudera.org:8080/#/c/9027/4//COMMIT_MSG@29
PS4, Line 29: cases
> Nit: case
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/block_manager_util.cc
File src/kudu/fs/block_manager_util.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/block_manager_util.cc@176
PS4, Line 176:   DCHECK_NE(first_healthy, -1); // Guaranteed by 
DataDirManager::LoadInstnaces().
> Can we not depend on this, and instead return a bad status if there are no
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc
File src/kudu/fs/fs_manager-test.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@258
PS4, Line 258:   env_->DeleteRecursively(GetTestPath("wal"));
 :   env_->DeleteRecursively(GetTestPath("data"));
> Maybe use different tests so you needn't clean up in between?
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@271
PS4, Line 271:   opts.metadata_root = "";
> Maybe opts.metadata_root.clear() would be more idiomatic?
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@284
PS4, Line 284:   ASSERT_OK(fs_manager()->Open());
> After this could you check that the WAL root and the metadata root aren't t
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@288
PS4, Line 288:   opts.metadata_root = "";
> .clear() here too.
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@517
PS4, Line 517:   // Try to open with a new data dir at the front of the list.
> Nit: the other "Try to ..." comments here are all followed up by "this shou
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@524
PS4, Line 524:   // But adding a new data dir elsewhere in the list is OK.
> And reword this too.
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.h
File src/kudu/fs/fs_manager.h:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.h@90
PS4, Line 90: or the first configured data root if it already contains
:   // existing metadata.
> Would it be clearer if we additionally specified that this fallback behavio
Hm, I didn't explicitly call it out, but I reworded it to hopefully clarify 
that the first data dir is only used if metadata exists there from a previous 
deployment. Let me know what you think.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc
File src/kudu/fs/fs_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@93
PS4, Line 93: DEFINE_string(fs_metadata_dir, "",
> There should be a mention here of the fallback behavior for existing system
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@94
PS4, Line 94: Must be equivalent to fs_wal_dir or a
> I thought this wasn't true anymore?
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@95
PS4, Line 95: fs_dataA_dirs
> fs_data_dirs
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@253
PS4, Line 253: // Check the first data root for metadata.
> Could you LOG here what we actually used for the metadata directory, a la L
Done


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@256
PS4, Line 256: // If there is no metadata in the first data root, use the 
WAL root.
> Hmm, but we wouldn't want to do this fallback when creating a brand new fil
Is your concern that if the FS layout already partially exists, but not 
completely (such that fs_manager()->Open() fails,  but fs_manager()->Create() 
succeeds), we may end up going through CreateInitialFileSystemLayout() with the 
first data root storing metadata?

That could happen if they fail to start up a cluster with Kudu 1.6, upgrade to 
Kudu 1.7, and then start up successfully. I think I'm ok with this though, 
although a simple update would be to also check whether the metadata directory 
is empty, in which case we could use the WAL dir. What do you think?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@265
PS4, Line 265: const auto& canonicalized_metadata_root = 
canonicalized_metadata_fs_root_;
> Why do we need this local?
Done


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

[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, David Ribeiro Alves, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a bottleneck. Often times the drive containing the WALs is a
better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

New test cases are added to fs_manager-test, and a test case in
data_dirs-test is updated as a sanity check to show that we can now open
the directory manager with a failed first data directory (previously
this codepath would hit D/CHECK failures).

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
7 files changed, 173 insertions(+), 64 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/27/9027/7
--
To view, visit http://gerrit.cloudera.org:8080/9027
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 7
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9037 )

Change subject: heavy-update-compaction-itest
..


Patch Set 1:

(5 comments)

http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc
File src/kudu/integration-tests/heavy-update-compaction-itest.cc:

http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@92
PS1, Line 92: 
b.AddColumn("val_a")->Type(KuduColumnSchema::STRING)->NotNull();
> Maybe parameterize (or at least store in a class constant) the number of st
Done


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@168
PS1, Line 168: 100 rows.
> nit: might not be 100, right?
Done


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@217
PS1, Line 217:  scanner.SetTimeoutMillis(120 * 1000);
> make this a flag so that we can change this if we change "rows" or "rounds"
Done


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@225
PS1, Line 225: const auto &
> Nit: const auto&
Done


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@230
PS1, Line 230:   EXPECT_EQ(actual_val, 
final_values[final_values_offset++]);
> Nit: just curious why you used EXPECT here and not ASSERT, given that the o
I don't consider this to be a fatal failure, since the test can keep going if 
it fails without causing a logic or memory-safety error. The upside is that if 
this case were to fail it may be easier to debug if you get the full set of 
errors instead of short circuiting.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 1
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 20:14:38 +
Gerrit-HasComments: Yes


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread Dan Burkert (Code Review)
Hello David Ribeiro Alves, Kudu Jenkins, Adar Dembo, Todd Lipcon,

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

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

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

Change subject: heavy-update-compaction-itest
..

heavy-update-compaction-itest

This is an integration test which simulates an extremely update-heavy
workload. It was written while trying to repro KUDU-2251, and
subsequently led to discovering the issues in KUDU-2253.

Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
---
M src/kudu/integration-tests/CMakeLists.txt
A src/kudu/integration-tests/heavy-update-compaction-itest.cc
2 files changed, 245 insertions(+), 0 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 2
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread David Ribeiro Alves (Code Review)
David Ribeiro Alves has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9027 )

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 6:

(7 comments)

first pass. mostly looked at the test.
it'd be nice to have a more integration-y test that tests at least the most 
worrysome cases (downgrade/upgrade most likely scenarios)

http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/block_manager_util.cc
File src/kudu/fs/block_manager_util.cc:

http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/block_manager_util.cc@176
PS6, Line 176: LoadInstnaces
typo


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc
File src/kudu/fs/fs_manager-test.cc:

http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@248
PS6, Line 248: "wal"
could we be more specific? maybe look for full suffix?


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@255
PS6, Line 255:   LOG(INFO) << s.ToString();
leftover from testing? if you want to print the status on failure you can do so 
on the assert below


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@258
PS6, Line 258: env_->DeleteRecursively(GetTestPath("wal"));
 :   env_->DeleteRecursively(GetTestPath("data"));
check the status


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@263
PS6, Line 263:   opts.metadata_root = GetTestPath("data");
 :   ReinitFsManagerWithOpts(opts);
 :   ASSERT_OK(fs_manager()->CreateInitialFileSystemLayout());
 :   ASSERT_OK(fs_manager()->Open());
 :   ASSERT_STR_CONTAINS(fs_manager()->GetTabletMetadataDir(), 
"data");
in the case before this one you test with a metadata root path that does not 
exist, before you delete the data/wal could you test that if the metadata root 
is set to the old value (like in this case) it fails too?


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@269
PS6, Line 269:   // Opening the FsManager with an empty fs_metadata_dir flag 
should account
 :   // for the old default and use the first data directory for 
metadata.
wait, empty string is different from "unset"? why?


http://gerrit.cloudera.org:8080/#/c/9027/6/src/kudu/fs/fs_manager-test.cc@276
PS6, Line 276:   env_->DeleteRecursively(GetTestPath("wal"));
 :   env_->DeleteRecursively(GetTestPath("data"));
same



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 6
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Tue, 16 Jan 2018 20:07:00 +
Gerrit-HasComments: Yes


[kudu-CR] mini-cluster: rename data root to cluster root

2018-01-16 Thread David Ribeiro Alves (Code Review)
David Ribeiro Alves has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9033 )

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 3: Code-Review+1


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 3
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:52:25 +
Gerrit-HasComments: No


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread David Ribeiro Alves (Code Review)
David Ribeiro Alves has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9037 )

Change subject: heavy-update-compaction-itest
..


Patch Set 1:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc
File src/kudu/integration-tests/heavy-update-compaction-itest.cc:

http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@168
PS1, Line 168: 100 rows.
nit: might not be 100, right?


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@217
PS1, Line 217:  scanner.SetTimeoutMillis(120 * 1000);
make this a flag so that we can change this if we change "rows" or "rounds"



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 1
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:50:44 +
Gerrit-HasComments: Yes


[kudu-CR] WIP [rpc] don't issue authn tokens over non-confidential connections

2018-01-16 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9025 )

Change subject: WIP [rpc] don't issue authn tokens over non-confidential 
connections
..


Patch Set 1:

(1 comment)

LGTM, I agree about the need for a test.

http://gerrit.cloudera.org:8080/#/c/9025/1/src/kudu/rpc/negotiation.cc
File src/kudu/rpc/negotiation.cc:

http://gerrit.cloudera.org:8080/#/c/9025/1/src/kudu/rpc/negotiation.cc@224
PS1, Line 224:   (conn->socket()->IsLoopbackConnection() && 
!FLAGS_rpc_encrypt_loopback_connections));
This LGTM.  I originally expected it would just be

client_negotiation.tls_negotiated() || 
conn->socket()->IsLoopbackConnection()

But I think it makes sense to also gate on rpc-encrypt-loopback-connections in 
order to allow opting-out of this behavior, and I think it makes sense to do it 
with the same flag in both instances.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie31aa492bcc460dbd43975bccfe571354f3bf885
Gerrit-Change-Number: 9025
Gerrit-PatchSet: 1
Gerrit-Owner: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:39:17 +
Gerrit-HasComments: Yes


[kudu-CR] build: Move fake XML file generation to run-test.sh

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

Change subject: build: Move fake XML file generation to run-test.sh
..


Patch Set 3:

(1 comment)

I can think of another reason why it may have been done in build-and-test.sh: 
during precommit, run-test.sh is run on individual distributed test slaves 
rather than the orchestrating Jenkins slave. Could you check that "generated" 
JUnit XML files make their way from dist-test slaves back to the orchestrator?

http://gerrit.cloudera.org:8080/#/c/8984/3/build-support/run-test.sh
File build-support/run-test.sh:

http://gerrit.cloudera.org:8080/#/c/8984/3/build-support/run-test.sh@221
PS3, Line 221: if [ ! -f "$XMLFILE" ]; then
Should this be conditioned on STATUS != 0?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Iaa89c806039a96ac0a6b7262ded74f70f49f87ac
Gerrit-Change-Number: 8984
Gerrit-PatchSet: 3
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Edward Fancher 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:37:53 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

2018-01-16 Thread Grant Henke (Code Review)
Hello Tidy Bot, Alexey Serbin, Dan Burkert, Kudu Jenkins, Adar Dembo, Todd 
Lipcon,

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

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

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

Change subject: KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)
..

KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

Introduces the Decimal type to the server and
C++ client. Follow on work will enhance the
utility in the client and add support to the
Java client and other integrations and add
documentation.

The decimal type has column type attributes to
support the “parameterized type”. The precision
and scale column type attributes are not stored
with each value, but instead are leveraged to map
to a correctly sized internal type
(DECIMAL32, DECIMAL64, DECIMAL128). These
internal types are represented and stored as
equivalently sized integers.

This also removes the int128 suffixes because
they break the client by using C++11 features.
They may be added back in a different way later.

Change-Id: I3b06142f43c66973f36376bd2c88ca6f8d9f7632
---
M src/kudu/client/CMakeLists.txt
M src/kudu/client/scan_batch.cc
M src/kudu/client/scan_batch.h
M src/kudu/client/schema-internal.h
M src/kudu/client/schema.cc
M src/kudu/client/schema.h
M src/kudu/client/value-internal.h
M src/kudu/client/value.cc
M src/kudu/client/value.h
M src/kudu/common/CMakeLists.txt
M src/kudu/common/common.proto
A src/kudu/common/decimal.cc
A src/kudu/common/decimal.h
M src/kudu/common/partial_row.cc
M src/kudu/common/partial_row.h
M src/kudu/common/schema-test.cc
M src/kudu/common/schema.cc
M src/kudu/common/schema.h
M src/kudu/common/types.cc
M src/kudu/common/types.h
M src/kudu/common/wire_protocol.cc
M src/kudu/consensus/log-test.cc
M src/kudu/integration-tests/CMakeLists.txt
M src/kudu/integration-tests/all_types-itest.cc
A src/kudu/integration-tests/decimal-itest.cc
M src/kudu/util/int128-test.cc
M src/kudu/util/int128.h
27 files changed, 868 insertions(+), 164 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/30/8830/11
--
To view, visit http://gerrit.cloudera.org:8080/8830
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b06142f43c66973f36376bd2c88ca6f8d9f7632
Gerrit-Change-Number: 8830
Gerrit-PatchSet: 11
Gerrit-Owner: Grant Henke 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] heavy-update-compaction-itest

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

Change subject: heavy-update-compaction-itest
..


Patch Set 1:

(3 comments)

http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc
File src/kudu/integration-tests/heavy-update-compaction-itest.cc:

http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@92
PS1, Line 92: 
b.AddColumn("val_a")->Type(KuduColumnSchema::STRING)->NotNull();
Maybe parameterize (or at least store in a class constant) the number of string 
rows? Would also help avoid the "i <= 5" magic numbers below.


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@225
PS1, Line 225: const auto &
Nit: const auto&


http://gerrit.cloudera.org:8080/#/c/9037/1/src/kudu/integration-tests/heavy-update-compaction-itest.cc@230
PS1, Line 230:   EXPECT_EQ(actual_val, 
final_values[final_values_offset++]);
Nit: just curious why you used EXPECT here and not ASSERT, given that the other 
checks in this test are all ASSERT?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 1
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:34:37 +
Gerrit-HasComments: Yes


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9037 )

Change subject: heavy-update-compaction-itest
..


Patch Set 1:

Note for reviewers: this test was included in revision 6 of 
https://gerrit.cloudera.org/#/c/8951/.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 1
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:33:32 +
Gerrit-HasComments: No


[kudu-CR] KUDU-721: [Java] Add DECIMAL column type support

2018-01-16 Thread Grant Henke (Code Review)
Hello Dan Burkert, Kudu Jenkins,

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

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

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

Change subject: KUDU-721: [Java] Add DECIMAL column type support
..

KUDU-721: [Java] Add DECIMAL column type support

This patch adds basic support to the Java client to
create, read, and write tables with DECIMAL columns.

Change-Id: I6240e3cfe0d6328b68c50099d442ffeeab6c9fd9
---
M java/kudu-client/src/main/java/org/apache/kudu/ColumnSchema.java
A java/kudu-client/src/main/java/org/apache/kudu/ColumnTypeAttributes.java
M java/kudu-client/src/main/java/org/apache/kudu/Schema.java
M java/kudu-client/src/main/java/org/apache/kudu/Type.java
M java/kudu-client/src/main/java/org/apache/kudu/client/Bytes.java
M 
java/kudu-client/src/main/java/org/apache/kudu/client/ColumnRangePredicate.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KeyEncoder.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KuduPredicate.java
M java/kudu-client/src/main/java/org/apache/kudu/client/KuduScanToken.java
M java/kudu-client/src/main/java/org/apache/kudu/client/Operation.java
M java/kudu-client/src/main/java/org/apache/kudu/client/PartialRow.java
M java/kudu-client/src/main/java/org/apache/kudu/client/ProtobufHelper.java
M java/kudu-client/src/main/java/org/apache/kudu/client/RowResult.java
A java/kudu-client/src/main/java/org/apache/kudu/util/DecimalUtil.java
M java/kudu-client/src/test/java/org/apache/kudu/client/BaseKuduTest.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestBytes.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestPartialRow.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestRowResult.java
M src/kudu/integration-tests/decimal-itest.cc
19 files changed, 968 insertions(+), 44 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6240e3cfe0d6328b68c50099d442ffeeab6c9fd9
Gerrit-Change-Number: 8882
Gerrit-PatchSet: 4
Gerrit-Owner: Grant Henke 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2208 Add RETRY ON EINTR() to Subprocess

2018-01-16 Thread Jeffrey F. Lukman (Code Review)
Hello Kudu Jenkins, Todd Lipcon,

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

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

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

Change subject: KUDU-2208 Add RETRY_ON_EINTR() to Subprocess
..

KUDU-2208 Add RETRY_ON_EINTR() to Subprocess

This patch submits a unit test that create a Subprocess thread
and while it is starting and waiting, another thread sends kill signals
to the Subprocess thread. Since the pthread_kill() signal is sent
asynchronously, sometimes the pthread_kill() raises error signal 3.
In that condition, the unit test logs the incident as an INFO.

Prior to this bug fix patch, the Subprocess throws an exception
because it cannot handle the kill signal in Wait() state. To fix the bug,
we add RETRY_ON_EINTR() inside Subprocess::DoWait() function.

Furthermore, this patch also moves the RETRY_ON_EINTR() function
that occurs in many places across the code to os-util.h and it adds
alarm reset in the end of TestReadFromStdoutAndStderr in
Subprocess-test.

Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
---
M src/kudu/consensus/log_index.cc
M src/kudu/util/env_posix.cc
M src/kudu/util/net/socket.cc
M src/kudu/util/os-util.h
M src/kudu/util/subprocess-test.cc
M src/kudu/util/subprocess.cc
6 files changed, 74 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/15/9015/10
--
To view, visit http://gerrit.cloudera.org:8080/9015
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I148b4619a8dda8e3e95dd6ea5c6e993a9e37a333
Gerrit-Change-Number: 9015
Gerrit-PatchSet: 10
Gerrit-Owner: Jeffrey F. Lukman 
Gerrit-Reviewer: Jeffrey F. Lukman 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] build: Move fake XML file generation to run-test.sh

2018-01-16 Thread Edward Fancher (Code Review)
Edward Fancher has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/8984 )

Change subject: build: Move fake XML file generation to run-test.sh
..


Patch Set 3: Code-Review+1


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Iaa89c806039a96ac0a6b7262ded74f70f49f87ac
Gerrit-Change-Number: 8984
Gerrit-PatchSet: 3
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Edward Fancher 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:30:54 +
Gerrit-HasComments: No


[kudu-CR] heavy-update-compaction-itest

2018-01-16 Thread Dan Burkert (Code Review)
Hello David Ribeiro Alves, Adar Dembo, Todd Lipcon,

I'd like you to do a code review. Please visit

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

to review the following change.


Change subject: heavy-update-compaction-itest
..

heavy-update-compaction-itest

This is an integration test which simulates an extremely update-heavy
workload. It was written while trying to repro KUDU-2251, and
subsequently led to discovering the issues in KUDU-2253.

Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
---
M src/kudu/integration-tests/CMakeLists.txt
A src/kudu/integration-tests/heavy-update-compaction-itest.cc
2 files changed, 239 insertions(+), 0 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie2e30c63e1fedafe1eeb672346700ee8c5e2bb2c
Gerrit-Change-Number: 9037
Gerrit-PatchSet: 1
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: David Ribeiro Alves 
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-2202: support for removing data directories (take two)

2018-01-16 Thread Adar Dembo (Code Review)
Hello Kudu Jenkins, Andrew Wong, Todd Lipcon,

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

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

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

Change subject: KUDU-2202: support for removing data directories (take two)
..

KUDU-2202: support for removing data directories (take two)

This commit extends "kudu fs update_dirs" to allow the removal of data
directories. A data dir may be removed provided there are no tablets
configured to use it. The --force flag may be used to override this safety
check; tablets that depend on the removed data dir will fail to bootstrap
the next time the server is started.

I'll be the first to admit that this functionality isn't terribly useful at
the moment because Kudu deployments are configured to stripe data across all
data directories, so removing a data dir will fail all tablets, which is
equivalent to reformatting the node. Nevertheless, it will become more
useful as users customize the new --fs_target_data_dirs_per_tablet gflag.

This is the second attempt at implementing this functionality. The first
used a different interface and was vulnerable to a data loss issue
documented in KUDU-2202. Andrew fixed that in commit 47b81c4, which reopens
the door for safely removing data directories.

I considered a stronger check that only prohibits data dir removal if there
were data blocks on the to-be-removed data dir, but decided against it:
- It's rare to find a tablet configured to use a data dir but without any
  actual blocks on it. In fact, that's only likely for empty tables, or
  tables with empty range partitions.
- We'd still need to rewrite any unaffected tablet superblocks and remove
  the data dir from their data dir groups.

There are several interesting modifications here:
1. PathInstanceMetadataFile::CheckIntegrity can now be run without checking
   for missing instance files. This is used when removing a data dir (its
   instance file will be missing).
2. The DataDirManager and FsManager may now be constructed with both
   read_only=true and update_on_disk=true. The CLI tool leverages this
   functionality to create a "speculative" FsManager using the new data dir
   configuration that is used to check whether existing tablets depend on
   the data dir to be removed.
3. The DataDirManager now checks for integrity after making on-disk changes.
   While not strictly necessary, this seems like a good sanity check to
   avoid introducing bugs.
4. The "kudu fs update_dirs" action was updated for data dir removal. It now
   accepts the --force option, without which removal will only be allowed if
   no tablets are configured to use the removed data dir.

Change-Id: Iacb650115bcdf055542ef2777641a3201fc8e30b
---
M src/kudu/fs/block_manager_util-test.cc
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/block_manager_util.h
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/data_dirs.h
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool_action_fs.cc
10 files changed, 344 insertions(+), 90 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Iacb650115bcdf055542ef2777641a3201fc8e30b
Gerrit-Change-Number: 8978
Gerrit-PatchSet: 5
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] rpc: allow setting --rpc tls min protocol on older RHEL versions

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

Change subject: rpc: allow setting --rpc_tls_min_protocol on older RHEL versions
..


Patch Set 2:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/7821/2/src/kudu/security/tls_context.cc
File src/kudu/security/tls_context.cc:

http://gerrit.cloudera.org:8080/#/c/7821/2/src/kudu/security/tls_context.cc@52
PS2, Line 52: // --rpc-tls-min-protocol=TLSv1.2 option, negotiations will fail 
at runtime with
: // a 'missing protocol' error:
: /
> I think it's possible to look at SSLv23_method()->version just after initia
In other words, SSLv23_method()->version reports the highest version of the 
TLS/SSL protocol supported by the OpenSSL  library.  And it's straightforward 
to compare the reported version with the required protocol version:

SSL2_VERSION0x0002   
SSL3_VERSION0x0300 
TLS1_VERSION0x0301
TLS1_1_VERSION  0x0302
TLS1_2_VERSION  0x0303



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ic61f31788d63072fae609c6a2186e52d5e2467b7
Gerrit-Change-Number: 7821
Gerrit-PatchSet: 2
Gerrit-Owner: Dan Burkert 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Henry Robinson 
Gerrit-Reviewer: Sailesh Mukil 
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:19:05 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

2018-01-16 Thread Grant Henke (Code Review)
Hello Tidy Bot, Alexey Serbin, Dan Burkert, Kudu Jenkins, Adar Dembo, Todd 
Lipcon,

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

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

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

Change subject: KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)
..

KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

Introduces the Decimal type to the server and
C++ client. Follow on work will enhance the
utility in the client and add support to the
Java client and other integrations and add
documentation.

The decimal type has column type attributes to
support the “parameterized type”. The precision
and scale column type attributes are not stored
with each value, but instead are leveraged to map
to a correctly sized internal type
(DECIMAL32, DECIMAL64, DECIMAL128). These
internal types are represented and stored as
equivalently sized integers.

This also removes the int128 suffixes because
they break the client by using C++11 features.
They may be added back in a different way later.

Change-Id: I3b06142f43c66973f36376bd2c88ca6f8d9f7632
---
M src/kudu/client/CMakeLists.txt
M src/kudu/client/scan_batch.cc
M src/kudu/client/scan_batch.h
M src/kudu/client/schema-internal.h
M src/kudu/client/schema.cc
M src/kudu/client/schema.h
M src/kudu/client/value-internal.h
M src/kudu/client/value.cc
M src/kudu/client/value.h
M src/kudu/common/CMakeLists.txt
M src/kudu/common/common.proto
A src/kudu/common/decimal.cc
A src/kudu/common/decimal.h
M src/kudu/common/partial_row.cc
M src/kudu/common/partial_row.h
M src/kudu/common/schema-test.cc
M src/kudu/common/schema.cc
M src/kudu/common/schema.h
M src/kudu/common/types.cc
M src/kudu/common/types.h
M src/kudu/common/wire_protocol.cc
M src/kudu/consensus/log-test.cc
M src/kudu/integration-tests/CMakeLists.txt
M src/kudu/integration-tests/all_types-itest.cc
A src/kudu/integration-tests/decimal-itest.cc
M src/kudu/util/int128-test.cc
M src/kudu/util/int128.h
27 files changed, 867 insertions(+), 164 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/30/8830/10
--
To view, visit http://gerrit.cloudera.org:8080/8830
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b06142f43c66973f36376bd2c88ca6f8d9f7632
Gerrit-Change-Number: 8830
Gerrit-PatchSet: 10
Gerrit-Owner: Grant Henke 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-2202: support for removing data directories (take two)

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

Change subject: KUDU-2202: support for removing data directories (take two)
..


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8978/4/src/kudu/fs/data_dirs.cc
File src/kudu/fs/data_dirs.cc:

http://gerrit.cloudera.org:8080/#/c/8978/4/src/kudu/fs/data_dirs.cc@810
PS4, Line 810: list of data directories now
 : // includes the missing directory.
> nit: If I'm understanding this correctly, the update should have removed th
Ah yes, will update.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Iacb650115bcdf055542ef2777641a3201fc8e30b
Gerrit-Change-Number: 8978
Gerrit-PatchSet: 4
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:17:50 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

2018-01-16 Thread Grant Henke (Code Review)
Hello Tidy Bot, Alexey Serbin, Dan Burkert, Kudu Jenkins, Adar Dembo, Todd 
Lipcon,

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

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

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

Change subject: KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)
..

KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

Introduces the Decimal type to the server and
C++ client. Follow on work will enhance the
utility in the client and add support to the
Java client and other integrations and add
documentation.

The decimal type has column type attributes to
support the “parameterized type”. The precision
and scale column type attributes are not stored
with each value, but instead are leveraged to map
to a correctly sized internal type
(DECIMAL32, DECIMAL64, DECIMAL128). These
internal types are represented and stored as
equivalently sized integers.

This also removes the int128 suffixes because they break the
client by using C++11 features. They may be added back in a
different way later.

Change-Id: I3b06142f43c66973f36376bd2c88ca6f8d9f7632
---
M src/kudu/client/CMakeLists.txt
M src/kudu/client/scan_batch.cc
M src/kudu/client/scan_batch.h
M src/kudu/client/schema-internal.h
M src/kudu/client/schema.cc
M src/kudu/client/schema.h
M src/kudu/client/value-internal.h
M src/kudu/client/value.cc
M src/kudu/client/value.h
M src/kudu/common/CMakeLists.txt
M src/kudu/common/common.proto
A src/kudu/common/decimal.cc
A src/kudu/common/decimal.h
M src/kudu/common/partial_row.cc
M src/kudu/common/partial_row.h
M src/kudu/common/schema-test.cc
M src/kudu/common/schema.cc
M src/kudu/common/schema.h
M src/kudu/common/types.cc
M src/kudu/common/types.h
M src/kudu/common/wire_protocol.cc
M src/kudu/consensus/log-test.cc
M src/kudu/integration-tests/CMakeLists.txt
M src/kudu/integration-tests/all_types-itest.cc
A src/kudu/integration-tests/decimal-itest.cc
M src/kudu/util/int128-test.cc
M src/kudu/util/int128.h
27 files changed, 867 insertions(+), 164 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/30/8830/9
--
To view, visit http://gerrit.cloudera.org:8080/8830
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b06142f43c66973f36376bd2c88ca6f8d9f7632
Gerrit-Change-Number: 8830
Gerrit-PatchSet: 9
Gerrit-Owner: Grant Henke 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Grant Henke 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon 


[kudu-CR] KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)

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

Change subject: KUDU-721: Support for Decimal type, Part 1 (Server, C++ Client)
..


Patch Set 8:

(21 comments)

Still tweaking the decimal impl a bit and adding some tests, but pushing an 
update for review and discussion.

http://gerrit.cloudera.org:8080/#/c/8830/8//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/8830/8//COMMIT_MSG@17
PS8, Line 17: stored
> not stored? it must be stored in the metadata somewhere right?
Right, I should clarify. What I mean is they are not serialized with each 
value. I will update this.


http://gerrit.cloudera.org:8080/#/c/8830/8//COMMIT_MSG@24
PS8, Line 24: int128 suffixes
> perhaps we should guard them with a preprocessor check for c++11 instead?
Yeah, I think we should. I want to do that in a separate patch since the base 
functionality block progress on the Impala side. I can remove it in a separate 
patch too if that helps.


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.h
File src/kudu/client/schema.h:

http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.h@63
PS8, Line 63: class KuduColumnTypeAttributes {
> should this be exported for users? If so I think we need to PIMPL it for AB
Yes, this should be exported. I will add KUDU_EXPORT. I modeled this to match 
KuduColumnStorageAttributes which doesn't use PImpl. Do you know why?


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.h@177
PS8, Line 177:   /// @todo KUDU-809: make this hard-to-use constructor private.
 :   ///   Clients should use the Builder API. Currently only the 
Python API
 :   ///   uses this old API.
> this has been deprecated for several releases now and I dont think python u
Oh right, even defaulted arguments aren't compatible.
I can make remove (make it private) if thats the route we should take.


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.h@323
PS8, Line 323: floating-point
> it's not floating point, right?
This was taken right from the Impala docs.
I agree though, I think a more accurate term would be "fractional".


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.h@328
PS8, Line 328:   /// The precision must be between 0 and 38.
> curious what a precision of 0 means... that can only store the value 0?
Should be between 1 and 0.


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.h@343
PS8, Line 343:   /// columns precision.
> typo: column's
Done


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc
File src/kudu/client/schema.cc:

http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@133
PS8, Line 133:   return kudu::DECIMAL128;
> nit: weird indentation
Done


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@153
PS8, Line 153: case kudu::DECIMAL32 : return KuduColumnSchema::DECIMAL;
> nit: extra space
Done


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@266
PS8, Line 266:   return Status::InvalidArgument("no scale provided for 
decimal column", data_->name);
> is a default scale of 0 not reasonable? I seem to recall that sql allows DE
This was discussed some on the design doc, but we never settled for sure. I 
think a default scale of 0 is reasonable and fairly common. Happy to change to 
use that default.


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@285
PS8, Line 285:   }
> can we check that no precision/scale are specified for non-decimal column t
Absolutely. Will add that.


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@287
PS8, Line 287:   int32_t precision = 0;
 :   if (data_->has_precision) {
 : precision = data_->precision;
 :   }
> think ternary would be easier to read here and below
agreed.


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@297
PS8, Line 297:   KuduColumnTypeAttributes kuduColumnTypeAttributes =
> nit: var name style
Done


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/client/schema.cc@641
PS8, Line 641: typeAttrs
> nit: style
Done


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/common/decimal.h
File src/kudu/common/decimal.h:

http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/common/decimal.h@53
PS8, Line 53:static const int32_t MIN_DECIMAL_PRECISION = 0;
> see comment elsewhere about precision 0
Done


http://gerrit.cloudera.org:8080/#/c/8830/8/src/kudu/common/decimal.h@63
PS8, Line 63:explicit Decimal(int128_t s) :
> I sort of feel like this Decimal instance should retain its precision and s
Yeah, I commented that I was pretty conflicted about this too on one of Dan's 
reviews. Had I created this class with no reference at all I would definitely 
have gone that route.

The only thing that made me leave off precision and scale was the Impala 

[kudu-CR] mini-cluster: rename data root to cluster root

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

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 3:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9033/3/src/kudu/mini-cluster/external_mini_cluster.h
File src/kudu/mini-cluster/external_mini_cluster.h:

http://gerrit.cloudera.org:8080/#/c/9033/3/src/kudu/mini-cluster/external_mini_cluster.h@90
PS3, Line 90:   // Directory in which to store data.
Maybe update this?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 3
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:14:58 +
Gerrit-HasComments: Yes


[kudu-CR](branch-1.5.x) KUDU-2193 (part 2): avoid holding TSTabletManager::lock for a long time

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

Change subject: KUDU-2193 (part 2): avoid holding TSTabletManager::lock_ for a 
long time
..


Patch Set 1: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: branch-1.5.x
Gerrit-MessageType: comment
Gerrit-Change-Id: I0f645775e8347a18af112b308dba56a3b4a2c681
Gerrit-Change-Number: 8526
Gerrit-PatchSet: 1
Gerrit-Owner: Todd Lipcon 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:10:29 +
Gerrit-HasComments: No


[kudu-CR](branch-1.4.x) KUDU-2193 (part 2): avoid holding TSTabletManager::lock for a long time

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

Change subject: KUDU-2193 (part 2): avoid holding TSTabletManager::lock_ for a 
long time
..


Patch Set 1: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: branch-1.4.x
Gerrit-MessageType: comment
Gerrit-Change-Id: I0f645775e8347a18af112b308dba56a3b4a2c681
Gerrit-Change-Number: 8528
Gerrit-PatchSet: 1
Gerrit-Owner: Todd Lipcon 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Will Berkeley 
Gerrit-Comment-Date: Tue, 16 Jan 2018 19:10:36 +
Gerrit-HasComments: No


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 6:

(18 comments)

http://gerrit.cloudera.org:8080/#/c/9027/4//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/9027/4//COMMIT_MSG@20
PS4, Line 20: It is up to the user to take caution in changing this flag; 
updating the
: flag without also manually moving any existing metadata will 
cause Kudu
: to fail at startup.
Isn't the same true of fs_wal_dir and fs_data_dirs? Or is changing 
fs_metadata_dir somehow more dangerous?

I guess what I'm asking is: why call this out explicitly if it works the same 
way as those other flags?


http://gerrit.cloudera.org:8080/#/c/9027/4//COMMIT_MSG@29
PS4, Line 29: cases
Nit: case


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/block_manager_util.cc
File src/kudu/fs/block_manager_util.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/block_manager_util.cc@176
PS4, Line 176:   DCHECK_NE(first_healthy, -1); // Guaranteed by 
DataDirManager::LoadInstnaces().
Can we not depend on this, and instead return a bad status if there are no 
healthy instances? Seems like a weird dependency since this is a "util" 
function that ostensibly could be called from anywhere.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc
File src/kudu/fs/fs_manager-test.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@258
PS4, Line 258:   env_->DeleteRecursively(GetTestPath("wal"));
 :   env_->DeleteRecursively(GetTestPath("data"));
Maybe use different tests so you needn't clean up in between?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@271
PS4, Line 271:   opts.metadata_root = "";
Maybe opts.metadata_root.clear() would be more idiomatic?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@284
PS4, Line 284:   ASSERT_OK(fs_manager()->Open());
After this could you check that the WAL root and the metadata root aren't the 
same?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@288
PS4, Line 288:   opts.metadata_root = "";
.clear() here too.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@517
PS4, Line 517:   // Try to open with a new data dir at the front of the list.
Nit: the other "Try to ..." comments here are all followed up by "this should 
fail", but this no longer fails. Reword?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager-test.cc@524
PS4, Line 524:   // But adding a new data dir elsewhere in the list is OK.
And reword this too.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.h
File src/kudu/fs/fs_manager.h:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.h@90
PS4, Line 90: or the first configured data root if it already contains
:   // existing metadata.
Would it be clearer if we additionally specified that this fallback behavior 
only takes effect when opening an existing filesystem? That is, when creating a 
new filesystem, it's just "verbatim, or WAL dir if empty"?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc
File src/kudu/fs/fs_manager.cc:

http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@93
PS4, Line 93: DEFINE_string(fs_metadata_dir, "",
There should be a mention here of the fallback behavior for existing systems.


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@94
PS4, Line 94: Must be equivalent to fs_wal_dir or a
I thought this wasn't true anymore?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@95
PS4, Line 95: fs_dataA_dirs
fs_data_dirs


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@253
PS4, Line 253: // Check the first data root for metadata.
Could you LOG here what we actually used for the metadata directory, a la 
L243-244?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@256
PS4, Line 256: // If there is no metadata in the first data root, use the 
WAL root.
Hmm, but we wouldn't want to do this fallback when creating a brand new 
filesystem. Does it actually matter? Is it possible for CreateFileSystemLayout 
to succeed if meta_dir_in_data_root already exists?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@265
PS4, Line 265: const auto& canonicalized_metadata_root = 
canonicalized_metadata_fs_root_;
Why do we need this local?


http://gerrit.cloudera.org:8080/#/c/9027/4/src/kudu/fs/fs_manager.cc@421
PS4, Line 421:   if 
(dd_manager_->FindUuidIndexByRoot(canonicalized_metadata_fs_root_.path, 
&metadata_idx) &&
I'm confused; why would the DataDirManager be aware of the metadata root, since 
it's no longer guaranteed to be colocated with the data directory?

Oh, this is just for the

[kudu-CR] mini-cluster: rename data root to cluster root

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

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 3:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9033/1//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/9033/1//COMMIT_MSG@17
PS1, Line 17: As such, this patch renames External- and 
InternalMiniClusterOptions'
> Could you make the same change to the InternalMiniCluster too?
Done



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 3
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 18:52:02 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 5:

Sorry, pushed accidentally in conjunction with another patch. Reverting to 
patch set 4.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 5
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Tue, 16 Jan 2018 18:51:48 +
Gerrit-HasComments: No


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a bottleneck. Often times the drive containing the WALs is a
better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

It is up to the user to take caution in changing this flag; updating the
flag without also manually moving any existing metadata will cause Kudu
to fail at startup.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

A new test cases is added to fs_manager-test, and a test case in
data_dirs-test is updated as a sanity check to show that we can now open
the directory manager with a failed first data directory (previously
this codepath would hit D/CHECK failures).

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
7 files changed, 160 insertions(+), 58 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 6
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] mini-cluster: rename data root to cluster root

2018-01-16 Thread Andrew Wong (Code Review)
Hello Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: mini-cluster: rename data_root to cluster_root
..

mini-cluster: rename data_root to cluster_root

I found that the name data_root for the root directory in which to place
the cluster's data and logs was a confusing name because:
  1. we use "data" here loosely to describe any old bytes, encompassing
 not only data blocks, but WALs and logs as well, and
  2. the concept of a "data root" already exists to mean a
 user-specified location to place data blocks (i.e. an entry in
 fs_data_dirs).

As such, this patch renames External- and InternalMiniClusterOptions'
"data_root" members to "cluster_root".

Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
---
M src/kudu/benchmarks/tpch/tpch1.cc
M src/kudu/benchmarks/tpch/tpch_real_world.cc
M src/kudu/integration-tests/ts_itest-base.cc
M src/kudu/mini-cluster/external_mini_cluster.cc
M src/kudu/mini-cluster/external_mini_cluster.h
M src/kudu/mini-cluster/internal_mini_cluster.cc
M src/kudu/mini-cluster/internal_mini_cluster.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool.proto
M src/kudu/tools/tool_action_test.cc
10 files changed, 41 insertions(+), 41 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 2
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] fs: move metadata to the WAL directory

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: fs: move metadata to the WAL directory
..

fs: move metadata to the WAL directory

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
2 files changed, 8 insertions(+), 0 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 5
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] KUDU-1489: allow configuration of metadata dir

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

Change subject: KUDU-1489: allow configuration of metadata dir
..


Patch Set 4:

I think we should merge KUDU-2202 before merging this (will need to update a 
couple of things), but feel free to review this in it's current form.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Comment-Date: Tue, 16 Jan 2018 18:48:34 +
Gerrit-HasComments: No


[kudu-CR] tools: Add debug mode to pb dump tool

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

Change subject: tools: Add debug mode to pb dump tool
..


Patch Set 1:

(5 comments)

http://gerrit.cloudera.org:8080/#/c/9024/1//COMMIT_MSG
Commit Message:

PS1:
Could you add a short test to kudu-tool-test? A run with --debug and a check 
for the presence of additional output should suffice.


http://gerrit.cloudera.org:8080/#/c/9024/1//COMMIT_MSG@13
PS1, Line 13: TODO: Should this be called "verbose" mode instead of debug mode?
I don't think it really matters, since the additional information is just for 
debugging.


http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/tools/tool_action_pbc.cc
File src/kudu/tools/tool_action_pbc.cc:

http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/tools/tool_action_pbc.cc@92
PS1, Line 92:   }
Nit: could you add an else that does LOG(FATAL) or something like that?


http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/tools/tool_action_pbc.cc@232
PS1, Line 232:   .AddOptionalParameter("oneline")
Should add debug here.


http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/util/pb_util.cc
File src/kudu/util/pb_util.cc:

http://gerrit.cloudera.org:8080/#/c/9024/1/src/kudu/util/pb_util.cc@937
PS1, Line 937: "---"
Nit: if this is now being used in three places, perhaps make it a constant so 
there's no worry about the number of dashes being different in each of the 
three places?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ica2a74a2e252d140cf7704ff68037a64db19cd80
Gerrit-Change-Number: 9024
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 18:41:35 +
Gerrit-HasComments: Yes


[kudu-CR] mini-cluster: rename data root to cluster root

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

Change subject: mini-cluster: rename data_root to cluster_root
..


Patch Set 1:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9033/1//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/9033/1//COMMIT_MSG@17
PS1, Line 17: As such, this patch renames ExternalMiniClusterOptions's 
data_root to
Could you make the same change to the InternalMiniCluster too?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
Gerrit-Change-Number: 9033
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Tue, 16 Jan 2018 18:34:30 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-1489: allow configuration of metadata dir

2018-01-16 Thread Andrew Wong (Code Review)
Hello Tidy Bot, Kudu Jenkins,

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

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

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

Change subject: KUDU-1489: allow configuration of metadata dir
..

KUDU-1489: allow configuration of metadata dir

Metadata files currently reside in the first configured data directory,
which isn't always the best choice; this first drive, if not performant,
can act as a bottleneck. Often times the drive containing the WALs is a
better choice, as it is recommended to be the fastest.

This patch allows users to configure their metadata directory through
the new fs_metadata_dir flag. If empty, Kudu will check if a metadata
directory exists in the first member of fs_data_dirs, and if none
exists, Kudu will use fs_wal_dir as the root directory for metadata.
Otherwise, the flag will be honored verbatim.

It is up to the user to take caution in changing this flag; updating the
flag without also manually moving any existing metadata will cause Kudu
to fail at startup.

Aside from the update to the directory location, codepaths that
previously assumed that the first data directory _must_ be healthy have
been updated. The remaining invariant is that at least a single data
directory must be healthy.

A new test cases is added to fs_manager-test, and a test case in
data_dirs-test is updated as a sanity check to show that we can now open
the directory manager with a failed first data directory (previously
this codepath would hit D/CHECK failures).

Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
---
M src/kudu/fs/block_manager_util.cc
M src/kudu/fs/data_dirs-test.cc
M src/kudu/fs/data_dirs.cc
M src/kudu/fs/fs_manager-test.cc
M src/kudu/fs/fs_manager.cc
M src/kudu/fs/fs_manager.h
M src/kudu/integration-tests/external_mini_cluster_fs_inspector.cc
7 files changed, 160 insertions(+), 58 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I375c6b2eb283db5fa9c956135d98252c8781f5db
Gerrit-Change-Number: 9027
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot


[kudu-CR] mini-cluster: rename data root to cluster root

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


Change subject: mini-cluster: rename data_root to cluster_root
..

mini-cluster: rename data_root to cluster_root

I found that the name data_root for the root directory in which to place
the cluster's data and logs was a confusing name because:
  1. we use "data" here loosely to describe any old bytes, encompassing
 not only data blocks, but WALs and logs as well, and
  2. the concept of a "data root" already exists to mean a
 user-specified location to place data blocks (i.e. an entry in
 fs_data_dirs).

As such, this patch renames ExternalMiniClusterOptions's data_root to
cluster_root.

Change-Id: Id8ccc9e232f47a684d6b9226fd84639c4c94d0c3
---
M src/kudu/benchmarks/tpch/tpch_real_world.cc
M src/kudu/integration-tests/ts_itest-base.cc
M src/kudu/mini-cluster/external_mini_cluster.cc
M src/kudu/mini-cluster/external_mini_cluster.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tools/tool.proto
M src/kudu/tools/tool_action_test.cc
7 files changed, 30 insertions(+), 30 deletions(-)



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

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


[kudu-CR] KUDU-2261: The order of the responses after flush should match the order we call apply

2018-01-16 Thread zhen.zhang (Code Review)
zhen.zhang has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/9029


Change subject: KUDU-2261: The order of the responses after flush should match 
the order we call apply
..

KUDU-2261: The order of the responses after flush should match the order we 
call apply

The response list of flush() should have the same order of we apply operations,
so it's easier to know which operation failed and which succeeded.

Change-Id: Ib37c9e85ad03731bb7d5b83be77d40fcd95e803a
---
M java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduSession.java
M java/kudu-client/src/main/java/org/apache/kudu/client/Batch.java
M java/kudu-client/src/main/java/org/apache/kudu/client/BatchResponse.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduSession.java
4 files changed, 68 insertions(+), 15 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib37c9e85ad03731bb7d5b83be77d40fcd95e803a
Gerrit-Change-Number: 9029
Gerrit-PatchSet: 1
Gerrit-Owner: zhen.zhang