You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2016/07/21 21:05:12 UTC
phoenix git commit: PHOENIX-3097 Incompatibilities with HBase 0.98.6
(Tongzhou Wang)
Repository: phoenix
Updated Branches:
refs/heads/4.x-HBase-0.98 32ae3f5a3 -> 680990cb5
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/4.x-HBase-0.98
Commit: 680990cb513a3b8e7f85323ed9740a479594a1f6
Parents: 32ae3f5
Author: James Taylor <ja...@apache.org>
Authored: Thu Jul 21 14:04:06 2016 -0700
Committer: James Taylor <ja...@apache.org>
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());
}
}