diff --git src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java index 409d168..218c4b1 100644 --- src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java +++ src/main/java/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java @@ -211,13 +211,15 @@ public abstract class BaseRegionObserver implements RegionObserver { } @Override - public void preIncrement(final ObserverContext e, + public Result preIncrement(final ObserverContext e, final Increment increment, final Result result) throws IOException { + return result; } @Override - public void postIncrement(final ObserverContext e, + public Result postIncrement(final ObserverContext e, final Increment increment, final Result result) throws IOException { + return result; } @Override diff --git src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java index c95903a..7e461c5 100644 --- src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java +++ src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java @@ -504,7 +504,7 @@ public interface RegionObserver extends Coprocessor { * is not bypassed. * @throws IOException if an error occurred on the coprocessor */ - void preIncrement(final ObserverContext c, + Result preIncrement(final ObserverContext c, final Increment increment, final Result result) throws IOException; @@ -518,7 +518,7 @@ public interface RegionObserver extends Coprocessor { * @param result the result returned by increment, can be modified * @throws IOException if an error occurred on the coprocessor */ - void postIncrement(final ObserverContext c, + Result postIncrement(final ObserverContext c, final Increment increment, final Result result) throws IOException; diff --git src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 63fe123..a7266d3 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -3052,7 +3052,7 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler, resVal = region.increment(incVal, lock, increment.getWriteToWAL()); if (region.getCoprocessorHost() != null) { - region.getCoprocessorHost().postIncrement(incVal, resVal); + resVal = region.getCoprocessorHost().postIncrement(incVal, resVal); } return resVal; } catch (IOException e) { diff --git src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java index 948e5aa..a5cd452 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java @@ -988,7 +988,7 @@ public class RegionCoprocessorHost if (env.getInstance() instanceof RegionObserver) { ctx = ObserverContext.createAndPrepare(env, ctx); try { - ((RegionObserver)env.getInstance()).preIncrement(ctx, increment, result); + result = ((RegionObserver)env.getInstance()).preIncrement(ctx, increment, result); } catch (Throwable e) { handleCoprocessorThrowable(env, e); } @@ -1029,14 +1029,14 @@ public class RegionCoprocessorHost * @param result the result returned by postIncrement * @throws IOException if an error occurred on the coprocessor */ - public void postIncrement(final Increment increment, Result result) + public Result postIncrement(final Increment increment, Result result) throws IOException { ObserverContext ctx = null; for (RegionEnvironment env: coprocessors) { if (env.getInstance() instanceof RegionObserver) { ctx = ObserverContext.createAndPrepare(env, ctx); try { - ((RegionObserver)env.getInstance()).postIncrement(ctx, increment, result); + result = ((RegionObserver)env.getInstance()).postIncrement(ctx, increment, result); } catch (Throwable e) { handleCoprocessorThrowable(env, e); } @@ -1045,6 +1045,7 @@ public class RegionCoprocessorHost } } } + return result; } /** diff --git src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java index 58f3265..95ff993 100644 --- src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java +++ src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java @@ -371,15 +371,17 @@ public class SimpleRegionObserver extends BaseRegionObserver { } @Override - public void preIncrement(final ObserverContext c, + public Result preIncrement(final ObserverContext c, final Increment increment, final Result result) throws IOException { hadPreIncrement = true; + return result; } @Override - public void postIncrement(final ObserverContext c, + public Result postIncrement(final ObserverContext c, final Increment increment, final Result result) throws IOException { hadPostIncrement = true; + return result; } public boolean hadPreGet() {