kudu git commit: ts_itest-base: chain to superclass TearDown

2018-04-06 Thread adar
Repository: kudu
Updated Branches:
  refs/heads/master 109fdc84e -> 15afb6495


ts_itest-base: chain to superclass TearDown

This didn't cause any real trouble since no superclass in the hierarchy
defines a TearDown, but it's a good practice in any case.

Change-Id: Ic20da27c1333a69dc948095828300b03d2298a37
Reviewed-on: http://gerrit.cloudera.org:8080/9945
Tested-by: Kudu Jenkins
Reviewed-by: Adar Dembo 


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/15afb649
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/15afb649
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/15afb649

Branch: refs/heads/master
Commit: 15afb649521438ca85119bec799e39e9dd3afcb0
Parents: 109fdc8
Author: Adar Dembo 
Authored: Fri Apr 6 10:43:17 2018 -0700
Committer: Adar Dembo 
Committed: Fri Apr 6 19:56:00 2018 +

--
 src/kudu/integration-tests/ts_itest-base.cc | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/kudu/blob/15afb649/src/kudu/integration-tests/ts_itest-base.cc
--
diff --git a/src/kudu/integration-tests/ts_itest-base.cc 
b/src/kudu/integration-tests/ts_itest-base.cc
index 6ec2000..cd2f238 100644
--- a/src/kudu/integration-tests/ts_itest-base.cc
+++ b/src/kudu/integration-tests/ts_itest-base.cc
@@ -512,6 +512,7 @@ Status 
TabletServerIntegrationTestBase::CheckTabletServersAreAlive(int num_table
 
 void TabletServerIntegrationTestBase::TearDown() {
   STLDeleteValues(_servers_);
+  TabletServerTestBase::TearDown();
 }
 
 void 
TabletServerIntegrationTestBase::CreateClient(shared_ptr* 
client) {



kudu git commit: test_util: reset flags before cleaning test directory

2018-04-06 Thread adar
Repository: kudu
Updated Branches:
  refs/heads/master 15afb6495 -> 3f194c3a1


test_util: reset flags before cleaning test directory

TabletServerDiskFailureTest.TestRandomOpSequence didn't reset
env_inject_eio to 0 before finishing. Rather than fixing that, let's change
KuduTest to reset its flags _before_ cleaning out the test directory. This
obviates the need for all such workarounds.

Change-Id: I4b4843cbc2c3bc2cbeb3a4d5959f80a35da7714a
Reviewed-on: http://gerrit.cloudera.org:8080/9944
Tested-by: Kudu Jenkins
Reviewed-by: Andrew Wong 


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/3f194c3a
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/3f194c3a
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/3f194c3a

Branch: refs/heads/master
Commit: 3f194c3a17f11a70e64bf2668a96e1e93fed00df
Parents: 15afb64
Author: Adar Dembo 
Authored: Fri Apr 6 10:41:26 2018 -0700
Committer: Adar Dembo 
Committed: Fri Apr 6 21:03:38 2018 +

--
 src/kudu/fs/block_manager-test.cc |  2 --
 src/kudu/fs/data_dirs-test.cc |  1 -
 src/kudu/fs/fs_manager-test.cc| 24 +---
 src/kudu/fs/log_block_manager-test.cc | 14 --
 src/kudu/tablet/diskrowset-test.cc|  2 --
 src/kudu/util/test_util.cc|  4 
 src/kudu/util/test_util.h | 12 ++--
 7 files changed, 31 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kudu/blob/3f194c3a/src/kudu/fs/block_manager-test.cc
--
diff --git a/src/kudu/fs/block_manager-test.cc 
b/src/kudu/fs/block_manager-test.cc
index e17a61e..9d5a590 100644
--- a/src/kudu/fs/block_manager-test.cc
+++ b/src/kudu/fs/block_manager-test.cc
@@ -998,7 +998,6 @@ TYPED_TEST(BlockManagerTest, 
TestMetadataOkayDespiteFailure) {
  false /* create */));
 }
   }
-  FLAGS_env_inject_eio = 0;
 }
 
 TYPED_TEST(BlockManagerTest, TestGetAllBlockIds) {
@@ -1147,7 +1146,6 @@ TYPED_TEST(BlockManagerTest, TestBlockTransaction) {
   ASSERT_STR_CONTAINS(s.ToString(), Substitute("only deleted $0 blocks, "
"first failure",
deleted_blocks.size()));
-  FLAGS_env_inject_eio = 0;
 }
 
 } // namespace fs

http://git-wip-us.apache.org/repos/asf/kudu/blob/3f194c3a/src/kudu/fs/data_dirs-test.cc
--
diff --git a/src/kudu/fs/data_dirs-test.cc b/src/kudu/fs/data_dirs-test.cc
index 449780a..7d35f09 100644
--- a/src/kudu/fs/data_dirs-test.cc
+++ b/src/kudu/fs/data_dirs-test.cc
@@ -421,7 +421,6 @@ TEST_F(DataDirManagerTest, TestOpenWithFailedDirs) {
   DataDirManagerOptions(), _manager_);
   ASSERT_STR_CONTAINS(s.ToString(), "could not open directory manager");
   ASSERT_TRUE(s.IsIOError());
-  FLAGS_env_inject_eio = 0;
 }
 
 class TooManyDataDirManagerTest : public DataDirManagerTest {

http://git-wip-us.apache.org/repos/asf/kudu/blob/3f194c3a/src/kudu/fs/fs_manager-test.cc
--
diff --git a/src/kudu/fs/fs_manager-test.cc b/src/kudu/fs/fs_manager-test.cc
index 4952a6b..5a76883 100644
--- a/src/kudu/fs/fs_manager-test.cc
+++ b/src/kudu/fs/fs_manager-test.cc
@@ -406,7 +406,6 @@ TEST_F(FsManagerTestBase, TestCreateWithFailedDirs) {
   Status s = fs_manager()->CreateInitialFileSystemLayout();
   ASSERT_STR_MATCHES(s.ToString(), "cannot create FS layout; at least one 
directory "
"failed to canonicalize");
-  FLAGS_env_inject_eio = 0;
 }
 
 TEST_F(FsManagerTestBase, TestOpenWithNoBlockManagerInstances) {
@@ -458,8 +457,6 @@ TEST_F(FsManagerTestBase, TestOpenWithFailedDirs) {
   ReinitFsManagerWithPaths(wal_path, data_roots);
   ASSERT_OK(fs_manager()->Open(nullptr));
   ASSERT_EQ(1, fs_manager()->dd_manager()->GetFailedDataDirs().size());
-
-  FLAGS_env_inject_eio = 0;
 }
 
 TEST_F(FsManagerTestBase, TestTmpFilesCleanup) {
@@ -633,19 +630,16 @@ TEST_F(FsManagerTestBase, TestAddRemoveDataDirs) {
 
   // Try to open with a new data dir although an existing data dir has failed;
   // this should fail.
-  {
-google::FlagSaver saver;
-FLAGS_crash_on_eio = false;
-FLAGS_env_inject_eio = 1.0;
-FLAGS_env_inject_eio_globs = JoinPathSegments(new_path2, "**");
+  FLAGS_crash_on_eio = false;
+  FLAGS_env_inject_eio = 1.0;
+  FLAGS_env_inject_eio_globs = JoinPathSegments(new_path2, "**");
 
-const string new_path3 = GetTestPath("new_path3");
-opts.data_roots = { fs_root_, new_path2, new_path3 };
-ReinitFsManagerWithOpts(opts);
-Status s = fs_manager()->Open();
-

kudu git commit: KUDU-16: implement Java client limits

2018-04-06 Thread awong
Repository: kudu
Updated Branches:
  refs/heads/master 3f194c3a1 -> a95441846


KUDU-16: implement Java client limits

This patch implements the scanner limits for the Java client. Each
AsyncKuduScanner will maintain a count of the number of rows already
returned (per table scan), and based on this value, will update the
per-tablet scan request.

Change-Id: I83635fbbc7714318f8b95d91b7f178e9ca7ebff7
Reviewed-on: http://gerrit.cloudera.org:8080/9926
Reviewed-by: Grant Henke 
Tested-by: Kudu Jenkins


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/a9544184
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/a9544184
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/a9544184

Branch: refs/heads/master
Commit: a95441846bb1381ff2543ffcddf3854184a111ea
Parents: 3f194c3
Author: Andrew Wong 
Authored: Wed Apr 4 12:48:53 2018 -0700
Committer: Andrew Wong 
Committed: Sat Apr 7 00:15:23 2018 +

--
 .../kudu/client/AbstractKuduScannerBuilder.java |  4 --
 .../apache/kudu/client/AsyncKuduScanner.java| 12 +++--
 .../org/apache/kudu/client/TestKuduClient.java  | 48 
 3 files changed, 57 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kudu/blob/a9544184/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
--
diff --git 
a/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
 
b/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
index f27c62b..4485eec 100644
--- 
a/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
+++ 
b/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java
@@ -197,10 +197,6 @@ public abstract class AbstractKuduScannerBuilder
* Sets a limit on the number of rows that will be returned by the scanner. 
There's no limit
* by default.
*
-   * WARNING: Currently setting the limit has no effect.
-   * See https://issues.apache.org/jira/browse/KUDU-16;>KUDU-16 
for more
-   * information.
-   *
* @param limit a positive long
* @return this instance
*/

http://git-wip-us.apache.org/repos/asf/kudu/blob/a9544184/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
--
diff --git 
a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java 
b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
index 24581af..a2dd160 100644
--- 
a/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
+++ 
b/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java
@@ -209,6 +209,8 @@ public final class AsyncKuduScanner {
 
   private boolean hasMore = true;
 
+  private long numRowsReturned = 0;
+
   /**
* The tabletSlice currently being scanned.
* If null, we haven't started scanning.
@@ -436,6 +438,8 @@ public final class AsyncKuduScanner {
 lastPrimaryKey = resp.lastPrimaryKey;
   }
 
+  numRowsReturned += resp.data.getNumRows();
+
   if (!resp.more || resp.scannerId == null) {
 scanFinished();
 return Deferred.fromResult(resp.data); // there might be data to 
return
@@ -519,6 +523,7 @@ public final class AsyncKuduScanner {
   private final Callback gotNextRow =
   new Callback() {
 public RowResultIterator call(final Response resp) {
+  numRowsReturned += resp.data.getNumRows();
   if (!resp.more) {  // We're done scanning this tablet.
 scanFinished();
 return resp.data;
@@ -566,8 +571,9 @@ public final class AsyncKuduScanner {
   void scanFinished() {
 Partition partition = tablet.getPartition();
 pruner.removePartitionKeyRange(partition.getPartitionKeyEnd());
-// Stop scanning if we have scanned until or past the end partition key.
-if (!pruner.hasMorePartitionKeyRanges()) {
+// Stop scanning if we have scanned until or past the end partition key, or
+// if we have fulfilled the limit.
+if (!pruner.hasMorePartitionKeyRanges() || numRowsReturned >= limit) {
   hasMore = false;
   closed = true; // the scanner is closed on the other side at this point
   return;
@@ -819,7 +825,7 @@ public final class AsyncKuduScanner {
   // is the easiest way.
   AsyncKuduScanner.this.tablet = super.getTablet();
   NewScanRequestPB.Builder newBuilder = NewScanRequestPB.newBuilder();
-  newBuilder.setLimit(limit); // currently ignored
+