Index: src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java (revision 1552517) +++ src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java (working copy) @@ -78,6 +78,7 @@ // The shared data map private static ReferenceMap sharedDataMap = new ReferenceMap(AbstractReferenceMap.HARD, AbstractReferenceMap.WEAK); + protected final ArrayList regionObservers; /** * Encapsulation of the environment of each coprocessor @@ -153,6 +154,14 @@ // load Coprocessor From HDFS loadTableCoprocessors(conf); + + regionObservers = new ArrayList(); + for (RegionEnvironment env: coprocessors) { + if (env.getInstance() instanceof RegionObserver) { + regionObservers.add(env); + } + } + regionObservers.trimToSize(); } void loadTableCoprocessors(final Configuration conf) { @@ -272,8 +281,7 @@ */ public void preOpen(){ ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preOpen(ctx); @@ -283,7 +291,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -292,8 +299,7 @@ */ public void postOpen(){ ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postOpen(ctx); @@ -303,7 +309,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -313,15 +318,13 @@ */ public void preClose(boolean abortRequested) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preClose(ctx, abortRequested); } catch (Throwable e) { handleCoprocessorThrowable(env, e); } - } } } @@ -331,8 +334,7 @@ */ public void postClose(boolean abortRequested){ ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postClose(ctx, abortRequested); @@ -340,7 +342,6 @@ handleCoprocessorThrowableNoRethrow(env, e); } - } shutdown(env); } } @@ -353,8 +354,7 @@ ScanType scanType, long earliestPutTs, CompactionRequest request) throws IOException { ObserverContext ctx = null; InternalScanner s = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { s = ((RegionObserver) env.getInstance()).preCompactScannerOpen(ctx, store, scanners, @@ -365,7 +365,6 @@ if (ctx.shouldComplete()) { break; } - } } return s; } @@ -383,8 +382,7 @@ CompactionRequest request) throws IOException { ObserverContext ctx = null; boolean bypass = false; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver) env.getInstance()).preCompactSelection(ctx, store, candidates, request); @@ -395,7 +393,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -410,8 +407,7 @@ public void postCompactSelection(Store store, ImmutableList selected, CompactionRequest request) { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver) env.getInstance()).postCompactSelection(ctx, store, selected, request); @@ -422,7 +418,6 @@ break; } } - } } /** @@ -436,8 +431,7 @@ CompactionRequest request) throws IOException { ObserverContext ctx = null; boolean bypass = false; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { scanner = ((RegionObserver) env.getInstance()).preCompact(ctx, store, scanner, request); @@ -448,7 +442,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? null : scanner; } @@ -463,8 +456,7 @@ public void postCompact(Store store, StoreFile resultFile, CompactionRequest request) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver) env.getInstance()).postCompact(ctx, store, resultFile, request); @@ -475,7 +467,6 @@ break; } } - } } /** @@ -485,8 +476,7 @@ public InternalScanner preFlush(Store store, InternalScanner scanner) throws IOException { ObserverContext ctx = null; boolean bypass = false; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { scanner = ((RegionObserver)env.getInstance()).preFlush( @@ -498,7 +488,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? null : scanner; } @@ -509,8 +498,7 @@ */ public void preFlush() throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preFlush(ctx); @@ -521,7 +509,6 @@ break; } } - } } /** @@ -531,8 +518,7 @@ public InternalScanner preFlushScannerOpen(Store store, KeyValueScanner memstoreScanner) throws IOException { ObserverContext ctx = null; InternalScanner s = null; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { s = ((RegionObserver) env.getInstance()).preFlushScannerOpen(ctx, store, memstoreScanner, s); @@ -542,7 +528,6 @@ if (ctx.shouldComplete()) { break; } - } } return s; } @@ -553,8 +538,7 @@ */ public void postFlush() throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postFlush(ctx); @@ -564,7 +548,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -574,8 +557,7 @@ */ public void postFlush(final Store store, final StoreFile storeFile) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postFlush(ctx, store, storeFile); @@ -585,7 +567,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -595,8 +576,7 @@ */ public void preSplit() throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preSplit(ctx); @@ -606,7 +586,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -618,8 +597,7 @@ */ public void postSplit(HRegion l, HRegion r) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postSplit(ctx, l, r); @@ -629,7 +607,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -646,8 +623,7 @@ final Result result) throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preGetClosestRowBefore(ctx, row, @@ -659,7 +635,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -673,8 +648,7 @@ public void postGetClosestRowBefore(final byte[] row, final byte[] family, final Result result) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postGetClosestRowBefore(ctx, row, @@ -685,7 +659,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -698,8 +671,7 @@ throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preGet(ctx, get, results); @@ -710,7 +682,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -723,8 +694,7 @@ public void postGet(final Get get, final List results) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postGet(ctx, get, results); @@ -734,7 +704,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -748,8 +717,7 @@ boolean bypass = false; boolean exists = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { exists = ((RegionObserver)env.getInstance()).preExists(ctx, get, exists); @@ -760,7 +728,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? exists : null; } @@ -774,8 +741,7 @@ public boolean postExists(final Get get, boolean exists) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { exists = ((RegionObserver)env.getInstance()).postExists(ctx, get, exists); @@ -785,7 +751,6 @@ if (ctx.shouldComplete()) { break; } - } } return exists; } @@ -801,8 +766,7 @@ final boolean writeToWAL) throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).prePut(ctx, put, edit, writeToWAL); @@ -813,7 +777,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -827,8 +790,7 @@ public void postPut(Put put, WALEdit edit, final boolean writeToWAL) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postPut(ctx, put, edit, writeToWAL); @@ -838,7 +800,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -853,8 +814,7 @@ final boolean writeToWAL) throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preDelete(ctx, delete, edit, writeToWAL); @@ -865,7 +825,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -879,8 +838,7 @@ public void postDelete(Delete delete, WALEdit edit, final boolean writeToWAL) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postDelete(ctx, delete, edit, writeToWAL); @@ -890,7 +848,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -903,8 +860,7 @@ final MiniBatchOperationInProgress> miniBatchOp) throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver) env.getInstance()).preBatchMutate(ctx, miniBatchOp); @@ -915,7 +871,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -927,8 +882,7 @@ public void postBatchMutate( final MiniBatchOperationInProgress> miniBatchOp) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver) env.getInstance()).postBatchMutate(ctx, miniBatchOp); @@ -938,7 +892,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -960,8 +913,7 @@ boolean bypass = false; boolean result = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).preCheckAndPut(ctx, row, family, @@ -975,7 +927,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? result : null; } @@ -995,8 +946,7 @@ boolean result) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).postCheckAndPut(ctx, row, @@ -1007,7 +957,6 @@ if (ctx.shouldComplete()) { break; } - } } return result; } @@ -1030,8 +979,7 @@ boolean bypass = false; boolean result = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).preCheckAndDelete(ctx, row, @@ -1043,7 +991,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? result : null; } @@ -1063,8 +1010,7 @@ boolean result) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()) @@ -1076,7 +1022,6 @@ if (ctx.shouldComplete()) { break; } - } } return result; } @@ -1096,8 +1041,7 @@ throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { amount = ((RegionObserver)env.getInstance()).preIncrementColumnValue(ctx, @@ -1109,7 +1053,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? amount : null; } @@ -1128,8 +1071,7 @@ final byte [] qualifier, final long amount, final boolean writeToWAL, long result) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).postIncrementColumnValue(ctx, @@ -1140,7 +1082,6 @@ if (ctx.shouldComplete()) { break; } - } } return result; } @@ -1156,8 +1097,7 @@ boolean bypass = false; Result result = null; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).preAppend(ctx, append); @@ -1168,7 +1108,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? result : null; } @@ -1184,8 +1123,7 @@ boolean bypass = false; Result result = null; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).preIncrement(ctx, increment); @@ -1196,7 +1134,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? result : null; } @@ -1209,8 +1146,7 @@ public void postAppend(final Append append, Result result) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postAppend(ctx, append, result); @@ -1220,7 +1156,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -1232,8 +1167,7 @@ public Result postIncrement(final Increment increment, Result result) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { result = ((RegionObserver)env.getInstance()).postIncrement(ctx, increment, result); @@ -1243,7 +1177,6 @@ if (ctx.shouldComplete()) { break; } - } } return result; } @@ -1258,8 +1191,7 @@ boolean bypass = false; RegionScanner s = null; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { s = ((RegionObserver)env.getInstance()).preScannerOpen(ctx, scan, s); @@ -1270,7 +1202,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? s : null; } @@ -1283,8 +1214,7 @@ final NavigableSet targetCols) throws IOException { KeyValueScanner s = null; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { s = ((RegionObserver) env.getInstance()).preStoreScannerOpen(ctx, store, scan, @@ -1295,7 +1225,6 @@ if (ctx.shouldComplete()) { break; } - } } return s; } @@ -1309,8 +1238,7 @@ public RegionScanner postScannerOpen(final Scan scan, RegionScanner s) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { s = ((RegionObserver)env.getInstance()).postScannerOpen(ctx, scan, s); @@ -1320,7 +1248,6 @@ if (ctx.shouldComplete()) { break; } - } } return s; } @@ -1338,8 +1265,7 @@ boolean bypass = false; boolean hasNext = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { hasNext = ((RegionObserver)env.getInstance()).preScannerNext(ctx, s, results, @@ -1351,7 +1277,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass ? hasNext : null; } @@ -1368,8 +1293,7 @@ final List results, final int limit, boolean hasMore) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { hasMore = ((RegionObserver)env.getInstance()).postScannerNext(ctx, s, @@ -1380,7 +1304,6 @@ if (ctx.shouldComplete()) { break; } - } } return hasMore; } @@ -1397,8 +1320,7 @@ throws IOException { boolean hasMore = true; // By default assume more rows there. ObserverContext ctx = null; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { hasMore = ((RegionObserver) env.getInstance()).postScannerFilterRow(ctx, s, currentRow, @@ -1409,7 +1331,6 @@ if (ctx.shouldComplete()) { break; } - } } return hasMore; } @@ -1423,8 +1344,7 @@ throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preScannerClose(ctx, s); @@ -1435,7 +1355,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -1447,8 +1366,7 @@ public void postScannerClose(final InternalScanner s) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postScannerClose(ctx, s); @@ -1458,7 +1376,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -1473,8 +1390,7 @@ WALEdit logEdit) throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preWALRestore(ctx, info, logKey, @@ -1486,7 +1402,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; } @@ -1500,8 +1415,7 @@ public void postWALRestore(HRegionInfo info, HLogKey logKey, WALEdit logEdit) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).postWALRestore(ctx, info, @@ -1512,7 +1426,6 @@ if (ctx.shouldComplete()) { break; } - } } } @@ -1524,8 +1437,7 @@ public boolean preBulkLoadHFile(List> familyPaths) throws IOException { boolean bypass = false; ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { ((RegionObserver)env.getInstance()).preBulkLoadHFile(ctx, familyPaths); @@ -1536,7 +1448,6 @@ if (ctx.shouldComplete()) { break; } - } } return bypass; @@ -1551,8 +1462,7 @@ public boolean postBulkLoadHFile(List> familyPaths, boolean hasLoaded) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env: coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env: regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); try { hasLoaded = ((RegionObserver)env.getInstance()).postBulkLoadHFile(ctx, @@ -1563,7 +1473,6 @@ if (ctx.shouldComplete()) { break; } - } } return hasLoaded; @@ -1571,27 +1480,23 @@ public void preLockRow(byte[] regionName, byte[] row) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); ((RegionObserver) env.getInstance()).preLockRow(ctx, regionName, row); if (ctx.shouldComplete()) { break; } - } } } public void preUnLockRow(byte[] regionName, long lockId) throws IOException { ObserverContext ctx = null; - for (RegionEnvironment env : coprocessors) { - if (env.getInstance() instanceof RegionObserver) { + for (RegionEnvironment env : regionObservers) { ctx = ObserverContext.createAndPrepare(env, ctx); ((RegionObserver) env.getInstance()).preUnlockRow(ctx, regionName, lockId); if (ctx.shouldComplete()) { break; } - } } }