This is an automated email from the ASF dual-hosted git repository. chinmayskulkarni 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 af0865f PHOENIX-5714 Upgrade to 4.16 throwing ColumnNotFoundException af0865f is described below commit af0865f9e6139841f794d8a8f0b44fc57e139dcb Author: Sandeep Guggilam <sguggi...@sandeepg-ltm.internal.salesforce.com> AuthorDate: Thu Feb 6 17:29:50 2020 -0800 PHOENIX-5714 Upgrade to 4.16 throwing ColumnNotFoundException Signed-off-by: Chinmay Kulkarni <chinmayskulka...@apache.org> --- .../phoenix/coprocessor/MetaDataProtocol.java | 5 +-- .../phoenix/query/ConnectionQueryServicesImpl.java | 37 +++++++++++++++------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java index 52f0835..9fb308f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java @@ -40,11 +40,11 @@ import org.apache.phoenix.schema.PTable; import org.apache.phoenix.schema.PTableImpl; import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.util.ByteUtil; +import org.apache.phoenix.util.MetaDataUtil; import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.protobuf.ByteString; -import org.apache.phoenix.util.MetaDataUtil; /** * @@ -97,7 +97,8 @@ public abstract class MetaDataProtocol extends MetaDataService { // TODO Need to account for the inevitable 4.14 release too public static final long MIN_SYSTEM_TABLE_TIMESTAMP_5_0_0 = MIN_SYSTEM_TABLE_TIMESTAMP_4_14_0; public static final long MIN_SYSTEM_TABLE_TIMESTAMP_4_15_0 = MIN_TABLE_TIMESTAMP + 29; - public static final long MIN_SYSTEM_TABLE_TIMESTAMP_5_1_0 = MIN_SYSTEM_TABLE_TIMESTAMP_4_15_0; + public static final long MIN_SYSTEM_TABLE_TIMESTAMP_4_16_0 = MIN_TABLE_TIMESTAMP + 31; + public static final long MIN_SYSTEM_TABLE_TIMESTAMP_5_1_0 = MIN_SYSTEM_TABLE_TIMESTAMP_4_16_0; // MIN_SYSTEM_TABLE_TIMESTAMP needs to be set to the max of all the MIN_SYSTEM_TABLE_TIMESTAMP_* constants public static final long MIN_SYSTEM_TABLE_TIMESTAMP = MIN_SYSTEM_TABLE_TIMESTAMP_5_1_0; diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java index 20308a5..06f44d4 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java @@ -17,12 +17,13 @@ */ package org.apache.phoenix.query; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.KEEP_DELETED_CELLS; import static org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.MAX_VERSIONS; -import static org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.TTL; import static org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.REPLICATION_SCOPE; -import static org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.KEEP_DELETED_CELLS; +import static org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder.TTL; import static org.apache.phoenix.coprocessor.MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP; import static org.apache.phoenix.coprocessor.MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_15_0; +import static org.apache.phoenix.coprocessor.MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_16_0; import static org.apache.phoenix.coprocessor.MetaDataProtocol.PHOENIX_MAJOR_VERSION; import static org.apache.phoenix.coprocessor.MetaDataProtocol.PHOENIX_MINOR_VERSION; import static org.apache.phoenix.coprocessor.MetaDataProtocol.PHOENIX_PATCH_NUMBER; @@ -68,8 +69,8 @@ import static org.apache.phoenix.util.UpgradeUtil.addParentToChildLinks; import static org.apache.phoenix.util.UpgradeUtil.addViewIndexToParentLinks; import static org.apache.phoenix.util.UpgradeUtil.getSysCatalogSnapshotName; import static org.apache.phoenix.util.UpgradeUtil.moveChildLinks; -import static org.apache.phoenix.util.UpgradeUtil.upgradeTo4_5_0; import static org.apache.phoenix.util.UpgradeUtil.syncTableAndIndexProperties; +import static org.apache.phoenix.util.UpgradeUtil.upgradeTo4_5_0; import java.io.IOException; import java.lang.management.ManagementFactory; @@ -110,7 +111,6 @@ import java.util.regex.Pattern; import javax.annotation.concurrent.GuardedBy; -import com.google.common.base.Strings; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionLocation; @@ -164,8 +164,8 @@ import org.apache.phoenix.coprocessor.SequenceRegionObserver; import org.apache.phoenix.coprocessor.ServerCachingEndpointImpl; import org.apache.phoenix.coprocessor.TaskRegionObserver; import org.apache.phoenix.coprocessor.UngroupedAggregateRegionObserver; -import org.apache.phoenix.coprocessor.generated.ChildLinkMetaDataProtos.CreateViewAddChildLinkRequest; import org.apache.phoenix.coprocessor.generated.ChildLinkMetaDataProtos.ChildLinkMetaDataService; +import org.apache.phoenix.coprocessor.generated.ChildLinkMetaDataProtos.CreateViewAddChildLinkRequest; import org.apache.phoenix.coprocessor.generated.MetaDataProtos; import org.apache.phoenix.coprocessor.generated.MetaDataProtos.AddColumnRequest; import org.apache.phoenix.coprocessor.generated.MetaDataProtos.ClearCacheRequest; @@ -279,13 +279,13 @@ import org.apache.phoenix.util.SchemaUtil; import org.apache.phoenix.util.ServerUtil; import org.apache.phoenix.util.TimeKeeper; import org.apache.phoenix.util.UpgradeUtil; -import org.apache.twill.zookeeper.ZKClientService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -3480,11 +3480,12 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement conn.close(); } } - // Add these columns one at a time, each with different timestamps so that if folks - // have - // run the upgrade code already for a snapshot, we'll still enter this block (and do - // the - // parts we haven't yet done). + // Add these columns one at a time so that if folks have run the upgrade code + // already for a snapshot, we'll still enter this block (and do the parts we + // haven't yet done). + // Add each column with different timestamp else the code assumes that the + // table is already modified at that timestamp resulting in not updating the + // second column with same timestamp if (currentServerSideTableTimeStamp < MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_6_0) { columnsToAdd = PhoenixDatabaseMetaData.IS_ROW_TIMESTAMP + " " + PBoolean.INSTANCE.getSqlTypeName(); @@ -3627,6 +3628,20 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement PhoenixDatabaseMetaData.VIEW_INDEX_ID_DATA_TYPE + " " + PInteger.INSTANCE.getSqlTypeName()); } + if (currentServerSideTableTimeStamp < MIN_SYSTEM_TABLE_TIMESTAMP_4_16_0) { + metaConnection = addColumnsIfNotExists( + metaConnection, + PhoenixDatabaseMetaData.SYSTEM_CATALOG, + MIN_SYSTEM_TABLE_TIMESTAMP_4_16_0 - 1, + PhoenixDatabaseMetaData.VIEW_TTL + " " + + PInteger.INSTANCE.getSqlTypeName()); + metaConnection = addColumnsIfNotExists( + metaConnection, + PhoenixDatabaseMetaData.SYSTEM_CATALOG, + MIN_SYSTEM_TABLE_TIMESTAMP_4_16_0, + PhoenixDatabaseMetaData.VIEW_TTL_HWM + " " + + PInteger.INSTANCE.getSqlTypeName()); + } return metaConnection; }