PHOENIX-3097 Incompatibilities with HBase 0.98.6 (Tongzhou Wang)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/680990cb Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/680990cb Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/680990cb Branch: refs/heads/encodecolumns Commit: 680990cb513a3b8e7f85323ed9740a479594a1f6 Parents: 32ae3f5 Author: James Taylor <[email protected]> Authored: Thu Jul 21 14:04:06 2016 -0700 Committer: James Taylor <[email protected]> Committed: Thu Jul 21 14:04:06 2016 -0700 ---------------------------------------------------------------------- .../end2end/index/MutableIndexFailureIT.java | 2 +- .../end2end/index/ReadOnlyIndexFailureIT.java | 2 +- .../coprocessor/BaseScannerRegionObserver.java | 2 +- .../coprocessor/DelegateRegionObserver.java | 291 ++++++++++++------- .../UngroupedAggregateRegionObserver.java | 47 +-- .../org/apache/phoenix/hbase/index/Indexer.java | 17 +- .../index/PhoenixTransactionalIndexer.java | 3 +- .../stats/StatisticsCollectorFactory.java | 2 +- 8 files changed, 223 insertions(+), 143 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java index 5d0230b..8870d8f 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java @@ -338,7 +338,7 @@ public class MutableIndexFailureIT extends BaseOwnClusterHBaseManagedTimeIT { public static class FailingRegionObserver extends SimpleRegionObserver { @Override public void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c, MiniBatchOperationInProgress<Mutation> miniBatchOp) throws HBaseIOException { - if (c.getEnvironment().getRegionInfo().getTable().getNameAsString().contains(INDEX_NAME) && FAIL_WRITE) { + if (c.getEnvironment().getRegion().getRegionInfo().getTable().getNameAsString().contains(INDEX_NAME) && FAIL_WRITE) { throw new DoNotRetryIOException(); } Mutation operation = miniBatchOp.getOperation(0); http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java index a3ad418..9446d2e 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ReadOnlyIndexFailureIT.java @@ -279,7 +279,7 @@ public class ReadOnlyIndexFailureIT extends BaseOwnClusterHBaseManagedTimeIT { public static class FailingRegionObserver extends SimpleRegionObserver { @Override public void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c, MiniBatchOperationInProgress<Mutation> miniBatchOp) throws HBaseIOException { - if (c.getEnvironment().getRegionInfo().getTable().getNameAsString().contains(INDEX_NAME) && FAIL_WRITE) { + if (c.getEnvironment().getRegion().getRegionInfo().getTable().getNameAsString().contains(INDEX_NAME) && FAIL_WRITE) { throw new DoNotRetryIOException(); } Mutation operation = miniBatchOp.getOperation(0); http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/BaseScannerRegionObserver.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/BaseScannerRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/BaseScannerRegionObserver.java index 9cee531..be4766f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/BaseScannerRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/BaseScannerRegionObserver.java @@ -298,7 +298,7 @@ abstract public class BaseScannerRegionObserver extends BaseRegionObserver { return new RegionScanner() { private boolean hasReferences = checkForReferenceFiles(); - private HRegionInfo regionInfo = c.getEnvironment().getRegionInfo(); + private HRegionInfo regionInfo = c.getEnvironment().getRegion().getRegionInfo(); private byte[] actualStartKey = getActualStartKey(); // If there are any reference files after local index region merge some cases we might http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DelegateRegionObserver.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DelegateRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DelegateRegionObserver.java index 6522b30..a2f1d5b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DelegateRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DelegateRegionObserver.java @@ -63,6 +63,7 @@ import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Pair; import com.google.common.collect.ImmutableList; +import org.apache.hadoop.security.UserGroupInformation; public class DelegateRegionObserver implements RegionObserver { @@ -133,38 +134,48 @@ public class DelegateRegionObserver implements RegionObserver { @Override public void preCompactSelection(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final List<StoreFile> candidates, final CompactionRequest request) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preCompactSelection(c, store, candidates, request); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preCompactSelection(c, store, candidates, request); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void preCompactSelection(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final List<StoreFile> candidates) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preCompactSelection(c, store, candidates); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preCompactSelection(c, store, candidates); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void postCompactSelection(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final ImmutableList<StoreFile> selected, final CompactionRequest request) { try { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { @Override public Void run() throws Exception { delegate.postCompactSelection(c, store, selected, request); return null; } }); + } catch (InterruptedException e) { + throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } @@ -174,13 +185,15 @@ public class DelegateRegionObserver implements RegionObserver { public void postCompactSelection(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final ImmutableList<StoreFile> selected) { try { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { @Override public Void run() throws Exception { delegate.postCompactSelection(c, store, selected); return null; } }); + } catch (InterruptedException e) { + throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } @@ -190,155 +203,207 @@ public class DelegateRegionObserver implements RegionObserver { public InternalScanner preCompact(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final InternalScanner scanner, final ScanType scanType, final CompactionRequest request) throws IOException { - return User.runAsLoginUser(new PrivilegedExceptionAction<InternalScanner>() { - @Override - public InternalScanner run() throws Exception { - return delegate.preCompact(c, store, scanner, scanType, request); - } - }); + try { + return UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<InternalScanner>() { + @Override + public InternalScanner run() throws Exception { + return delegate.preCompact(c, store, scanner, scanType, request); + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public InternalScanner preCompact(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final InternalScanner scanner, final ScanType scanType) throws IOException { - return User.runAsLoginUser(new PrivilegedExceptionAction<InternalScanner>() { - @Override - public InternalScanner run() throws Exception { - return delegate.preCompact(c, store, scanner, scanType); - } - }); + try { + return UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<InternalScanner>() { + @Override + public InternalScanner run() throws Exception { + return delegate.preCompact(c, store, scanner, scanType); + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public InternalScanner preCompactScannerOpen(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final List<? extends KeyValueScanner> scanners, final ScanType scanType, final long earliestPutTs, final InternalScanner s, final CompactionRequest request) throws IOException { - return User.runAsLoginUser(new PrivilegedExceptionAction<InternalScanner>() { - @Override - public InternalScanner run() throws Exception { - return delegate.preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s, - request); - } - }); + try { + return UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<InternalScanner>() { + @Override + public InternalScanner run() throws Exception { + return delegate.preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s, + request); + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public InternalScanner preCompactScannerOpen(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final List<? extends KeyValueScanner> scanners, final ScanType scanType, final long earliestPutTs, final InternalScanner s) throws IOException { - return User.runAsLoginUser(new PrivilegedExceptionAction<InternalScanner>() { - @Override - public InternalScanner run() throws Exception { - return delegate.preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s); - } - }); + try { + return UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<InternalScanner>() { + @Override + public InternalScanner run() throws Exception { + return delegate.preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s); + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void postCompact(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final StoreFile resultFile, final CompactionRequest request) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.postCompact(c, store, resultFile, request); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.postCompact(c, store, resultFile, request); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void postCompact(final ObserverContext<RegionCoprocessorEnvironment> c, final Store store, final StoreFile resultFile) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.postCompact(c, store, resultFile); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.postCompact(c, store, resultFile); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void preSplit(final ObserverContext<RegionCoprocessorEnvironment> c) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preSplit(c); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preSplit(c); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void preSplit(final ObserverContext<RegionCoprocessorEnvironment> c, final byte[] splitRow) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preSplit(c, splitRow); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preSplit(c, splitRow); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void postSplit(final ObserverContext<RegionCoprocessorEnvironment> c, final HRegion l, final HRegion r) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.postSplit(c, l, r); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.postSplit(c, l, r); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void preSplitBeforePONR(final ObserverContext<RegionCoprocessorEnvironment> ctx, final byte[] splitKey, final List<Mutation> metaEntries) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preSplitBeforePONR(ctx, splitKey, metaEntries); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preSplitBeforePONR(ctx, splitKey, metaEntries); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void preSplitAfterPONR(final ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preSplitAfterPONR(ctx); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preSplitAfterPONR(ctx); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void preRollBackSplit(final ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.preRollBackSplit(ctx); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.preRollBackSplit(ctx); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override public void postRollBackSplit(final ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException { - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.postRollBackSplit(ctx); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.postRollBackSplit(ctx); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override @@ -347,13 +412,17 @@ public class DelegateRegionObserver implements RegionObserver { // NOTE: This one is an exception and doesn't need a context change. Should // be infrequent and overhead is low, so let's ensure we have the right context // anyway to avoid potential surprise. - User.runAsLoginUser(new PrivilegedExceptionAction<Void>() { - @Override - public Void run() throws Exception { - delegate.postCompleteSplit(ctx); - return null; - } - }); + try { + UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + delegate.postCompleteSplit(ctx); + return null; + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java index 9344784..2931933 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java @@ -63,6 +63,7 @@ import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.io.WritableUtils; +import org.apache.hadoop.security.UserGroupInformation; import org.apache.phoenix.coprocessor.generated.PTableProtos; import org.apache.phoenix.exception.DataExceedsCapacityException; import org.apache.phoenix.execute.TupleProjector; @@ -593,29 +594,33 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver // This will lead to failure of cross cluster RPC if the effective user is not // the login user. Switch to the login user context to ensure we have the expected // security context. - return User.runAsLoginUser(new PrivilegedExceptionAction<InternalScanner>() { - @Override - public InternalScanner run() throws Exception { - TableName table = c.getEnvironment().getRegion().getRegionInfo().getTable(); - InternalScanner internalScanner = scanner; - if (scanType.equals(ScanType.COMPACT_DROP_DELETES)) { - try { - long clientTimeStamp = TimeKeeper.SYSTEM.getCurrentTime(); - StatisticsCollector stats = StatisticsCollectorFactory.createStatisticsCollector( - c.getEnvironment(), table.getNameAsString(), clientTimeStamp, - store.getFamily().getName()); - internalScanner = stats.createCompactionScanner(c.getEnvironment(), store, scanner); - } catch (IOException e) { - // If we can't reach the stats table, don't interrupt the normal - // compaction operation, just log a warning. - if(logger.isWarnEnabled()) { - logger.warn("Unable to collect stats for " + table, e); - } + try { + return UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<InternalScanner>() { + @Override public InternalScanner run() throws Exception { + TableName table = c.getEnvironment().getRegion().getRegionInfo().getTable(); + InternalScanner internalScanner = scanner; + if (scanType.equals(ScanType.COMPACT_DROP_DELETES)) { + try { + long clientTimeStamp = TimeKeeper.SYSTEM.getCurrentTime(); + StatisticsCollector stats = StatisticsCollectorFactory + .createStatisticsCollector(c.getEnvironment(), table.getNameAsString(), + clientTimeStamp, store.getFamily().getName()); + internalScanner = + stats.createCompactionScanner(c.getEnvironment(), store, scanner); + } catch (IOException e) { + // If we can't reach the stats table, don't interrupt the normal + // compaction operation, just log a warning. + if (logger.isWarnEnabled()) { + logger.warn("Unable to collect stats for " + table, e); + } + } } + return internalScanner; } - return internalScanner; - } - }); + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } private static PTable deserializeTable(byte[] b) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java index 2956470..eb5d3a8 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java @@ -51,6 +51,7 @@ import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Pair; +import org.apache.hadoop.security.UserGroupInformation; import org.apache.phoenix.hbase.index.builder.IndexBuildManager; import org.apache.phoenix.hbase.index.builder.IndexBuilder; import org.apache.phoenix.hbase.index.table.HTableInterfaceReference; @@ -519,12 +520,16 @@ public class Indexer extends BaseRegionObserver { // the login user. Switch to the login user context to ensure we have the expected // security context. // NOTE: Not necessary here at this time but leave in place to document this critical detail. - return User.runAsLoginUser(new PrivilegedExceptionAction<InternalScanner>() { - @Override - public InternalScanner run() throws Exception { - return Indexer.super.preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s); - } - }); + try { + return UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<InternalScanner>() { + @Override public InternalScanner run() throws Exception { + return Indexer.super + .preCompactScannerOpen(c, store, scanners, scanType, earliestPutTs, s); + } + }); + } catch (InterruptedException e) { + throw new IOException(e); + } } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixTransactionalIndexer.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixTransactionalIndexer.java b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixTransactionalIndexer.java index 49a6d57..f8be3ee 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixTransactionalIndexer.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixTransactionalIndexer.java @@ -260,7 +260,8 @@ public class PhoenixTransactionalIndexer extends BaseRegionObserver { // the existing index rows. Transaction tx = indexMetaData.getTransaction(); if (tx == null) { - throw new NullPointerException("Expected to find transaction in metadata for " + env.getRegionInfo().getTable().getNameAsString()); + throw new NullPointerException("Expected to find transaction in metadata for " + + env.getRegion().getRegionInfo().getTable().getNameAsString()); } List<IndexMaintainer> indexMaintainers = indexMetaData.getIndexMaintainers(); Set<ColumnReference> mutableColumns = Sets.newHashSetWithExpectedSize(indexMaintainers.size() * 10); http://git-wip-us.apache.org/repos/asf/phoenix/blob/680990cb/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/StatisticsCollectorFactory.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/StatisticsCollectorFactory.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/StatisticsCollectorFactory.java index 1c65f09..f654319 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/StatisticsCollectorFactory.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/StatisticsCollectorFactory.java @@ -59,7 +59,7 @@ public class StatisticsCollectorFactory { */ private static boolean statisticsEnabled(RegionCoprocessorEnvironment env) { return env.getConfiguration().getBoolean(QueryServices.STATS_ENABLED_ATTRIB, true) && - StatisticsUtil.isStatsEnabled(env.getRegionInfo().getTable()); + StatisticsUtil.isStatsEnabled(env.getRegion().getRegionInfo().getTable()); } }
