You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2018/02/12 22:07:55 UTC
[geode] 01/01: GEODE-4377: Don't catch encoding exceptions in
OperationHandlers
This is an automated email from the ASF dual-hosted git repository.
bschuchardt pushed a commit to branch feature/GEODE-4377
in repository https://gitbox.apache.org/repos/asf/geode.git
commit 6e255ecf1fddde7440079d148fdcfca5c6bcbf5b
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Mon Feb 12 14:05:31 2018 -0800
GEODE-4377: Don't catch encoding exceptions in OperationHandlers
This adds DecodingException and moves the handling of both
EncodingException and DecodingException to ProtobufOpsProcessor's
processOperation() method.
---
.../AbstractFunctionRequestOperationHandler.java | 18 ++++++----
...cuteFunctionOnGroupRequestOperationHandler.java | 21 +++++-------
...uteFunctionOnMemberRequestOperationHandler.java | 38 ++++++++++------------
...uteFunctionOnRegionRequestOperationHandler.java | 36 +++++++-------------
4 files changed, 48 insertions(+), 65 deletions(-)
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/AbstractFunctionRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/AbstractFunctionRequestOperationHandler.java
index 3a738c1..ceff45c 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/AbstractFunctionRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/AbstractFunctionRequestOperationHandler.java
@@ -26,6 +26,7 @@ import org.apache.geode.cache.execute.FunctionService;
import org.apache.geode.cache.execute.ResultCollector;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.protocol.operations.ProtobufOperationHandler;
import org.apache.geode.internal.protocol.protobuf.v1.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.v1.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.v1.Failure;
@@ -36,10 +37,13 @@ import org.apache.geode.internal.protocol.protobuf.v1.serialization.exception.En
import org.apache.geode.internal.security.SecurityService;
import org.apache.geode.security.NotAuthorizedException;
-public abstract class AbstractFunctionRequestOperationHandler {
+public abstract class AbstractFunctionRequestOperationHandler<Req, Resp>
+ implements ProtobufOperationHandler<Req, Resp> {
- public Result process(ProtobufSerializationService serializationService, AbstractMessage request,
+ @Override
+ public Result<Resp, ClientProtocol.ErrorResponse> process(
+ ProtobufSerializationService serializationService, Req request,
MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
final String functionID = getFunctionID(request);
@@ -111,19 +115,19 @@ public abstract class AbstractFunctionRequestOperationHandler {
}
protected abstract Set<?> parseFilter(ProtobufSerializationService serializationService,
- AbstractMessage request) throws EncodingException;
+ Req request) throws EncodingException;
- protected abstract String getFunctionID(AbstractMessage request);
+ protected abstract String getFunctionID(Req request);
/** the result of this may be null, which is used by the security service to mean "no region" */
- protected abstract String getRegionName(AbstractMessage request);
+ protected abstract String getRegionName(Req request);
/** region, list of members, etc */
- protected abstract Object getExecutionTarget(AbstractMessage request, String regionName,
+ protected abstract Object getExecutionTarget(Req request, String regionName,
MessageExecutionContext executionContext) throws InvalidExecutionContextException;
/** arguments for the function */
- protected abstract Object getFunctionArguments(AbstractMessage request,
+ protected abstract Object getFunctionArguments(Req request,
ProtobufSerializationService serializationService) throws EncodingException;
protected abstract Execution getFunctionExecutionObject(Object executionTarget)
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnGroupRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnGroupRequestOperationHandler.java
index 4d6faa0..65cdce7 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnGroupRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnGroupRequestOperationHandler.java
@@ -17,7 +17,6 @@ package org.apache.geode.internal.protocol.protobuf.v1.operations;
import java.util.List;
import java.util.Set;
-import com.google.protobuf.AbstractMessage;
import com.google.protobuf.ProtocolStringList;
import org.apache.geode.cache.execute.Execution;
@@ -36,9 +35,8 @@ import org.apache.geode.internal.protocol.protobuf.v1.Result;
import org.apache.geode.internal.protocol.protobuf.v1.Success;
import org.apache.geode.internal.protocol.protobuf.v1.serialization.exception.EncodingException;
-public class ExecuteFunctionOnGroupRequestOperationHandler
- extends AbstractFunctionRequestOperationHandler implements
- ProtobufOperationHandler<ExecuteFunctionOnGroupRequest, ExecuteFunctionOnGroupResponse> {
+public class ExecuteFunctionOnGroupRequestOperationHandler extends
+ AbstractFunctionRequestOperationHandler<ExecuteFunctionOnGroupRequest, ExecuteFunctionOnGroupResponse> {
@Override
@@ -52,27 +50,26 @@ public class ExecuteFunctionOnGroupRequestOperationHandler
@Override
protected Set<?> parseFilter(ProtobufSerializationService serializationService,
- AbstractMessage request) throws EncodingException {
+ ExecuteFunctionOnGroupRequest request) throws EncodingException {
// filters are not allowed on functions not associated with regions
return null;
}
@Override
- protected String getFunctionID(AbstractMessage request) {
- return ((ExecuteFunctionOnGroupRequest) request).getFunctionID();
+ protected String getFunctionID(ExecuteFunctionOnGroupRequest request) {
+ return (request).getFunctionID();
}
@Override
- protected String getRegionName(AbstractMessage request) {
+ protected String getRegionName(ExecuteFunctionOnGroupRequest request) {
// region name is not allowed in onMember invocation
return null;
}
@Override
- protected Object getExecutionTarget(AbstractMessage abstractRequest, String regionName,
+ protected Object getExecutionTarget(ExecuteFunctionOnGroupRequest request, String regionName,
MessageExecutionContext executionContext) throws InvalidExecutionContextException {
- ExecuteFunctionOnGroupRequest request = ((ExecuteFunctionOnGroupRequest) abstractRequest);
ProtocolStringList groupList = request.getGroupNameList();
// unfortunately FunctionServiceManager throws a FunctionException if there are no
@@ -100,9 +97,9 @@ public class ExecuteFunctionOnGroupRequestOperationHandler
}
@Override
- protected Object getFunctionArguments(AbstractMessage request,
+ protected Object getFunctionArguments(ExecuteFunctionOnGroupRequest request,
ProtobufSerializationService serializationService) throws EncodingException {
- return serializationService.decode(((ExecuteFunctionOnGroupRequest) request).getArguments());
+ return serializationService.decode((request).getArguments());
}
@Override
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
index cc608c4..6ac8fcb 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
@@ -18,7 +18,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import com.google.protobuf.AbstractMessage;
import com.google.protobuf.ProtocolStringList;
import org.apache.geode.cache.execute.Execution;
@@ -26,7 +25,6 @@ import org.apache.geode.cache.execute.FunctionService;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.DistributionManager;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
-import org.apache.geode.internal.protocol.operations.ProtobufOperationHandler;
import org.apache.geode.internal.protocol.protobuf.v1.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.v1.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.v1.Failure;
@@ -38,42 +36,40 @@ import org.apache.geode.internal.protocol.protobuf.v1.Result;
import org.apache.geode.internal.protocol.protobuf.v1.Success;
import org.apache.geode.internal.protocol.protobuf.v1.serialization.exception.EncodingException;
-public class ExecuteFunctionOnMemberRequestOperationHandler
- extends AbstractFunctionRequestOperationHandler implements
- ProtobufOperationHandler<ExecuteFunctionOnMemberRequest, ExecuteFunctionOnMemberResponse> {
+public class ExecuteFunctionOnMemberRequestOperationHandler extends
+ AbstractFunctionRequestOperationHandler<ExecuteFunctionOnMemberRequest, ExecuteFunctionOnMemberResponse> {
- @Override
- public Result<ExecuteFunctionOnMemberResponse, ClientProtocol.ErrorResponse> process(
- ProtobufSerializationService serializationService, ExecuteFunctionOnMemberRequest request,
- MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
-
- return (Result<ExecuteFunctionOnMemberResponse, ClientProtocol.ErrorResponse>) super.process(
- serializationService, request, messageExecutionContext);
- }
+ // @Override
+ // public Result<ExecuteFunctionOnMemberResponse, ClientProtocol.ErrorResponse> process(
+ // ProtobufSerializationService serializationService, ExecuteFunctionOnMemberRequest request,
+ // MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
+ //
+ // return (Result<ExecuteFunctionOnMemberResponse, ClientProtocol.ErrorResponse>) super.process(
+ // serializationService, request, messageExecutionContext);
+ // }
@Override
protected Set<?> parseFilter(ProtobufSerializationService serializationService,
- AbstractMessage request) throws EncodingException {
+ ExecuteFunctionOnMemberRequest request) throws EncodingException {
// filters are not allowed on functions not associated with regions
return null;
}
@Override
- protected String getFunctionID(AbstractMessage request) {
- return ((ExecuteFunctionOnMemberRequest) request).getFunctionID();
+ protected String getFunctionID(ExecuteFunctionOnMemberRequest request) {
+ return (request).getFunctionID();
}
@Override
- protected String getRegionName(AbstractMessage request) {
+ protected String getRegionName(ExecuteFunctionOnMemberRequest request) {
// region name is not allowed in onMember invocation
return null;
}
@Override
- protected Object getExecutionTarget(AbstractMessage abstractRequest, String regionName,
+ protected Object getExecutionTarget(ExecuteFunctionOnMemberRequest request, String regionName,
MessageExecutionContext executionContext) throws InvalidExecutionContextException {
- ExecuteFunctionOnMemberRequest request = (ExecuteFunctionOnMemberRequest) abstractRequest;
ProtocolStringList memberNameList = request.getMemberNameList();
@@ -102,9 +98,9 @@ public class ExecuteFunctionOnMemberRequestOperationHandler
}
@Override
- protected Object getFunctionArguments(AbstractMessage request,
+ protected Object getFunctionArguments(ExecuteFunctionOnMemberRequest request,
ProtobufSerializationService serializationService) throws EncodingException {
- return serializationService.decode(((ExecuteFunctionOnMemberRequest) request).getArguments());
+ return serializationService.decode((request).getArguments());
}
@Override
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
index b0798ce..2a675db 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
@@ -18,13 +18,10 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import com.google.protobuf.AbstractMessage;
-
import org.apache.geode.cache.Region;
import org.apache.geode.cache.execute.Execution;
import org.apache.geode.cache.execute.FunctionService;
import org.apache.geode.internal.exception.InvalidExecutionContextException;
-import org.apache.geode.internal.protocol.operations.ProtobufOperationHandler;
import org.apache.geode.internal.protocol.protobuf.v1.BasicTypes;
import org.apache.geode.internal.protocol.protobuf.v1.ClientProtocol;
import org.apache.geode.internal.protocol.protobuf.v1.Failure;
@@ -36,23 +33,12 @@ import org.apache.geode.internal.protocol.protobuf.v1.Result;
import org.apache.geode.internal.protocol.protobuf.v1.Success;
import org.apache.geode.internal.protocol.protobuf.v1.serialization.exception.EncodingException;
-public class ExecuteFunctionOnRegionRequestOperationHandler
- extends AbstractFunctionRequestOperationHandler implements
- ProtobufOperationHandler<ExecuteFunctionOnRegionRequest, ExecuteFunctionOnRegionResponse> {
-
- @Override
- public Result<ExecuteFunctionOnRegionResponse, ClientProtocol.ErrorResponse> process(
- ProtobufSerializationService serializationService, ExecuteFunctionOnRegionRequest request,
- MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException {
-
- return (Result<ExecuteFunctionOnRegionResponse, ClientProtocol.ErrorResponse>) super.process(
- serializationService, request, messageExecutionContext);
- }
+public class ExecuteFunctionOnRegionRequestOperationHandler extends
+ AbstractFunctionRequestOperationHandler<ExecuteFunctionOnRegionRequest, ExecuteFunctionOnRegionResponse> {
protected Set<Object> parseFilter(ProtobufSerializationService serializationService,
- AbstractMessage request) throws EncodingException {
- List<BasicTypes.EncodedValue> encodedFilter =
- ((ExecuteFunctionOnRegionRequest) request).getKeyFilterList();
+ ExecuteFunctionOnRegionRequest request) throws EncodingException {
+ List<BasicTypes.EncodedValue> encodedFilter = (request).getKeyFilterList();
Set<Object> filter = new HashSet<>();
for (BasicTypes.EncodedValue filterKey : encodedFilter) {
@@ -62,17 +48,17 @@ public class ExecuteFunctionOnRegionRequestOperationHandler
}
@Override
- protected String getFunctionID(AbstractMessage request) {
- return ((ExecuteFunctionOnRegionRequest) request).getFunctionID();
+ protected String getFunctionID(ExecuteFunctionOnRegionRequest request) {
+ return (request).getFunctionID();
}
@Override
- protected String getRegionName(AbstractMessage request) {
- return ((ExecuteFunctionOnRegionRequest) request).getRegion();
+ protected String getRegionName(ExecuteFunctionOnRegionRequest request) {
+ return (request).getRegion();
}
@Override
- protected Object getExecutionTarget(AbstractMessage request, String regionName,
+ protected Object getExecutionTarget(ExecuteFunctionOnRegionRequest request, String regionName,
MessageExecutionContext executionContext) throws InvalidExecutionContextException {
final Region<Object, Object> region = executionContext.getCache().getRegion(regionName);
if (region == null) {
@@ -85,9 +71,9 @@ public class ExecuteFunctionOnRegionRequestOperationHandler
}
@Override
- protected Object getFunctionArguments(AbstractMessage request,
+ protected Object getFunctionArguments(ExecuteFunctionOnRegionRequest request,
ProtobufSerializationService serializationService) throws EncodingException {
- return serializationService.decode(((ExecuteFunctionOnRegionRequest) request).getArguments());
+ return serializationService.decode((request).getArguments());
}
@Override
--
To stop receiving notification emails like this one, please contact
bschuchardt@apache.org.