Apache-Phoenix | 4.x-HBase-1.3 | Build Successful

2020-02-03 Thread Apache Jenkins Server
4.x-HBase-1.3 branch build status Successful

Source repository https://git-wip-us.apache.org/repos/asf?p=phoenix.git;a=shortlog;h=refs/heads/4.x-HBase-1.3

Compiled Artifacts https://builds.apache.org/job/Phoenix-4.x-HBase-1.3/lastSuccessfulBuild/artifact/

Test Report https://builds.apache.org/job/Phoenix-4.x-HBase-1.3/lastCompletedBuild/testReport/

Changes
[achouhan] PHOENIX-5704 Covered column updates are not generated for previously



Build times for last couple of runsLatest build time is the right most | Legend blue: normal, red: test failure, gray: timeout


Apache-Phoenix | 4.x-HBase-1.3 | Build Successful

2020-02-03 Thread Apache Jenkins Server
4.x-HBase-1.3 branch build status Successful

Source repository https://git-wip-us.apache.org/repos/asf?p=phoenix.git;a=shortlog;h=refs/heads/4.x-HBase-1.3

Compiled Artifacts https://builds.apache.org/job/Phoenix-4.x-HBase-1.3/lastSuccessfulBuild/artifact/

Test Report https://builds.apache.org/job/Phoenix-4.x-HBase-1.3/lastCompletedBuild/testReport/

Changes
[achouhan] PHOENIX-5704 Covered column updates are not generated for previously



Build times for last couple of runsLatest build time is the right most | Legend blue: normal, red: test failure, gray: timeout


Jenkins build is back to normal : Phoenix-4.x-HBase-1.3 #675

2020-02-03 Thread Apache Jenkins Server
See 




Apache Phoenix - Timeout crawler - Build https://builds.apache.org/job/Phoenix-master/2641/

2020-02-03 Thread Apache Jenkins Server
[...truncated 48 lines...]
Looking at the log, list of test(s) that timed-out:

Build:
https://builds.apache.org/job/Phoenix-master/2641/


Affected test class(es):
Set(['as SYSTEM'])


Build step 'Execute shell' marked build as failure
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any

Build failed in Jenkins: Phoenix | Master #2641

2020-02-03 Thread Apache Jenkins Server
See 


Changes:

[achouhan] PHOENIX-5704 Covered column updates are not generated for previously


--
[...truncated 116.18 KB...]
[INFO] Tests run: 50, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 353.391 
s - in org.apache.phoenix.tx.TxCheckpointIT
[INFO] Tests run: 66, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 414.891 
s - in org.apache.phoenix.tx.ParameterizedTransactionIT
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   SortMergeJoinMoreIT.testSubqueryWithoutData:287 ยป SQL Encountered 
exception in...
[INFO] 
[ERROR] Tests run: 3755, Failures: 0, Errors: 1, Skipped: 2
[INFO] 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.22.0:integration-test 
(HBaseManagedTimeTests) @ phoenix-core ---
[INFO] 
[INFO] ---
[INFO]  T E S T S
[INFO] ---
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.22.0:integration-test 
(NeedTheirOwnClusterTests) @ phoenix-core ---
[INFO] 
[INFO] ---
[INFO]  T E S T S
[INFO] ---
[INFO] Running 
org.apache.hadoop.hbase.regionserver.wal.WALReplayWithIndexWritesAndCompressedWALIT
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.003 
s - in 
org.apache.hadoop.hbase.regionserver.wal.WALReplayWithIndexWritesAndCompressedWALIT
[INFO] Running org.apache.phoenix.end2end.ConnectionUtilIT
[INFO] Running 
org.apache.hadoop.hbase.regionserver.wal.WALRecoveryRegionPostOpenIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.033 s 
- in org.apache.hadoop.hbase.regionserver.wal.WALRecoveryRegionPostOpenIT
[INFO] Running org.apache.phoenix.end2end.ConcurrentMutationsExtendedIT
[INFO] Running org.apache.phoenix.end2end.CountDistinctCompressionIT
[INFO] Running org.apache.phoenix.end2end.ContextClassloaderIT
[INFO] Running org.apache.phoenix.end2end.CsvBulkLoadToolIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 28.405 s 
- in org.apache.phoenix.end2end.ConnectionUtilIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.785 s 
- in org.apache.phoenix.end2end.CountDistinctCompressionIT
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.837 s 
- in org.apache.phoenix.end2end.ContextClassloaderIT
[INFO] Running org.apache.phoenix.end2end.CostBasedDecisionIT
[INFO] Running org.apache.phoenix.end2end.DropSchemaIT
[INFO] Running org.apache.phoenix.end2end.FlappingLocalIndexIT
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.212 s 
- in org.apache.phoenix.end2end.DropSchemaIT
[INFO] Running org.apache.phoenix.end2end.IndexExtendedIT
[INFO] Running org.apache.phoenix.end2end.IndexBuildTimestampIT
[INFO] Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 99.067 
s - in org.apache.phoenix.end2end.CsvBulkLoadToolIT
[INFO] Running org.apache.phoenix.end2end.IndexRebuildTaskIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.267 s 
- in org.apache.phoenix.end2end.IndexRebuildTaskIT
[INFO] Running org.apache.phoenix.end2end.IndexScrutinyToolForTenantIT
[INFO] Running org.apache.phoenix.end2end.IndexScrutinyToolIT
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 131.49 
s - in org.apache.phoenix.end2end.FlappingLocalIndexIT
[INFO] Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 134.605 
s - in org.apache.phoenix.end2end.IndexBuildTimestampIT
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 53.335 s 
- in org.apache.phoenix.end2end.IndexScrutinyToolForTenantIT
[INFO] Tests run: 48, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 151.227 
s - in org.apache.phoenix.end2end.IndexExtendedIT
[INFO] Running org.apache.phoenix.end2end.IndexToolForPartialBuildIT
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 243.326 
s - in org.apache.phoenix.end2end.ConcurrentMutationsExtendedIT
[INFO] Running 
org.apache.phoenix.end2end.IndexToolForPartialBuildWithNamespaceEnabledIT
[INFO] Running org.apache.phoenix.end2end.IndexToolIT
[INFO] Running org.apache.phoenix.end2end.MigrateSystemTablesToSystemNamespaceIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.622 s 
- in org.apache.phoenix.end2end.IndexToolForPartialBuildIT
[INFO] Running org.apache.phoenix.end2end.LocalIndexSplitMergeIT
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 38.219 s 
- in org.apache.phoenix.end2end.IndexToolForPartialBuildWithNamespaceEnabledIT
[INFO] Running 
org.apache.phoenix.end2end.OrderByWithServerClientSpoolingDisabledIT
[INFO] Running org.apache.phoenix.end2end.OrderByWithServerMemoryLimitIT
[INFO] Tests run: 

Apache Phoenix - Timeout crawler - Build https://builds.apache.org/job/Phoenix-master/2640/

2020-02-03 Thread Apache Jenkins Server
[...truncated 36 lines...]
Looking at the log, list of test(s) that timed-out:

Build:
https://builds.apache.org/job/Phoenix-master/2640/


Affected test class(es):
Set(['as SYSTEM'])


Build step 'Execute shell' marked build as failure
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any

Jenkins build is back to normal : Phoenix | Master #2640

2020-02-03 Thread Apache Jenkins Server
See 




Apache-Phoenix | 4.x-HBase-1.3 | Build Successful

2020-02-03 Thread Apache Jenkins Server
4.x-HBase-1.3 branch build status Successful

Source repository https://git-wip-us.apache.org/repos/asf?p=phoenix.git;a=shortlog;h=refs/heads/4.x-HBase-1.3

Compiled Artifacts https://builds.apache.org/job/Phoenix-4.x-HBase-1.3/lastSuccessfulBuild/artifact/

Test Report https://builds.apache.org/job/Phoenix-4.x-HBase-1.3/lastCompletedBuild/testReport/

Changes
[kadir] PHOENIX-5708 GlobalIndexChecker returns unverified index row cells



Build times for last couple of runsLatest build time is the right most | Legend blue: normal, red: test failure, gray: timeout


Jenkins build is back to normal : Phoenix-4.x-HBase-1.4 #386

2020-02-03 Thread Apache Jenkins Server
See 




Build failed in Jenkins: Phoenix-4.x-HBase-1.3 #674

2020-02-03 Thread Apache Jenkins Server
See 


Changes:

[kadir] PHOENIX-5708 GlobalIndexChecker returns unverified index row cells


--
[...truncated 104.91 KB...]
[INFO] Running 
org.apache.hadoop.hbase.regionserver.wal.WALReplayWithIndexWritesAndCompressedWALIT
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.005 
s - in 
org.apache.hadoop.hbase.regionserver.wal.WALReplayWithIndexWritesAndCompressedWALIT
[INFO] Running org.apache.phoenix.end2end.ConnectionUtilIT
[INFO] Running 
org.apache.hadoop.hbase.regionserver.wal.WALRecoveryRegionPostOpenIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.595 s 
- in org.apache.hadoop.hbase.regionserver.wal.WALRecoveryRegionPostOpenIT
[INFO] Running 
org.apache.phoenix.end2end.ColumnEncodedImmutableNonTxStatsCollectorIT
[INFO] Running 
org.apache.phoenix.end2end.ColumnEncodedMutableNonTxStatsCollectorIT
[INFO] Running org.apache.phoenix.end2end.ConcurrentMutationsExtendedIT
[INFO] Running org.apache.phoenix.end2end.ColumnEncodedMutableTxStatsCollectorIT
[INFO] Running 
org.apache.phoenix.end2end.ColumnEncodedImmutableTxStatsCollectorIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 57.226 s 
- in org.apache.phoenix.end2end.ConnectionUtilIT
[INFO] Running org.apache.phoenix.end2end.ContextClassloaderIT
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.663 s 
- in org.apache.phoenix.end2end.ContextClassloaderIT
[INFO] Running org.apache.phoenix.end2end.CostBasedDecisionIT
[INFO] Running org.apache.phoenix.end2end.CountDistinctCompressionIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.123 s 
- in org.apache.phoenix.end2end.CountDistinctCompressionIT
[WARNING] Tests run: 28, Failures: 0, Errors: 0, Skipped: 4, Time elapsed: 
186.316 s - in 
org.apache.phoenix.end2end.ColumnEncodedImmutableNonTxStatsCollectorIT
[WARNING] Tests run: 28, Failures: 0, Errors: 0, Skipped: 4, Time elapsed: 
183.536 s - in 
org.apache.phoenix.end2end.ColumnEncodedMutableNonTxStatsCollectorIT
[WARNING] Tests run: 28, Failures: 0, Errors: 0, Skipped: 4, Time elapsed: 
183.685 s - in 
org.apache.phoenix.end2end.ColumnEncodedImmutableTxStatsCollectorIT
[WARNING] Tests run: 28, Failures: 0, Errors: 0, Skipped: 4, Time elapsed: 
186.219 s - in org.apache.phoenix.end2end.ColumnEncodedMutableTxStatsCollectorIT
[INFO] Running org.apache.phoenix.end2end.CsvBulkLoadToolIT
[INFO] Running org.apache.phoenix.end2end.DropSchemaIT
[INFO] Running org.apache.phoenix.end2end.FlappingLocalIndexIT
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 301.643 
s - in org.apache.phoenix.end2end.ConcurrentMutationsExtendedIT
[INFO] Running org.apache.phoenix.end2end.IndexBuildTimestampIT
[INFO] Running org.apache.phoenix.end2end.IndexExtendedIT
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 47.319 s 
- in org.apache.phoenix.end2end.DropSchemaIT
[INFO] Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 170.957 
s - in org.apache.phoenix.end2end.CsvBulkLoadToolIT
[INFO] Running org.apache.phoenix.end2end.IndexRebuildTaskIT
[INFO] Running org.apache.phoenix.end2end.IndexScrutinyToolForTenantIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 35.913 s 
- in org.apache.phoenix.end2end.IndexRebuildTaskIT
[INFO] Running org.apache.phoenix.end2end.IndexScrutinyToolIT
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 94.529 s 
- in org.apache.phoenix.end2end.IndexScrutinyToolForTenantIT
[INFO] Running org.apache.phoenix.end2end.IndexToolForPartialBuildIT
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 224.771 
s - in org.apache.phoenix.end2end.FlappingLocalIndexIT
[INFO] Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 221.152 
s - in org.apache.phoenix.end2end.IndexBuildTimestampIT
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 34.561 s 
- in org.apache.phoenix.end2end.IndexToolForPartialBuildIT
[INFO] Tests run: 48, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 268.04 
s - in org.apache.phoenix.end2end.IndexExtendedIT
[INFO] Running 
org.apache.phoenix.end2end.IndexToolForPartialBuildWithNamespaceEnabledIT
[INFO] Running org.apache.phoenix.end2end.IndexToolIT
[INFO] Running org.apache.phoenix.end2end.MigrateSystemTablesToSystemNamespaceIT
[INFO] Running org.apache.phoenix.end2end.LocalIndexSplitMergeIT
[INFO] Running org.apache.phoenix.end2end.MaxLookbackIT
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 47.527 s 
- in org.apache.phoenix.end2end.IndexToolForPartialBuildWithNamespaceEnabledIT
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 70.539 s 
- in org.apache.phoenix.end2end.MaxLookbackIT
[INFO] Running 
org.apache.phoenix.end2end.NonColumnEncodedImmutableNonTxStatsCollectorIT
[INFO] Running 

[phoenix] branch 4.15-HBase-1.3 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.15-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.15-HBase-1.3 by this push:
 new 4102a53  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
4102a53 is described below

commit 4102a53b168288d2677d03b9f3706cec59a144c7
Author: Abhishek Singh Chouhan 
AuthorDate: Fri Jan 31 17:43:42 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 .../filter/ApplyAndFilterDeletesFilter.java|  9 
 .../index/scanner/FilteredKeyValueScanner.java |  8 +++-
 3 files changed, 55 insertions(+), 15 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 8d42075..379ad86 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -766,11 +766,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -785,9 +785,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column 

[phoenix] branch 4.15-HBase-1.5 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.15-HBase-1.5
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.15-HBase-1.5 by this push:
 new 426078e  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
426078e is described below

commit 426078ea9794f0f5a5037fc579bbf1c27c02409e
Author: Abhishek Singh Chouhan 
AuthorDate: Mon Feb 3 10:12:00 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 1 file changed, 48 insertions(+), 5 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index f17451d..f61f02c 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -767,11 +767,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -786,9 +786,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column after two successive deletes to 
an indexed row
*/



[phoenix] branch 4.15-HBase-1.4 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.15-HBase-1.4
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.15-HBase-1.4 by this push:
 new 329acc8  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
329acc8 is described below

commit 329acc8b3cfd958456464e2faddaf50e1331b45c
Author: Abhishek Singh Chouhan 
AuthorDate: Mon Feb 3 10:12:00 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 1 file changed, 48 insertions(+), 5 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index f17451d..f61f02c 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -767,11 +767,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -786,9 +786,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column after two successive deletes to 
an indexed row
*/



[phoenix] branch 4.14-HBase-1.3 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.14-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.14-HBase-1.3 by this push:
 new ff32ea1  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
ff32ea1 is described below

commit ff32ea1959763df72e81182a6c8cb5f4fe83ac52
Author: Abhishek Singh Chouhan 
AuthorDate: Mon Feb 3 16:16:57 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 45 +-
 .../filter/ApplyAndFilterDeletesFilter.java|  9 -
 .../index/scanner/FilteredKeyValueScanner.java |  8 +++-
 3 files changed, 51 insertions(+), 11 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 9a9fa91..e47fe4c 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -908,7 +908,50 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   store.triggerMajorCompaction();
   store.compactRecentForTestingAssumingDefaultPolicy(1);
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
 
   /**
* PHOENIX-4988
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java
index b5c3414..66e2818 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java
@@ -53,7 +53,6 @@ import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
  */
 public class ApplyAndFilterDeletesFilter extends FilterBase {
 
-  private boolean done = false;
   List families;
   private final DeleteTracker coveringDelete = new DeleteTracker();
   private Hinter currentHint;
@@ -95,7 +94,6 @@ public class ApplyAndFilterDeletesFilter extends FilterBase {
   @Override
   public void reset(){
 this.coveringDelete.reset();
-this.done = false;
   }
   
   
@@ -106,11 +104,6 @@ public class ApplyAndFilterDeletesFilter extends 
FilterBase {
 
   @Override
   public ReturnCode filterKeyValue(Cell next) {
-// we marked ourselves done, but the END_ROW_KEY didn't manage to seek to 

[phoenix] branch 4.14-HBase-1.4 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.14-HBase-1.4
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.14-HBase-1.4 by this push:
 new 0975e11  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
0975e11 is described below

commit 0975e11e246a7d992261aee6777ac03448554559
Author: Abhishek Singh Chouhan 
AuthorDate: Mon Feb 3 12:05:19 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 1 file changed, 48 insertions(+), 5 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index a2635d7..4ebeb7b 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -930,11 +930,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create index " + indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -949,9 +949,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column after two successive deletes to 
an indexed row
*/



[phoenix] branch 4.x-HBase-1.3 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.x-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.3 by this push:
 new 06533eb  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
06533eb is described below

commit 06533ebf24bd439af175fc76021c4c415f432851
Author: Abhishek Singh Chouhan 
AuthorDate: Fri Jan 31 17:43:42 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 .../filter/ApplyAndFilterDeletesFilter.java|  9 
 .../index/scanner/FilteredKeyValueScanner.java |  8 +++-
 3 files changed, 55 insertions(+), 15 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 8d42075..379ad86 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -766,11 +766,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -785,9 +785,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column 

[phoenix] branch 4.x-HBase-1.4 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.x-HBase-1.4
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.4 by this push:
 new 7f86943  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
7f86943 is described below

commit 7f86943e5eaba424c34efddd2847d61eef6e38c6
Author: Abhishek Singh Chouhan 
AuthorDate: Mon Feb 3 10:12:00 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 1 file changed, 48 insertions(+), 5 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index f17451d..f61f02c 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -767,11 +767,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -786,9 +786,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column after two successive deletes to 
an indexed row
*/



[phoenix] branch 4.x-HBase-1.5 updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch 4.x-HBase-1.5
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.5 by this push:
 new 0e4f979  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
0e4f979 is described below

commit 0e4f9790d6380b8d57c55d3cee75dea5617d35f2
Author: Abhishek Singh Chouhan 
AuthorDate: Mon Feb 3 10:12:00 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 53 --
 1 file changed, 48 insertions(+), 5 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index f17451d..f61f02c 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -767,11 +767,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -786,9 +786,52 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   assertEquals(0.5F, rs.getFloat(1), 0.0);
   assertEquals("foo", rs.getString(3));
   }
-  }
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
 
-  /**
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+assertTrue(rs.next());
+assertEquals(1, rs.getInt(2));
+assertEquals(null, rs.getString(1));
+assertEquals("bar", rs.getString(3));
+}
+}
+
+/**
* PHOENIX-4988
* Test updating only a non-indexed column after two successive deletes to 
an indexed row
*/



[phoenix] branch master updated: PHOENIX-5704 Covered column updates are not generated for previously deleted data table row

2020-02-03 Thread achouhan
This is an automated email from the ASF dual-hosted git repository.

achouhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/master by this push:
 new c8e4990  PHOENIX-5704 Covered column updates are not generated for 
previously deleted data table row
c8e4990 is described below

commit c8e4990a7fcec1775e3bb252a8baec935762b826
Author: Abhishek Singh Chouhan 
AuthorDate: Fri Jan 31 18:32:06 2020 -0800

PHOENIX-5704 Covered column updates are not generated for previously 
deleted data table row
---
 .../phoenix/end2end/index/MutableIndexIT.java  | 51 +++---
 1 file changed, 46 insertions(+), 5 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 0810aa3..23c1956 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -31,7 +31,6 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.List;
 import java.util.Properties;
 
 import org.apache.hadoop.hbase.TableName;
@@ -665,7 +664,6 @@ public class MutableIndexIT extends ParallelStatsDisabledIT 
{
   }
   }
 
-
   @Test
   public void testUpsertingDeletedRowShouldGiveProperDataWithIndexes() throws 
Exception {
   testUpsertingDeletedRowShouldGiveProperDataWithIndexes(false);
@@ -686,11 +684,11 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   try (Connection conn = getConnection()) {
 conn.createStatement().execute(
 "create table " + fullTableName + " (id integer primary key, "
-+ (multiCf ? columnFamily1 : "") + "f float, "
-+ (multiCf ? columnFamily2 : "") + "s varchar)" + 
tableDDLOptions);
++ (multiCf ? columnFamily1 + "." : "") + "f float, "
++ (multiCf ? columnFamily2 + "." : "") + "s varchar)" 
+ tableDDLOptions);
 conn.createStatement().execute(
 "create " + (localIndex ? "LOCAL" : "") + " index " + 
indexName + " on " + fullTableName + " ("
-+ (multiCf ? columnFamily1 : "") + "f) include 
("+(multiCf ? columnFamily2 : "") +"s)");
++ (multiCf ? columnFamily1 + "." : "") + "f) include 
("+(multiCf ? columnFamily2 + "." : "") +"s)");
 conn.createStatement().execute(
 "upsert into " + fullTableName + " values (1, 0.5, 'foo')");
   conn.commit();
@@ -707,6 +705,49 @@ public class MutableIndexIT extends 
ParallelStatsDisabledIT {
   } 
   }
 
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumn() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(false);
+}
+
+@Test
+public void testUpsertingDeletedRowWithNullCoveredColumnMultiCfs() throws 
Exception {
+testUpsertingDeletedRowWithNullCoveredColumn(true);
+}
+
+public void testUpsertingDeletedRowWithNullCoveredColumn(boolean multiCf) 
throws Exception {
+String tableName = "TBL_" + generateUniqueName();
+String indexName = "IDX_" + generateUniqueName();
+String columnFamily1 = "cf1";
+String columnFamily2 = "cf2";
+String fullTableName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+String fullIndexName = 
SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+try (Connection conn = getConnection()) {
+conn.createStatement()
+.execute("create table " + fullTableName + " (id integer 
primary key, "
++ (multiCf ? columnFamily1 + "." : "") + "f 
varchar, "
++ (multiCf ? columnFamily2 + "." : "") + "s 
varchar)"
++ tableDDLOptions);
+conn.createStatement()
+.execute("create " + (localIndex ? "LOCAL" : "") + " index 
" + indexName
++ " on " + fullTableName + " (" + (multiCf ? 
columnFamily1 + "." : "")
++ "f) include (" + (multiCf ? columnFamily2 + "." 
: "") + "s)");
+conn.createStatement()
+.execute("upsert into " + fullTableName + " values (1, 
'foo', 'bar')");
+conn.commit();
+conn.createStatement().execute("delete from  " + fullTableName + " 
where id = 1");
+conn.commit();
+conn.createStatement()
+.execute("upsert into  " + fullTableName + " values (1, 
null, 'bar')");
+conn.commit();
+ResultSet rs = conn.createStatement().executeQuery("select * from 
" + fullIndexName);
+

[phoenix] branch 4.14-HBase-1.4 updated: PHOENIX-5708 GlobalIndexChecker returns unverified index row cells

2020-02-03 Thread kadir
This is an automated email from the ASF dual-hosted git repository.

kadir pushed a commit to branch 4.14-HBase-1.4
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.14-HBase-1.4 by this push:
 new 1716d14  PHOENIX-5708 GlobalIndexChecker returns unverified index row 
cells
1716d14 is described below

commit 1716d145849d37758b8adf9fb4d5d09c4eb76918
Author: Kadir 
AuthorDate: Sat Feb 1 22:02:01 2020 -0800

PHOENIX-5708 GlobalIndexChecker returns unverified index row cells
---
 .../org/apache/phoenix/end2end/IndexToolIT.java| 14 ++-
 .../end2end/index/GlobalIndexCheckerIT.java| 38 +++
 .../coprocessor/IndexRebuildRegionScanner.java |  8 +++-
 .../apache/phoenix/index/GlobalIndexChecker.java   | 43 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
index c129100..9dde323 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
@@ -190,8 +190,8 @@ public class IndexToolIT extends ParallelStatsEnabledIT {
 
 @Test
 public void testWithSetNull() throws Exception {
-// This test is for building non-transactional global indexes with 
direct api
-if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId) {
+// This test is for building non-transactional mutable global indexes 
with direct api
+if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId || !mutable) {
 return;
 }
 // This tests the cases where a column having a null value is 
overwritten with a not null value and vice versa;
@@ -236,6 +236,16 @@ public class IndexToolIT extends ParallelStatsEnabledIT {
 TestUtil.doMajorCompaction(conn, dataTableFullName);
 actualRowCount = IndexScrutiny.scrutinizeIndex(conn, 
dataTableFullName, indexTableFullName);
 assertEquals(NROWS, actualRowCount);
+indexTool = runIndexTool(directApi, useSnapshot, schemaName, 
dataTableName, indexTableName, null,
+0, IndexTool.IndexVerifyType.ONLY, new String[0]);
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(INPUT_RECORDS).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(SCANNED_DATA_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(REBUILT_INDEX_ROW_COUNT).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_VALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_EXPIRED_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_INVALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_MISSING_INDEX_ROW_COUNT).getValue());
+dropIndexToolTables(conn);
 }
 }
 
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
index d0cdb3d..30f9b34 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
@@ -269,6 +269,44 @@ public class GlobalIndexCheckerIT extends 
BaseUniqueNamesOwnClusterIT {
 }
 
 @Test
+public void testUnverifiedValuesAreNotVisible() throws Exception {
+if (async) {
+// No need to run the same test twice one for async = true and the 
other for async = false
+return;
+}
+try (Connection conn = DriverManager.getConnection(getUrl())) {
+String dataTableName = generateUniqueName();
+conn.createStatement().execute("create table " + dataTableName +
+" (id varchar(10) not null primary key, val1 varchar(10), 
val2 varchar(10), val3 varchar(10))" + tableDDLOptions);
+String indexTableName = generateUniqueName();
+conn.createStatement().execute("CREATE INDEX " + indexTableName + 
" on " +
+dataTableName + " (val1) include (val2, val3)");
+
+// Configure IndexRegionObserver to fail the data write phase
+IndexRegionObserver.setFailDataTableUpdatesForTesting(true);
+conn.createStatement().execute("upsert into " + dataTableName + " 
values ('a', 'ab','abc', 'abcd')");
+commitWithException(conn);
+// The above upsert will create an unverified index row
+// 

[phoenix] branch 4.14-HBase-1.3 updated: PHOENIX-5708 GlobalIndexChecker returns unverified index row cells

2020-02-03 Thread kadir
This is an automated email from the ASF dual-hosted git repository.

kadir pushed a commit to branch 4.14-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.14-HBase-1.3 by this push:
 new e104e90  PHOENIX-5708 GlobalIndexChecker returns unverified index row 
cells
e104e90 is described below

commit e104e905d42db2d6046996fc16d0f2e6382fbf63
Author: Kadir 
AuthorDate: Sat Feb 1 22:02:01 2020 -0800

PHOENIX-5708 GlobalIndexChecker returns unverified index row cells
---
 .../org/apache/phoenix/end2end/IndexToolIT.java| 14 ++-
 .../end2end/index/GlobalIndexCheckerIT.java| 38 +++
 .../coprocessor/IndexRebuildRegionScanner.java |  8 +++-
 .../apache/phoenix/index/GlobalIndexChecker.java   | 43 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
index c129100..9dde323 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
@@ -190,8 +190,8 @@ public class IndexToolIT extends ParallelStatsEnabledIT {
 
 @Test
 public void testWithSetNull() throws Exception {
-// This test is for building non-transactional global indexes with 
direct api
-if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId) {
+// This test is for building non-transactional mutable global indexes 
with direct api
+if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId || !mutable) {
 return;
 }
 // This tests the cases where a column having a null value is 
overwritten with a not null value and vice versa;
@@ -236,6 +236,16 @@ public class IndexToolIT extends ParallelStatsEnabledIT {
 TestUtil.doMajorCompaction(conn, dataTableFullName);
 actualRowCount = IndexScrutiny.scrutinizeIndex(conn, 
dataTableFullName, indexTableFullName);
 assertEquals(NROWS, actualRowCount);
+indexTool = runIndexTool(directApi, useSnapshot, schemaName, 
dataTableName, indexTableName, null,
+0, IndexTool.IndexVerifyType.ONLY, new String[0]);
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(INPUT_RECORDS).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(SCANNED_DATA_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(REBUILT_INDEX_ROW_COUNT).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_VALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_EXPIRED_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_INVALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_MISSING_INDEX_ROW_COUNT).getValue());
+dropIndexToolTables(conn);
 }
 }
 
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
index d0cdb3d..30f9b34 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
@@ -269,6 +269,44 @@ public class GlobalIndexCheckerIT extends 
BaseUniqueNamesOwnClusterIT {
 }
 
 @Test
+public void testUnverifiedValuesAreNotVisible() throws Exception {
+if (async) {
+// No need to run the same test twice one for async = true and the 
other for async = false
+return;
+}
+try (Connection conn = DriverManager.getConnection(getUrl())) {
+String dataTableName = generateUniqueName();
+conn.createStatement().execute("create table " + dataTableName +
+" (id varchar(10) not null primary key, val1 varchar(10), 
val2 varchar(10), val3 varchar(10))" + tableDDLOptions);
+String indexTableName = generateUniqueName();
+conn.createStatement().execute("CREATE INDEX " + indexTableName + 
" on " +
+dataTableName + " (val1) include (val2, val3)");
+
+// Configure IndexRegionObserver to fail the data write phase
+IndexRegionObserver.setFailDataTableUpdatesForTesting(true);
+conn.createStatement().execute("upsert into " + dataTableName + " 
values ('a', 'ab','abc', 'abcd')");
+commitWithException(conn);
+// The above upsert will create an unverified index row
+// 

[phoenix] branch 4.x-HBase-1.3 updated: PHOENIX-5708 GlobalIndexChecker returns unverified index row cells

2020-02-03 Thread kadir
This is an automated email from the ASF dual-hosted git repository.

kadir pushed a commit to branch 4.x-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.3 by this push:
 new 5d0f5b1  PHOENIX-5708 GlobalIndexChecker returns unverified index row 
cells
5d0f5b1 is described below

commit 5d0f5b1495f0d11a9206208c2b913156cfa0c014
Author: Kadir 
AuthorDate: Sat Feb 1 22:02:01 2020 -0800

PHOENIX-5708 GlobalIndexChecker returns unverified index row cells
---
 .../org/apache/phoenix/end2end/IndexToolIT.java| 14 ++-
 .../end2end/index/GlobalIndexCheckerIT.java| 38 +++
 .../coprocessor/IndexRebuildRegionScanner.java |  8 +++-
 .../apache/phoenix/index/GlobalIndexChecker.java   | 43 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
index 020541f..9cd9e53 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
@@ -199,8 +199,8 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 
 @Test
 public void testWithSetNull() throws Exception {
-// This test is for building non-transactional global indexes with 
direct api
-if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId) {
+// This test is for building non-transactional mutable global indexes 
with direct api
+if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId || !mutable) {
 return;
 }
 // This tests the cases where a column having a null value is 
overwritten with a not null value and vice versa;
@@ -245,6 +245,16 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 TestUtil.doMajorCompaction(conn, dataTableFullName);
 actualRowCount = IndexScrutiny.scrutinizeIndex(conn, 
dataTableFullName, indexTableFullName);
 assertEquals(NROWS, actualRowCount);
+indexTool = runIndexTool(directApi, useSnapshot, schemaName, 
dataTableName, indexTableName, null,
+0, IndexTool.IndexVerifyType.ONLY, new String[0]);
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(INPUT_RECORDS).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(SCANNED_DATA_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(REBUILT_INDEX_ROW_COUNT).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_VALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_EXPIRED_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_INVALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_MISSING_INDEX_ROW_COUNT).getValue());
+dropIndexToolTables(conn);
 }
 }
 
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
index a825826..55c7d31 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
@@ -269,6 +269,44 @@ public class GlobalIndexCheckerIT extends 
BaseUniqueNamesOwnClusterIT {
 }
 
 @Test
+public void testUnverifiedValuesAreNotVisible() throws Exception {
+if (async) {
+// No need to run the same test twice one for async = true and the 
other for async = false
+return;
+}
+try (Connection conn = DriverManager.getConnection(getUrl())) {
+String dataTableName = generateUniqueName();
+conn.createStatement().execute("create table " + dataTableName +
+" (id varchar(10) not null primary key, val1 varchar(10), 
val2 varchar(10), val3 varchar(10))" + tableDDLOptions);
+String indexTableName = generateUniqueName();
+conn.createStatement().execute("CREATE INDEX " + indexTableName + 
" on " +
+dataTableName + " (val1) include (val2, val3)");
+
+// Configure IndexRegionObserver to fail the data write phase
+IndexRegionObserver.setFailDataTableUpdatesForTesting(true);
+conn.createStatement().execute("upsert into " + dataTableName + " 
values ('a', 'ab','abc', 'abcd')");
+commitWithException(conn);
+// The above upsert will create an unverified index row
+

[phoenix] branch 4.x-HBase-1.4 updated: PHOENIX-5708 GlobalIndexChecker returns unverified index row cells

2020-02-03 Thread kadir
This is an automated email from the ASF dual-hosted git repository.

kadir pushed a commit to branch 4.x-HBase-1.4
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.4 by this push:
 new 694c90a  PHOENIX-5708 GlobalIndexChecker returns unverified index row 
cells
694c90a is described below

commit 694c90ada52851328949196e47fcfc60474de02b
Author: Kadir 
AuthorDate: Sat Feb 1 22:02:01 2020 -0800

PHOENIX-5708 GlobalIndexChecker returns unverified index row cells
---
 .../org/apache/phoenix/end2end/IndexToolIT.java| 14 ++-
 .../end2end/index/GlobalIndexCheckerIT.java| 38 +++
 .../coprocessor/IndexRebuildRegionScanner.java |  8 +++-
 .../apache/phoenix/index/GlobalIndexChecker.java   | 43 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
index f8ae8b5..d3ca67d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
@@ -198,8 +198,8 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 
 @Test
 public void testWithSetNull() throws Exception {
-// This test is for building non-transactional global indexes with 
direct api
-if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId) {
+// This test is for building non-transactional mutable global indexes 
with direct api
+if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId || !mutable) {
 return;
 }
 // This tests the cases where a column having a null value is 
overwritten with a not null value and vice versa;
@@ -244,6 +244,16 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 TestUtil.doMajorCompaction(conn, dataTableFullName);
 actualRowCount = IndexScrutiny.scrutinizeIndex(conn, 
dataTableFullName, indexTableFullName);
 assertEquals(NROWS, actualRowCount);
+indexTool = runIndexTool(directApi, useSnapshot, schemaName, 
dataTableName, indexTableName, null,
+0, IndexTool.IndexVerifyType.ONLY, new String[0]);
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(INPUT_RECORDS).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(SCANNED_DATA_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(REBUILT_INDEX_ROW_COUNT).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_VALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_EXPIRED_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_INVALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_MISSING_INDEX_ROW_COUNT).getValue());
+dropIndexToolTables(conn);
 }
 }
 
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
index a825826..55c7d31 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
@@ -269,6 +269,44 @@ public class GlobalIndexCheckerIT extends 
BaseUniqueNamesOwnClusterIT {
 }
 
 @Test
+public void testUnverifiedValuesAreNotVisible() throws Exception {
+if (async) {
+// No need to run the same test twice one for async = true and the 
other for async = false
+return;
+}
+try (Connection conn = DriverManager.getConnection(getUrl())) {
+String dataTableName = generateUniqueName();
+conn.createStatement().execute("create table " + dataTableName +
+" (id varchar(10) not null primary key, val1 varchar(10), 
val2 varchar(10), val3 varchar(10))" + tableDDLOptions);
+String indexTableName = generateUniqueName();
+conn.createStatement().execute("CREATE INDEX " + indexTableName + 
" on " +
+dataTableName + " (val1) include (val2, val3)");
+
+// Configure IndexRegionObserver to fail the data write phase
+IndexRegionObserver.setFailDataTableUpdatesForTesting(true);
+conn.createStatement().execute("upsert into " + dataTableName + " 
values ('a', 'ab','abc', 'abcd')");
+commitWithException(conn);
+// The above upsert will create an unverified index row
+

[phoenix] branch 4.x-HBase-1.5 updated: PHOENIX-5708 GlobalIndexChecker returns unverified index row cells

2020-02-03 Thread kadir
This is an automated email from the ASF dual-hosted git repository.

kadir pushed a commit to branch 4.x-HBase-1.5
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.5 by this push:
 new 598b61c  PHOENIX-5708 GlobalIndexChecker returns unverified index row 
cells
598b61c is described below

commit 598b61c864354307cd5bd7b3a31c35f971e298fe
Author: Kadir 
AuthorDate: Sat Feb 1 22:02:01 2020 -0800

PHOENIX-5708 GlobalIndexChecker returns unverified index row cells
---
 .../org/apache/phoenix/end2end/IndexToolIT.java| 14 ++-
 .../end2end/index/GlobalIndexCheckerIT.java| 38 +++
 .../coprocessor/IndexRebuildRegionScanner.java |  8 +++-
 .../apache/phoenix/index/GlobalIndexChecker.java   | 43 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
index f8ae8b5..d3ca67d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
@@ -198,8 +198,8 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 
 @Test
 public void testWithSetNull() throws Exception {
-// This test is for building non-transactional global indexes with 
direct api
-if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId) {
+// This test is for building non-transactional mutable global indexes 
with direct api
+if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId || !mutable) {
 return;
 }
 // This tests the cases where a column having a null value is 
overwritten with a not null value and vice versa;
@@ -244,6 +244,16 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 TestUtil.doMajorCompaction(conn, dataTableFullName);
 actualRowCount = IndexScrutiny.scrutinizeIndex(conn, 
dataTableFullName, indexTableFullName);
 assertEquals(NROWS, actualRowCount);
+indexTool = runIndexTool(directApi, useSnapshot, schemaName, 
dataTableName, indexTableName, null,
+0, IndexTool.IndexVerifyType.ONLY, new String[0]);
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(INPUT_RECORDS).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(SCANNED_DATA_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(REBUILT_INDEX_ROW_COUNT).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_VALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_EXPIRED_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_INVALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_MISSING_INDEX_ROW_COUNT).getValue());
+dropIndexToolTables(conn);
 }
 }
 
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
index a825826..55c7d31 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
@@ -269,6 +269,44 @@ public class GlobalIndexCheckerIT extends 
BaseUniqueNamesOwnClusterIT {
 }
 
 @Test
+public void testUnverifiedValuesAreNotVisible() throws Exception {
+if (async) {
+// No need to run the same test twice one for async = true and the 
other for async = false
+return;
+}
+try (Connection conn = DriverManager.getConnection(getUrl())) {
+String dataTableName = generateUniqueName();
+conn.createStatement().execute("create table " + dataTableName +
+" (id varchar(10) not null primary key, val1 varchar(10), 
val2 varchar(10), val3 varchar(10))" + tableDDLOptions);
+String indexTableName = generateUniqueName();
+conn.createStatement().execute("CREATE INDEX " + indexTableName + 
" on " +
+dataTableName + " (val1) include (val2, val3)");
+
+// Configure IndexRegionObserver to fail the data write phase
+IndexRegionObserver.setFailDataTableUpdatesForTesting(true);
+conn.createStatement().execute("upsert into " + dataTableName + " 
values ('a', 'ab','abc', 'abcd')");
+commitWithException(conn);
+// The above upsert will create an unverified index row
+

[phoenix] branch master updated: PHOENIX-5708 GlobalIndexChecker returns unverified index row cells

2020-02-03 Thread kadir
This is an automated email from the ASF dual-hosted git repository.

kadir pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/master by this push:
 new 26cf02a  PHOENIX-5708 GlobalIndexChecker returns unverified index row 
cells
26cf02a is described below

commit 26cf02aae9c301d4ea65ec81370e1864a0d83c5d
Author: Kadir 
AuthorDate: Sat Feb 1 22:02:01 2020 -0800

PHOENIX-5708 GlobalIndexChecker returns unverified index row cells
---
 .../org/apache/phoenix/end2end/IndexToolIT.java| 14 ++-
 .../end2end/index/GlobalIndexCheckerIT.java| 38 +++
 .../coprocessor/IndexRebuildRegionScanner.java |  8 +++-
 .../apache/phoenix/index/GlobalIndexChecker.java   | 43 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
index ff679be..5cf9da6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java
@@ -196,8 +196,8 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 
 @Test
 public void testWithSetNull() throws Exception {
-// This test is for building non-transactional global indexes with 
direct api
-if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId) {
+// This test is for building non-transactional mutable global indexes 
with direct api
+if (localIndex || transactional || !directApi || useSnapshot || 
useTenantId || !mutable) {
 return;
 }
 // This tests the cases where a column having a null value is 
overwritten with a not null value and vice versa;
@@ -242,6 +242,16 @@ public class IndexToolIT extends 
BaseUniqueNamesOwnClusterIT {
 TestUtil.doMajorCompaction(conn, dataTableFullName);
 actualRowCount = IndexScrutiny.scrutinizeIndex(conn, 
dataTableFullName, indexTableFullName);
 assertEquals(NROWS, actualRowCount);
+indexTool = runIndexTool(directApi, useSnapshot, schemaName, 
dataTableName, indexTableName, null,
+0, IndexTool.IndexVerifyType.ONLY, new String[0]);
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(INPUT_RECORDS).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(SCANNED_DATA_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(REBUILT_INDEX_ROW_COUNT).getValue());
+assertEquals(NROWS, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_VALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_EXPIRED_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_INVALID_INDEX_ROW_COUNT).getValue());
+assertEquals(0, 
indexTool.getJob().getCounters().findCounter(BEFORE_REBUILD_MISSING_INDEX_ROW_COUNT).getValue());
+dropIndexToolTables(conn);
 }
 }
 
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
index 5861323..144bcf1 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexCheckerIT.java
@@ -262,6 +262,44 @@ public class GlobalIndexCheckerIT extends 
BaseUniqueNamesOwnClusterIT {
 }
 
 @Test
+public void testUnverifiedValuesAreNotVisible() throws Exception {
+if (async) {
+// No need to run the same test twice one for async = true and the 
other for async = false
+return;
+}
+try (Connection conn = DriverManager.getConnection(getUrl())) {
+String dataTableName = generateUniqueName();
+conn.createStatement().execute("create table " + dataTableName +
+" (id varchar(10) not null primary key, val1 varchar(10), 
val2 varchar(10), val3 varchar(10))" + tableDDLOptions);
+String indexTableName = generateUniqueName();
+conn.createStatement().execute("CREATE INDEX " + indexTableName + 
" on " +
+dataTableName + " (val1) include (val2, val3)");
+
+// Configure IndexRegionObserver to fail the data write phase
+IndexRegionObserver.setFailDataTableUpdatesForTesting(true);
+conn.createStatement().execute("upsert into " + dataTableName + " 
values ('a', 'ab','abc', 'abcd')");
+commitWithException(conn);
+// The above upsert will create an unverified index row
+// Configure 

Build failed in Jenkins: Phoenix Compile Compatibility with HBase #1260

2020-02-03 Thread Apache Jenkins Server
See 


Changes:


--
Started by timer
Running as SYSTEM
[EnvInject] - Loading node environment variables.
Building remotely on H35 (ubuntu) in workspace 

[Phoenix_Compile_Compat_wHBase] $ /bin/bash /tmp/jenkins153227712101447850.sh
core file size  (blocks, -c) 0
data seg size   (kbytes, -d) unlimited
scheduling priority (-e) 0
file size   (blocks, -f) unlimited
pending signals (-i) 386461
max locked memory   (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files  (-n) 6
pipe size(512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority  (-r) 0
stack size  (kbytes, -s) 8192
cpu time   (seconds, -t) unlimited
max user processes  (-u) 10240
virtual memory  (kbytes, -v) unlimited
file locks  (-x) unlimited
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
physical id : 0
physical id : 1
MemTotal:   98978412 kB
MemFree:23184504 kB
Filesystem  Size  Used Avail Use% Mounted on
udev 48G 0   48G   0% /dev
tmpfs   9.5G  1.6M  9.5G   1% /run
/dev/sda3   3.6T  548G  2.9T  16% /
tmpfs48G  4.0K   48G   1% /dev/shm
tmpfs   5.0M 0  5.0M   0% /run/lock
tmpfs48G 0   48G   0% /sys/fs/cgroup
/dev/sda2   473M  159M  290M  36% /boot
tmpfs   9.5G  4.0K  9.5G   1% /run/user/910
/dev/loop8   90M   90M 0 100% /snap/core/8213
/dev/loop0   90M   90M 0 100% /snap/core/8268
/dev/loop2   55M   55M 0 100% /snap/core18/1650
/dev/loop6   60M   60M 0 100% /snap/snapcraft/3943
/dev/loop5   60M   60M 0 100% /snap/snapcraft/3970
/dev/loop4   65M   65M 0 100% /snap/lxd/13140
/dev/loop3   65M   65M 0 100% /snap/lxd/13162
/dev/loop1   55M   55M 0 100% /snap/core18/1668
apache-maven-2.2.1
apache-maven-3.0.5
apache-maven-3.1.1
apache-maven-3.2.5
apache-maven-3.3.9
apache-maven-3.5.2
apache-maven-3.5.4
apache-maven-3.6.0
apache-maven-3.6.2
latest
latest2
latest3


===
Verifying compile level compatibility with HBase 0.98 with Phoenix 
4.x-HBase-0.98
===

Cloning into 'hbase'...
Checking out files:  77% (3928/5041)   Checking out files:  78% (3932/5041)   
Checking out files:  79% (3983/5041)   Checking out files:  80% (4033/5041)   
Checking out files:  81% (4084/5041)   Checking out files:  82% (4134/5041)   
Checking out files:  83% (4185/5041)   Checking out files:  84% (4235/5041)   
Checking out files:  85% (4285/5041)   Checking out files:  86% (4336/5041)   
Checking out files:  87% (4386/5041)   Checking out files:  88% (4437/5041)   
Checking out files:  89% (4487/5041)   Checking out files:  90% (4537/5041)   
Checking out files:  91% (4588/5041)   Checking out files:  92% (4638/5041)   
Checking out files:  93% (4689/5041)   Checking out files:  94% (4739/5041)   
Checking out files:  95% (4789/5041)   Checking out files:  96% (4840/5041)   
Checking out files:  97% (4890/5041)   Checking out files:  98% (4941/5041)   
Checking out files:  99% (4991/5041)   Checking out files: 100% (5041/5041)   
Checking out files: 100% (5041/5041), done.
Switched to a new branch '0.98'
Branch '0.98' set up to track remote branch '0.98' from 'origin'.
[ERROR] Plugin org.codehaus.mojo:findbugs-maven-plugin:2.5.2 or one of its 
dependencies could not be resolved: Failed to read artifact descriptor for 
org.codehaus.mojo:findbugs-maven-plugin:jar:2.5.2: Could not transfer artifact 
org.codehaus.mojo:findbugs-maven-plugin:pom:2.5.2 from/to central 
(https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version 
-> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please 
read the following articles:
[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
Build step 'Execute shell' marked build as failure