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());
     }
 
 }