[kudu-CR] log block manager: corruptor test utility
Adar Dembo has posted comments on this change. Change subject: log block manager: corruptor test utility .. Patch Set 7: (2 comments) http://gerrit.cloudera.org:8080/#/c/6582/7/src/kudu/fs/log_block_manager-test-util.cc File src/kudu/fs/log_block_manager-test-util.cc: PS7, Line 26: > nit: it seems wound be enough in this case. Done PS7, Line 322: for (auto iter = all_containers_.begin(); iter != all_containers_.end();) { : if (iter->name == c->name) { : all_containers_.erase(iter); : break; : } else { : iter++; : } : } > nit: would something like Done -- To view, visit http://gerrit.cloudera.org:8080/6582 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I197b693d5a3c1a909e91b772ebfb31e50bae488b Gerrit-PatchSet: 7 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Adar DemboGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon Gerrit-HasComments: Yes
[kudu-CR] WIP [client] retry RPC if authn token expires
Alexey Serbin has abandoned this change. Change subject: WIP [client] retry RPC if authn token expires .. Abandoned This change has evolved into non-WIP patch: https://gerrit.cloudera.org/#/c/6648/ -- To view, visit http://gerrit.cloudera.org:8080/6238 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: abandon Gerrit-Change-Id: I20275b4b490145672598631c42824902ebf79ae9 Gerrit-PatchSet: 3 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] WIP [rpc] propagate RPC status for negotiation errors
Alexey Serbin has abandoned this change. Change subject: WIP [rpc] propagate RPC status for negotiation errors .. Abandoned This change is now part of https://gerrit.cloudera.org/#/c/6648/ -- To view, visit http://gerrit.cloudera.org:8080/6294 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: abandon Gerrit-Change-Id: Ib34a95d659a37c0967b5af7c8f96a344d0c42342 Gerrit-PatchSet: 1 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Dan Burkert Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] [c++ client] re-acquire authn token if expired
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6648 to look at the new patch set (#4). Change subject: [c++ client] re-acquire authn token if expired .. [c++ client] re-acquire authn token if expired Updated C++ client to re-acquire authn token if server responds with FATAL_INVALID_AUTHENTICATION_TOKEN error on connection negotiation. If that happens while negotiating an connection while performing an RPC call, the connection being negotiated is closed and the client re-connects to the cluster to get new authn token. After successfully re-acquiring authn token the client retries the RPC call again. Added corresponding integration test to cover authn token re-acquisition for various scenarios. Change-Id: I418497ac59cfd4e476e9bfc6abe6b10b487712f5 --- M src/kudu/client/batcher.cc M src/kudu/client/client-internal.cc M src/kudu/client/meta_cache.cc M src/kudu/client/scanner-internal.cc M src/kudu/client/scanner-internal.h M src/kudu/integration-tests/CMakeLists.txt A src/kudu/integration-tests/authn_token_expire-itest.cc M src/kudu/rpc/client_negotiation.cc M src/kudu/rpc/client_negotiation.h M src/kudu/rpc/connection.cc M src/kudu/rpc/connection.h M src/kudu/rpc/messenger.h M src/kudu/rpc/negotiation.cc M src/kudu/rpc/outbound_call.cc M src/kudu/rpc/reactor.cc M src/kudu/rpc/reactor.h M src/kudu/rpc/retriable_rpc.h M src/kudu/rpc/rpc.h M src/kudu/rpc/server_negotiation.cc 19 files changed, 625 insertions(+), 76 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/48/6648/4 -- To view, visit http://gerrit.cloudera.org:8080/6648 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I418497ac59cfd4e476e9bfc6abe6b10b487712f5 Gerrit-PatchSet: 4 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] [rpc] handling ERROR UNAVAILABLE RPC error
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6640 to look at the new patch set (#9). Change subject: [rpc] handling ERROR_UNAVAILABLE RPC error .. [rpc] handling ERROR_UNAVAILABLE RPC error This patch adds handling of the newly introduced ERROR_UNAVAILABLE RPC error code. The ERROR_UNAVAILABLE error code is a broader counterpart of the ERROR_SERVER_TOO_BUSY. >From the client side, both ERROR_UNAVAILABLE and ERROR_SERVER_TOO_BUSY codes mean it's worth retrying the call at a later time. To reflect that, the internal codes {RetriableRpcStatus,ScanRpcStatus}::SERVER_BUSY are replaced with more generic SERVICE_UNAVAILABLE. Added an integration test to cover the behavior of the server components and Kudu C++ client when client sends authn token signed by a TSK unknown to master and tablet servers. Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 --- M src/kudu/client/batcher.cc M src/kudu/client/client-internal.cc M src/kudu/client/client.h M src/kudu/client/scanner-internal.cc M src/kudu/client/scanner-internal.h M src/kudu/integration-tests/CMakeLists.txt A src/kudu/integration-tests/security-unknown-tsk-itest.cc M src/kudu/integration-tests/test_workload.cc M src/kudu/integration-tests/test_workload.h M src/kudu/rpc/client_negotiation.cc M src/kudu/rpc/exactly_once_rpc-test.cc M src/kudu/rpc/outbound_call.h M src/kudu/rpc/retriable_rpc.h M src/kudu/rpc/rpc.cc M src/kudu/rpc/rpc.h M src/kudu/rpc/rpc_context.h 16 files changed, 519 insertions(+), 32 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/40/6640/9 -- To view, visit http://gerrit.cloudera.org:8080/6640 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 Gerrit-PatchSet: 9 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] [c++-client] clear non-covered entries from meta cache on table open
Adar Dembo has posted comments on this change. Change subject: [c++-client] clear non-covered entries from meta cache on table open .. Patch Set 1: (1 comment) I'll pose the same question I posed on Slack: can we conceive of any applications that would be punished by this change, enough so that we should inconvenience applications that would benefit by exposing a "clear non-covering range cache" knob and forcing them to use it instead? Such applications would use short table lifespans (the shorter the lifespan, the greater the impact), and aren't concerned with changes to range partitions. I'm tentatively OK with the patch but I'd like others to thing about this, since the new behavior isn't something we can remove without breaking backwards compatibility (i.e. applications may come to depend on the clearing behavior for correctness). http://gerrit.cloudera.org:8080/#/c/6713/1/src/kudu/client/client.cc File src/kudu/client/client.cc: Line 447: // When opening a table, clear the existing cached non-covered range entries. This should be documented in client.h. -- To view, visit http://gerrit.cloudera.org:8080/6713 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I195eac8caa5efca9ad95284ab707c38340ba47f0 Gerrit-PatchSet: 1 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan BurkertGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Matthew Jacobs Gerrit-Reviewer: Thomas Tauber-Marshall Gerrit-Reviewer: Todd Lipcon Gerrit-HasComments: Yes
[kudu-CR] [rpc] handling ERROR UNAVAILABLE RPC error
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6640 to look at the new patch set (#8). Change subject: [rpc] handling ERROR_UNAVAILABLE RPC error .. [rpc] handling ERROR_UNAVAILABLE RPC error This patch adds handling of the newly introduced ERROR_UNAVAILABLE RPC error code. The ERROR_UNAVAILABLE error code is a broader counterpart of the ERROR_SERVER_TOO_BUSY. >From the client side, both ERROR_UNAVAILABLE and ERROR_SERVER_TOO_BUSY codes mean it's worth retrying the call at a later time. To reflect that, the internal codes {RetriableRpcStatus,ScanRpcStatus}::SERVER_BUSY are replaced with more generic SERVICE_UNAVAILABLE. Added an integration test to cover the behavior of the server components and Kudu C++ client when client sends authn token signed by a TSK unknown to master and tablet servers. Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 --- M src/kudu/client/batcher.cc M src/kudu/client/client-internal.cc M src/kudu/client/client.h M src/kudu/client/scanner-internal.cc M src/kudu/client/scanner-internal.h M src/kudu/integration-tests/CMakeLists.txt A src/kudu/integration-tests/security-unknown-tsk-itest.cc M src/kudu/integration-tests/test_workload.cc M src/kudu/integration-tests/test_workload.h M src/kudu/rpc/client_negotiation.cc M src/kudu/rpc/exactly_once_rpc-test.cc M src/kudu/rpc/outbound_call.h M src/kudu/rpc/retriable_rpc.h M src/kudu/rpc/rpc.cc M src/kudu/rpc/rpc.h M src/kudu/rpc/rpc_context.h 16 files changed, 519 insertions(+), 32 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/40/6640/8 -- To view, visit http://gerrit.cloudera.org:8080/6640 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 Gerrit-PatchSet: 8 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] KUDU-1952 Remove round-robin for block placement
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6636 to look at the new patch set (#9). Change subject: KUDU-1952 Remove round-robin for block placement .. KUDU-1952 Remove round-robin for block placement This is the first of a multi-patch patchset to mitigate the single-disk failure. Throughout the code, the term "DataDir" refers to a data directory, which is often mounted on a distinct disk. Thus, "disks" and "data directories" will be used interchangeably. This patch adds a mapping from tablet to a set of disks and uses it to replace the existing round-robin placement of blocks. Tablets are mapped to a fixed number of disks (i.e. a DataDirGroup). New blocks are placed randomly in directories within each tablet's DataDirGroup. Tablet-to-group mappings are generated and stored as metadata upon tablet creation, or upon tablet replacement during a tablet copy. During group creation, disks are added to groups by randomly selecting two available directories and selecting the one with fewer tablets on it. This avoids pigeonholing new tablets to disks with relatively few tablets, while still trending towards filling underloaded disks. Groups are maintained when restarting the server, as they are flushed with metadata, and are deleted upon tablet deletion. When loading tablet data from a previous version of Kudu, the tablet's superblock will not have a DataDirGroup. One will be generated containing all data directories, as the tablet's data may already be spread across any number of disks. As this patch only addresses block placement, it does not itself mitigate single-disk failure. Given this, and given the tradeoff between I/O and failure disk-failure tolerance, the default behavior will be to spread tablet data across all disks. A design doc can be found here: https://docs.google.com/document/d/1zZk-vb_ETKUuePcZ9ZqoSK2oPvAAaEV1sjDXes8Pxgk/edit?usp=sharing Change-Id: I9828147f4fa5c4d7f6ed23441dca5a116b8cb11b --- M src/kudu/fs/block_manager-stress-test.cc M src/kudu/fs/block_manager-test.cc M src/kudu/fs/block_manager.h A src/kudu/fs/data_dir_group.h M src/kudu/fs/data_dirs.cc M src/kudu/fs/data_dirs.h M src/kudu/fs/file_block_manager.cc M src/kudu/fs/file_block_manager.h M src/kudu/fs/fs.proto M src/kudu/fs/fs_manager.cc M src/kudu/fs/fs_manager.h M src/kudu/fs/log_block_manager-test.cc M src/kudu/fs/log_block_manager.cc M src/kudu/fs/log_block_manager.h M src/kudu/tablet/delta_compaction.cc M src/kudu/tablet/delta_compaction.h M src/kudu/tablet/delta_tracker.cc M src/kudu/tablet/diskrowset.cc M src/kudu/tablet/metadata.proto M src/kudu/tablet/multi_column_writer.cc M src/kudu/tablet/multi_column_writer.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_copy_client.h M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h 28 files changed, 675 insertions(+), 164 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/36/6636/9 -- To view, visit http://gerrit.cloudera.org:8080/6636 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9828147f4fa5c4d7f6ed23441dca5a116b8cb11b Gerrit-PatchSet: 9 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Andrew WongGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Jean-Daniel Cryans Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] KUDU-1952 Remove round-robin for block placement
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6636 to look at the new patch set (#8). Change subject: KUDU-1952 Remove round-robin for block placement .. KUDU-1952 Remove round-robin for block placement This is the first of a multi-patch patchset to mitigate the single-disk failure. Throughout the code, the term "DataDir" refers to a data directory, which is often mounted on a distinct disk. Thus, "disks" and "data directories" will be used interchangeably. This patch adds a mapping from tablet to a set of disks and uses it to replace the existing round-robin placement of blocks. Tablets are mapped to a fixed number of disks (i.e. a DataDirGroup). New blocks are placed randomly in directories within each tablet's DataDirGroup. Tablet-to-group mappings are generated and stored as metadata upon tablet creation, or upon tablet replacement during a tablet copy. During group creation, disks are added to groups by randomly selecting two available directories and selecting the one with fewer tablets on it. This avoids pigeonholing new tablets to disks with relatively few tablets, while still trending towards filling underloaded disks. Groups are maintained when restarting the server, as they are flushed with metadata, and are deleted upon tablet deletion. When loading tablet data from a previous version of Kudu, the tablet's superblock will not have a DataDirGroup. One will be generated containing all data directories, as the tablet's data may already be spread across any number of disks. As this patch only addresses block placement, it does not itself mitigate single-disk failure. Given this, and given the tradeoff between I/O and failure disk-failure tolerance, the default behavior will be to spread tablet data across all disks. A design doc can be found here: https://docs.google.com/document/d/1zZk-vb_ETKUuePcZ9ZqoSK2oPvAAaEV1sjDXes8Pxgk/edit?usp=sharing Change-Id: I9828147f4fa5c4d7f6ed23441dca5a116b8cb11b --- M src/kudu/fs/block_manager-stress-test.cc M src/kudu/fs/block_manager-test.cc M src/kudu/fs/block_manager.h A src/kudu/fs/data_dir_group.h M src/kudu/fs/data_dirs.cc M src/kudu/fs/data_dirs.h M src/kudu/fs/file_block_manager.cc M src/kudu/fs/file_block_manager.h M src/kudu/fs/fs.proto M src/kudu/fs/fs_manager.cc M src/kudu/fs/fs_manager.h M src/kudu/fs/log_block_manager-test.cc M src/kudu/fs/log_block_manager.cc M src/kudu/fs/log_block_manager.h M src/kudu/tablet/delta_compaction.cc M src/kudu/tablet/delta_compaction.h M src/kudu/tablet/delta_tracker.cc M src/kudu/tablet/diskrowset.cc M src/kudu/tablet/metadata.proto M src/kudu/tablet/multi_column_writer.cc M src/kudu/tablet/multi_column_writer.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_copy_client.h M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h 28 files changed, 675 insertions(+), 164 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/36/6636/8 -- To view, visit http://gerrit.cloudera.org:8080/6636 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9828147f4fa5c4d7f6ed23441dca5a116b8cb11b Gerrit-PatchSet: 8 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Andrew WongGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Jean-Daniel Cryans Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] [c++-client] clear non-covered entries from meta cache on table open
Hello Matthew Jacobs, Thomas Tauber-Marshall, Adar Dembo, Todd Lipcon, I'd like you to do a code review. Please visit http://gerrit.cloudera.org:8080/6713 to review the following change. Change subject: [c++-client] clear non-covered entries from meta cache on table open .. [c++-client] clear non-covered entries from meta cache on table open Clearing non-covered range entries from the meta cache on table open makes it easier to share client instances among different contexts without having to worry about polluting the non-covering range cache. Change-Id: I195eac8caa5efca9ad95284ab707c38340ba47f0 --- M src/kudu/client/client-test.cc M src/kudu/client/client.cc M src/kudu/client/meta_cache.cc M src/kudu/client/meta_cache.h 4 files changed, 93 insertions(+), 0 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/13/6713/1 -- To view, visit http://gerrit.cloudera.org:8080/6713 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I195eac8caa5efca9ad95284ab707c38340ba47f0 Gerrit-PatchSet: 1 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan BurkertGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Matthew Jacobs Gerrit-Reviewer: Thomas Tauber-Marshall Gerrit-Reviewer: Todd Lipcon
[kudu-CR] [rpc] handling ERROR UNAVAILABLE RPC error
Alexey Serbin has posted comments on this change. Change subject: [rpc] handling ERROR_UNAVAILABLE RPC error .. Patch Set 6: (3 comments) http://gerrit.cloudera.org:8080/#/c/6640/6/src/kudu/integration-tests/security-unknown-tsk-itest.cc File src/kudu/integration-tests/security-unknown-tsk-itest.cc: Line 175: for (int i = 0; i < num_tablet_servers_; ++i) { > This isn't quite accurate - the master will return more tablets than reques OK. Anyway, having several tablet servers to send requests to gives a better coverage, IMO. :) Line 217: SleepFor(MonoDelta::FromMilliseconds(2 * FLAGS_rpc_default_keepalive_time_ms)); > warning: either cast from 'int' to 'int64_t' (aka 'long') is ineffective, o Done Line 279: atomic importer_do_run(true); > ah, so it's just a short-circuit? Yup. I updated the misleading comment. -- To view, visit http://gerrit.cloudera.org:8080/6640 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 Gerrit-PatchSet: 6 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon Gerrit-HasComments: Yes
[kudu-CR] [rpc] handling ERROR UNAVAILABLE RPC error
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6640 to look at the new patch set (#7). Change subject: [rpc] handling ERROR_UNAVAILABLE RPC error .. [rpc] handling ERROR_UNAVAILABLE RPC error This patch adds handling of the newly introduced ERROR_UNAVAILABLE RPC error code. The ERROR_UNAVAILABLE error code is a broader counterpart of the ERROR_SERVER_TOO_BUSY. >From the client side, both ERROR_UNAVAILABLE and ERROR_SERVER_TOO_BUSY codes mean it's worth retrying the call at a later time. To reflect that, the internal codes {RetriableRpcStatus,ScanRpcStatus}::SERVER_BUSY are replaced with more generic SERVICE_UNAVAILABLE. Added an integration test to cover the behavior of the server components and Kudu C++ client when client sends authn token signed by a TSK unknown to master and tablet servers. Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 --- M src/kudu/client/batcher.cc M src/kudu/client/client-internal.cc M src/kudu/client/client.h M src/kudu/client/scanner-internal.cc M src/kudu/client/scanner-internal.h M src/kudu/integration-tests/CMakeLists.txt A src/kudu/integration-tests/security-unknown-tsk-itest.cc M src/kudu/integration-tests/test_workload.cc M src/kudu/integration-tests/test_workload.h M src/kudu/rpc/client_negotiation.cc M src/kudu/rpc/exactly_once_rpc-test.cc M src/kudu/rpc/outbound_call.h M src/kudu/rpc/retriable_rpc.h M src/kudu/rpc/rpc.cc M src/kudu/rpc/rpc.h M src/kudu/rpc/rpc_context.h M src/kudu/security/token_verifier.cc 17 files changed, 521 insertions(+), 33 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/40/6640/7 -- To view, visit http://gerrit.cloudera.org:8080/6640 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I87d780a4ad88c15ceaacfddf6c1b69ed053bb959 Gerrit-PatchSet: 7 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] KUDU-1952 Remove round-robin for block placement
Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6636 to look at the new patch set (#7). Change subject: KUDU-1952 Remove round-robin for block placement .. KUDU-1952 Remove round-robin for block placement This is the first of a multi-patch patchset to mitigate the single-disk failure. Throughout the code, the term "DataDir" refers to a data directory, which is often mounted on a distinct disk. Thus, "disks" and "data directories" will be used interchangeably. This patch adds a mapping from tablet to a set of disks and uses it to replace the existing round-robin placement of blocks. Tablets are mapped to a fixed number of disks (i.e. a DataDirGroup). New blocks are placed randomly in directories within each tablet's DataDirGroup. Tablet-to-group mappings are generated and stored as metadata upon tablet creation, or upon tablet replacement during a tablet copy. During group creation, disks are added to groups by randomly selecting two available directories and selecting the one with fewer tablets on it. This avoids pigeonholing new tablets to disks with relatively few tablets, while still trending towards filling underloaded disks. Groups are maintained when restarting the server, as they are flushed with metadata, and are deleted upon tablet deletion. When loading tablet data from a previous version of Kudu, the tablet's superblock will not have a DataDirGroup. One will be generated containing all data directories, as the tablet's data may already be spread across any number of disks. As this patch only addresses block placement, it does not itself mitigate single-disk failure. Given this, and given the tradeoff between I/O and failure disk-failure tolerance, the default behavior will be to spread tablet data across all disks. A design doc can be found here: https://docs.google.com/document/d/1zZk-vb_ETKUuePcZ9ZqoSK2oPvAAaEV1sjDXes8Pxgk/edit?usp=sharing Change-Id: I9828147f4fa5c4d7f6ed23441dca5a116b8cb11b --- M src/kudu/fs/block_manager-stress-test.cc M src/kudu/fs/block_manager-test.cc M src/kudu/fs/block_manager.h A src/kudu/fs/data_dir_group.h M src/kudu/fs/data_dirs.cc M src/kudu/fs/data_dirs.h M src/kudu/fs/file_block_manager.cc M src/kudu/fs/file_block_manager.h M src/kudu/fs/fs.proto M src/kudu/fs/fs_manager.cc M src/kudu/fs/fs_manager.h M src/kudu/fs/log_block_manager-test.cc M src/kudu/fs/log_block_manager.cc M src/kudu/fs/log_block_manager.h M src/kudu/tablet/delta_compaction.cc M src/kudu/tablet/delta_compaction.h M src/kudu/tablet/delta_tracker.cc M src/kudu/tablet/diskrowset.cc M src/kudu/tablet/metadata.proto M src/kudu/tablet/multi_column_writer.cc M src/kudu/tablet/multi_column_writer.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_copy_client.h M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h 28 files changed, 675 insertions(+), 164 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/36/6636/7 -- To view, visit http://gerrit.cloudera.org:8080/6636 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9828147f4fa5c4d7f6ed23441dca5a116b8cb11b Gerrit-PatchSet: 7 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Andrew WongGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: David Ribeiro Alves Gerrit-Reviewer: Jean-Daniel Cryans Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] Tweak ListMasters RPC error handling
Dan Burkert has submitted this change and it was merged. Change subject: Tweak ListMasters RPC error handling .. Tweak ListMasters RPC error handling Unlike other master-specific RPCs, the ListMasters response contains an AppStatusPB error type instead of a MasterErrorPB. This makes it harder to use ListMasters in a generic context with other master RPCs. This commit changes the error type, while preserving the old type as a deprecated field. There are no known users of the ListMasters RPC yet, but maintaing backwards compat is still part of our contract. Change-Id: I28e175df2cecad4f62806bc3ea0c314e5b861e40 Reviewed-on: http://gerrit.cloudera.org:8080/6704 Tested-by: Kudu Jenkins Reviewed-by: Adar Dembo--- M src/kudu/master/catalog_manager.cc M src/kudu/master/master.proto M src/kudu/master/master_service.cc 3 files changed, 10 insertions(+), 6 deletions(-) Approvals: Adar Dembo: Looks good to me, approved Kudu Jenkins: Verified -- To view, visit http://gerrit.cloudera.org:8080/6704 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: merged Gerrit-Change-Id: I28e175df2cecad4f62806bc3ea0c314e5b861e40 Gerrit-PatchSet: 3 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan Burkert Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins
[kudu-CR] Add 'kudu master list' tool
Dan Burkert has submitted this change and it was merged. Change subject: Add 'kudu master list' tool .. Add 'kudu master list' tool This also sneaks in a couple other changes: - kudu tserver list now has a 'heartbeat' column option to display the number of ms since the last heartbeat. - A fix for the pretty table formatter. Change-Id: I9e77d41b244143d1258b26b50c4d2a68dedd8f00 Reviewed-on: http://gerrit.cloudera.org:8080/6705 Reviewed-by: Adar DemboTested-by: Kudu Jenkins --- M src/kudu/client/client-internal.cc M src/kudu/tools/kudu-tool-test.cc M src/kudu/tools/tool_action_common.cc M src/kudu/tools/tool_action_master.cc M src/kudu/tools/tool_action_tserver.cc 5 files changed, 147 insertions(+), 6 deletions(-) Approvals: Adar Dembo: Looks good to me, approved Kudu Jenkins: Verified -- To view, visit http://gerrit.cloudera.org:8080/6705 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9e77d41b244143d1258b26b50c4d2a68dedd8f00 Gerrit-PatchSet: 3 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan Burkert Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot
[kudu-CR] Tweak ListMasters RPC error handling
Adar Dembo has posted comments on this change. Change subject: Tweak ListMasters RPC error handling .. Patch Set 2: Code-Review+2 -- To view, visit http://gerrit.cloudera.org:8080/6704 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I28e175df2cecad4f62806bc3ea0c314e5b861e40 Gerrit-PatchSet: 2 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan BurkertGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-HasComments: No
[kudu-CR] Add 'kudu master list' tool
Dan Burkert has posted comments on this change. Change subject: Add 'kudu master list' tool .. Patch Set 2: (1 comment) http://gerrit.cloudera.org:8080/#/c/6705/2/src/kudu/tools/tool_action_common.cc File src/kudu/tools/tool_action_common.cc: PS2, Line 423: << "" > Isn't this a no-op? No, it's not because of the prior setw call. -- To view, visit http://gerrit.cloudera.org:8080/6705 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9e77d41b244143d1258b26b50c4d2a68dedd8f00 Gerrit-PatchSet: 2 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan BurkertGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-HasComments: Yes
[kudu-CR] Add 'kudu master list' tool
Adar Dembo has posted comments on this change. Change subject: Add 'kudu master list' tool .. Patch Set 2: Code-Review+2 (1 comment) http://gerrit.cloudera.org:8080/#/c/6705/2/src/kudu/tools/tool_action_common.cc File src/kudu/tools/tool_action_common.cc: PS2, Line 423: << "" Isn't this a no-op? -- To view, visit http://gerrit.cloudera.org:8080/6705 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9e77d41b244143d1258b26b50c4d2a68dedd8f00 Gerrit-PatchSet: 2 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan BurkertGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-HasComments: Yes
[kudu-CR] Add 'kudu master list' tool
Hello Adar Dembo, Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/6705 to look at the new patch set (#2). Change subject: Add 'kudu master list' tool .. Add 'kudu master list' tool This also sneaks in a couple other changes: - kudu tserver list now has a 'heartbeat' column option to display the number of ms since the last heartbeat. - A fix for the pretty table formatter. Change-Id: I9e77d41b244143d1258b26b50c4d2a68dedd8f00 --- M src/kudu/client/client-internal.cc M src/kudu/tools/kudu-tool-test.cc M src/kudu/tools/tool_action_common.cc M src/kudu/tools/tool_action_master.cc M src/kudu/tools/tool_action_tserver.cc 5 files changed, 147 insertions(+), 6 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/05/6705/2 -- To view, visit http://gerrit.cloudera.org:8080/6705 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I9e77d41b244143d1258b26b50c4d2a68dedd8f00 Gerrit-PatchSet: 2 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Dan BurkertGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot
[kudu-CR] [rpc] reopen outbound connections mode for reactor
Alexey Serbin has uploaded a new patch set (#2). Change subject: [rpc] reopen_outbound_connections mode for reactor .. [rpc] reopen_outbound_connections mode for reactor Introduced a test mode for the RPC ReactorThread: reopen already existing idle outbound connection upon making another remote call to the same server. This is a groundwork for follow-up patches which contain tests requiring connection negotiation to be done upon every RPC call. Added a couple of new ReactorThread metrics to count total number of server- and client-side connections open during ReactorThread lifetime. Added unit test to cover the newly introduced functionality. Also, did a minor clean-up on the ReactorThread code and its inline documentation. Change-Id: I71ada660d8c92de1813a261e221f73017c2c764a --- M src/kudu/rpc/connection.h M src/kudu/rpc/messenger.h M src/kudu/rpc/reactor.cc M src/kudu/rpc/reactor.h M src/kudu/rpc/rpc-test.cc 5 files changed, 102 insertions(+), 24 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/10/6710/2 -- To view, visit http://gerrit.cloudera.org:8080/6710 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I71ada660d8c92de1813a261e221f73017c2c764a Gerrit-PatchSet: 2 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey SerbinGerrit-Reviewer: Dan Burkert Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] [rpc] reopen outbound connections mode for reactor
Alexey Serbin has uploaded a new change for review. http://gerrit.cloudera.org:8080/6710 Change subject: [rpc] reopen_outbound_connections mode for reactor .. [rpc] reopen_outbound_connections mode for reactor Introduced a test mode for the RPC ReactorThread: reopen already existing idle outbound connection upon making another remote call to the same server. This is a groundwork for follow-up patches which contain tests requiring connection negotiation to be done upon every RPC call. Added a couple of new ReactorThread metrics to count total number of server- and client-side connections open during ReactorThread lifetime. Also, did a minor clean-up on the ReactorThread code and its inline documentation. Added unit test to cover the newly introduced functionality. Change-Id: I71ada660d8c92de1813a261e221f73017c2c764a --- M src/kudu/rpc/connection.h M src/kudu/rpc/messenger.h M src/kudu/rpc/reactor.cc M src/kudu/rpc/reactor.h M src/kudu/rpc/rpc-test.cc 5 files changed, 101 insertions(+), 24 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/10/6710/1 -- To view, visit http://gerrit.cloudera.org:8080/6710 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I71ada660d8c92de1813a261e221f73017c2c764a Gerrit-PatchSet: 1 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Alexey Serbin