geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GEODE-3213) Refactor Protobuf Serialization Implemenation
Date Thu, 20 Jul 2017 20:09:00 GMT

    [ https://issues.apache.org/jira/browse/GEODE-3213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16095277#comment-16095277
] 

ASF GitHub Bot commented on GEODE-3213:
---------------------------------------

Github user pivotal-amurmann commented on a diff in the pull request:

    https://github.com/apache/geode/pull/646#discussion_r128618059
  
    --- Diff: geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/ProtobufOpsProcessor.java
---
    @@ -15,32 +15,35 @@
     package org.apache.geode.protocol.protobuf;
     
     import org.apache.geode.cache.Cache;
    -import org.apache.geode.protocol.exception.InvalidProtocolMessageException;
    -import org.apache.geode.protocol.operations.OperationHandler;
    -import org.apache.geode.protocol.operations.registry.OperationsHandlerRegistry;
    -import org.apache.geode.protocol.operations.registry.exception.OperationHandlerNotRegisteredException;
    +import org.apache.geode.protocol.operations.OperationContext;
    +import org.apache.geode.protocol.operations.Result;
    +import org.apache.geode.protocol.operations.registry.OperationContextRegistry;
     import org.apache.geode.serialization.SerializationService;
     
     /**
      * This handles protobuf requests by determining the operation type of the request and
dispatching
      * it to the appropriate handler.
      */
     public class ProtobufOpsProcessor {
    -  private final OperationsHandlerRegistry opsHandlerRegistry;
    +
    +  private final OperationContextRegistry operationContextRegistry;
       private final SerializationService serializationService;
     
    -  public ProtobufOpsProcessor(OperationsHandlerRegistry opsHandlerRegistry,
    -      SerializationService serializationService) {
    -    this.opsHandlerRegistry = opsHandlerRegistry;
    +  public ProtobufOpsProcessor(SerializationService serializationService,
    +      OperationContextRegistry operationsContextRegistry) {
         this.serializationService = serializationService;
    +    this.operationContextRegistry = operationsContextRegistry;
       }
     
    -  public ClientProtocol.Response process(ClientProtocol.Request request, Cache cache)
    -      throws OperationHandlerNotRegisteredException, InvalidProtocolMessageException
{
    +  public ClientProtocol.Response process(ClientProtocol.Request request, Cache cache)
{
         ClientProtocol.Request.RequestAPICase requestType = request.getRequestAPICase();
    -    OperationHandler opsHandler =
    -        opsHandlerRegistry.getOperationHandlerForOperationId(requestType.getNumber());
    +    OperationContext operationContext = operationContextRegistry.getOperationContext(requestType);
    --- End diff --
    
    Currently we are getting a NPE for those which is awful and already lead to wasted time
debugging the non-obvious error. Let's go back to throwing something specific.


> Refactor Protobuf Serialization Implemenation
> ---------------------------------------------
>
>                 Key: GEODE-3213
>                 URL: https://issues.apache.org/jira/browse/GEODE-3213
>             Project: Geode
>          Issue Type: Improvement
>          Components: client/server, serialization
>            Reporter: Udo Kohlmeyer
>
> In the Protobuf serialization implementation, there are some refactorings we want to
make:
> * OperationHandlers take OperationRequest and OperationResponse message, not the parent
Request/Response Object
> * A generic flow needs to be implemented that all OperationHandlers follow. No bespoke
flows for any OperationHandlers... way too much maintenance
> * Use Functional semantics to configure the functionality to extract OperationRequest
from Request (per OperationHandler)
> * Use Functional semantics to configure the functionality to populate OperationResponse
in the relevant Response
> * Have generic Error Handling framework to populate "known" errors and error codes



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message