HBASE-4903 Return a result from RegionObserver.preIncrement (Daniel Gómez Ferro)
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1208952 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
50de126b79
commit
9581eea546
|
@ -736,6 +736,8 @@ Release 0.92.0 - Unreleased
|
||||||
HBASE-4779 TestHTablePool, TestScanWithBloomError, TestRegionSplitCalculator are
|
HBASE-4779 TestHTablePool, TestScanWithBloomError, TestRegionSplitCalculator are
|
||||||
not tagged and TestPoolMap should not use TestSuite (N Keywal)
|
not tagged and TestPoolMap should not use TestSuite (N Keywal)
|
||||||
HBASE-4805 Allow better control of resource consumption in HTable (Lars H)
|
HBASE-4805 Allow better control of resource consumption in HTable (Lars H)
|
||||||
|
HBASE-4903 Return a result from RegionObserver.preIncrement
|
||||||
|
(Daniel Gómez Ferro via Lars H)
|
||||||
|
|
||||||
TASKS
|
TASKS
|
||||||
HBASE-3559 Move report of split to master OFF the heartbeat channel
|
HBASE-3559 Move report of split to master OFF the heartbeat channel
|
||||||
|
|
|
@ -186,13 +186,15 @@ public abstract class BaseRegionObserver implements RegionObserver {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preAppend(final ObserverContext<RegionCoprocessorEnvironment> e,
|
public Result preAppend(final ObserverContext<RegionCoprocessorEnvironment> e,
|
||||||
final Append append, final Result result) throws IOException {
|
final Append append) throws IOException {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postAppend(final ObserverContext<RegionCoprocessorEnvironment> e,
|
public Result postAppend(final ObserverContext<RegionCoprocessorEnvironment> e,
|
||||||
final Append append, final Result result) throws IOException {
|
final Append append, final Result result) throws IOException {
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -211,13 +213,15 @@ public abstract class BaseRegionObserver implements RegionObserver {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preIncrement(final ObserverContext<RegionCoprocessorEnvironment> e,
|
public Result preIncrement(final ObserverContext<RegionCoprocessorEnvironment> e,
|
||||||
final Increment increment, final Result result) throws IOException {
|
final Increment increment) throws IOException {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postIncrement(final ObserverContext<RegionCoprocessorEnvironment> e,
|
public Result postIncrement(final ObserverContext<RegionCoprocessorEnvironment> e,
|
||||||
final Increment increment, final Result result) throws IOException {
|
final Increment increment, final Result result) throws IOException {
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,20 +16,19 @@
|
||||||
|
|
||||||
package org.apache.hadoop.hbase.coprocessor;
|
package org.apache.hadoop.hbase.coprocessor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import org.apache.hadoop.hbase.Coprocessor;
|
import org.apache.hadoop.hbase.Coprocessor;
|
||||||
import org.apache.hadoop.hbase.HRegionInfo;
|
import org.apache.hadoop.hbase.HRegionInfo;
|
||||||
import org.apache.hadoop.hbase.KeyValue;
|
import org.apache.hadoop.hbase.KeyValue;
|
||||||
import org.apache.hadoop.hbase.client.Append;
|
import org.apache.hadoop.hbase.client.Append;
|
||||||
import org.apache.hadoop.hbase.client.Delete;
|
import org.apache.hadoop.hbase.client.Delete;
|
||||||
import org.apache.hadoop.hbase.client.Get;
|
import org.apache.hadoop.hbase.client.Get;
|
||||||
|
import org.apache.hadoop.hbase.client.Increment;
|
||||||
import org.apache.hadoop.hbase.client.Put;
|
import org.apache.hadoop.hbase.client.Put;
|
||||||
import org.apache.hadoop.hbase.client.Result;
|
import org.apache.hadoop.hbase.client.Result;
|
||||||
import org.apache.hadoop.hbase.client.Scan;
|
import org.apache.hadoop.hbase.client.Scan;
|
||||||
import org.apache.hadoop.hbase.client.Increment;
|
|
||||||
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
|
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
|
||||||
import org.apache.hadoop.hbase.filter.WritableByteArrayComparable;
|
import org.apache.hadoop.hbase.filter.WritableByteArrayComparable;
|
||||||
import org.apache.hadoop.hbase.regionserver.HRegion;
|
import org.apache.hadoop.hbase.regionserver.HRegion;
|
||||||
|
@ -40,7 +39,7 @@ import org.apache.hadoop.hbase.regionserver.StoreFile;
|
||||||
import org.apache.hadoop.hbase.regionserver.wal.HLogKey;
|
import org.apache.hadoop.hbase.regionserver.wal.HLogKey;
|
||||||
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
|
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
|
||||||
|
|
||||||
import java.io.IOException;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Coprocessors implement this interface to observe and mediate client actions
|
* Coprocessors implement this interface to observe and mediate client actions
|
||||||
|
@ -467,13 +466,11 @@ public interface RegionObserver extends Coprocessor {
|
||||||
* coprocessors
|
* coprocessors
|
||||||
* @param c the environment provided by the region server
|
* @param c the environment provided by the region server
|
||||||
* @param append Append object
|
* @param append Append object
|
||||||
* @param result The result to return to the client if default processing
|
* @return result to return to the client if bypassing default processing
|
||||||
* is bypassed. Can be modified. Will not be used if default processing
|
|
||||||
* is not bypassed.
|
|
||||||
* @throws IOException if an error occurred on the coprocessor
|
* @throws IOException if an error occurred on the coprocessor
|
||||||
*/
|
*/
|
||||||
void preAppend(final ObserverContext<RegionCoprocessorEnvironment> c,
|
Result preAppend(final ObserverContext<RegionCoprocessorEnvironment> c,
|
||||||
final Append append, final Result result)
|
final Append append)
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -483,10 +480,11 @@ public interface RegionObserver extends Coprocessor {
|
||||||
* coprocessors
|
* coprocessors
|
||||||
* @param c the environment provided by the region server
|
* @param c the environment provided by the region server
|
||||||
* @param append Append object
|
* @param append Append object
|
||||||
* @param result the result returned by increment, can be modified
|
* @param result the result returned by increment
|
||||||
|
* @return the result to return to the client
|
||||||
* @throws IOException if an error occurred on the coprocessor
|
* @throws IOException if an error occurred on the coprocessor
|
||||||
*/
|
*/
|
||||||
void postAppend(final ObserverContext<RegionCoprocessorEnvironment> c,
|
Result postAppend(final ObserverContext<RegionCoprocessorEnvironment> c,
|
||||||
final Append append, final Result result)
|
final Append append, final Result result)
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
|
||||||
|
@ -499,13 +497,11 @@ public interface RegionObserver extends Coprocessor {
|
||||||
* coprocessors
|
* coprocessors
|
||||||
* @param c the environment provided by the region server
|
* @param c the environment provided by the region server
|
||||||
* @param increment increment object
|
* @param increment increment object
|
||||||
* @param result The result to return to the client if default processing
|
* @return result to return to the client if bypassing default processing
|
||||||
* is bypassed. Can be modified. Will not be used if default processing
|
|
||||||
* is not bypassed.
|
|
||||||
* @throws IOException if an error occurred on the coprocessor
|
* @throws IOException if an error occurred on the coprocessor
|
||||||
*/
|
*/
|
||||||
void preIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
Result preIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
||||||
final Increment increment, final Result result)
|
final Increment increment)
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -515,10 +511,11 @@ public interface RegionObserver extends Coprocessor {
|
||||||
* coprocessors
|
* coprocessors
|
||||||
* @param c the environment provided by the region server
|
* @param c the environment provided by the region server
|
||||||
* @param increment increment object
|
* @param increment increment object
|
||||||
* @param result the result returned by increment, can be modified
|
* @param result the result returned by increment
|
||||||
|
* @return the result to return to the client
|
||||||
* @throws IOException if an error occurred on the coprocessor
|
* @throws IOException if an error occurred on the coprocessor
|
||||||
*/
|
*/
|
||||||
void postIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
Result postIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
||||||
final Increment increment, final Result result)
|
final Increment increment, final Result result)
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
|
||||||
|
|
|
@ -3052,7 +3052,7 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler,
|
||||||
resVal = region.increment(incVal, lock,
|
resVal = region.increment(incVal, lock,
|
||||||
increment.getWriteToWAL());
|
increment.getWriteToWAL());
|
||||||
if (region.getCoprocessorHost() != null) {
|
if (region.getCoprocessorHost() != null) {
|
||||||
region.getCoprocessorHost().postIncrement(incVal, resVal);
|
resVal = region.getCoprocessorHost().postIncrement(incVal, resVal);
|
||||||
}
|
}
|
||||||
return resVal;
|
return resVal;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
@ -954,13 +954,13 @@ public class RegionCoprocessorHost
|
||||||
public Result preAppend(Append append)
|
public Result preAppend(Append append)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
boolean bypass = false;
|
boolean bypass = false;
|
||||||
Result result = new Result();
|
Result result = null;
|
||||||
ObserverContext<RegionCoprocessorEnvironment> ctx = null;
|
ObserverContext<RegionCoprocessorEnvironment> ctx = null;
|
||||||
for (RegionEnvironment env: coprocessors) {
|
for (RegionEnvironment env: coprocessors) {
|
||||||
if (env.getInstance() instanceof RegionObserver) {
|
if (env.getInstance() instanceof RegionObserver) {
|
||||||
ctx = ObserverContext.createAndPrepare(env, ctx);
|
ctx = ObserverContext.createAndPrepare(env, ctx);
|
||||||
try {
|
try {
|
||||||
((RegionObserver)env.getInstance()).preAppend(ctx, append, result);
|
result = ((RegionObserver)env.getInstance()).preAppend(ctx, append);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
handleCoprocessorThrowable(env, e);
|
handleCoprocessorThrowable(env, e);
|
||||||
}
|
}
|
||||||
|
@ -982,13 +982,13 @@ public class RegionCoprocessorHost
|
||||||
public Result preIncrement(Increment increment)
|
public Result preIncrement(Increment increment)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
boolean bypass = false;
|
boolean bypass = false;
|
||||||
Result result = new Result();
|
Result result = null;
|
||||||
ObserverContext<RegionCoprocessorEnvironment> ctx = null;
|
ObserverContext<RegionCoprocessorEnvironment> ctx = null;
|
||||||
for (RegionEnvironment env: coprocessors) {
|
for (RegionEnvironment env: coprocessors) {
|
||||||
if (env.getInstance() instanceof RegionObserver) {
|
if (env.getInstance() instanceof RegionObserver) {
|
||||||
ctx = ObserverContext.createAndPrepare(env, ctx);
|
ctx = ObserverContext.createAndPrepare(env, ctx);
|
||||||
try {
|
try {
|
||||||
((RegionObserver)env.getInstance()).preIncrement(ctx, increment, result);
|
result = ((RegionObserver)env.getInstance()).preIncrement(ctx, increment);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
handleCoprocessorThrowable(env, e);
|
handleCoprocessorThrowable(env, e);
|
||||||
}
|
}
|
||||||
|
@ -1029,14 +1029,14 @@ public class RegionCoprocessorHost
|
||||||
* @param result the result returned by postIncrement
|
* @param result the result returned by postIncrement
|
||||||
* @throws IOException if an error occurred on the coprocessor
|
* @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 {
|
throws IOException {
|
||||||
ObserverContext<RegionCoprocessorEnvironment> ctx = null;
|
ObserverContext<RegionCoprocessorEnvironment> ctx = null;
|
||||||
for (RegionEnvironment env: coprocessors) {
|
for (RegionEnvironment env: coprocessors) {
|
||||||
if (env.getInstance() instanceof RegionObserver) {
|
if (env.getInstance() instanceof RegionObserver) {
|
||||||
ctx = ObserverContext.createAndPrepare(env, ctx);
|
ctx = ObserverContext.createAndPrepare(env, ctx);
|
||||||
try {
|
try {
|
||||||
((RegionObserver)env.getInstance()).postIncrement(ctx, increment, result);
|
result = ((RegionObserver)env.getInstance()).postIncrement(ctx, increment, result);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
handleCoprocessorThrowable(env, e);
|
handleCoprocessorThrowable(env, e);
|
||||||
}
|
}
|
||||||
|
@ -1045,6 +1045,7 @@ public class RegionCoprocessorHost
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -371,15 +371,17 @@ public class SimpleRegionObserver extends BaseRegionObserver {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
public Result preIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
||||||
final Increment increment, final Result result) throws IOException {
|
final Increment increment) throws IOException {
|
||||||
hadPreIncrement = true;
|
hadPreIncrement = true;
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
public Result postIncrement(final ObserverContext<RegionCoprocessorEnvironment> c,
|
||||||
final Increment increment, final Result result) throws IOException {
|
final Increment increment, final Result result) throws IOException {
|
||||||
hadPostIncrement = true;
|
hadPostIncrement = true;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hadPreGet() {
|
public boolean hadPreGet() {
|
||||||
|
|
Loading…
Reference in New Issue