szetszwo commented on code in PR #6745:
URL: https://github.com/apache/ozone/pull/6745#discussion_r1619221458


##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java:
##########
@@ -465,10 +467,15 @@ public TransactionContext 
startTransaction(RaftClientRequest request)
           ContainerProtos.Result.BLOCK_ALREADY_FINALIZED));
       return transactionContext;
     } else {
-      final Context context = new Context(proto, proto);
+      ContainerCommandRequestProto commitContainerCommandProto =
+          ContainerCommandRequestProto
+              .newBuilder(proto)
+              .clearEncodedToken()
+              .build();
+      final Context context = new Context(proto, commitContainerCommandProto);
       return builder
           .setStateMachineContext(context)
-          .setLogData(proto.toByteString())
+          .setLogData(commitContainerCommandProto.toByteString())

Review Comment:
   Let's combine both cases.  BTW, we should not call `build()` for the 
intermediate protos.
   ```java
   +++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
   @@ -422,39 +422,27 @@ public TransactionContext 
startTransaction(RaftClientRequest request)
          }
          return builder.build().setException(ioe);
        }
   +
   +    // once the token is verified, clear it from the proto
   +    final ContainerCommandRequestProto.Builder protoBuilder = 
ContainerCommandRequestProto.newBuilder(proto)
   +        .clearEncodedToken();
   +
        if (proto.getCmdType() == Type.WriteChunk) {
          final WriteChunkRequestProto write = proto.getWriteChunk();
   -      // create the log entry proto
   -      final WriteChunkRequestProto commitWriteChunkProto =
   -          WriteChunkRequestProto.newBuilder()
   -              .setBlockID(write.getBlockID())
   -              .setChunkData(write.getChunkData())
   -              // skipping the data field as it is
   -              // already set in statemachine data proto
   -              .build();
   -      ContainerCommandRequestProto commitContainerCommandProto =
   -          ContainerCommandRequestProto
   -              .newBuilder(proto)
   -              .setPipelineID(gid.getUuid().toString())
   -              .setWriteChunk(commitWriteChunkProto)
   -              .setTraceID(proto.getTraceID())
   -              .build();
          Preconditions.checkArgument(write.hasData());
          Preconditions.checkArgument(!write.getData().isEmpty());
   -
   -      final Context context = new Context(proto, 
commitContainerCommandProto);
   -      return builder
   -          .setStateMachineContext(context)
   -          .setStateMachineData(write.getData())
   -          .setLogData(commitContainerCommandProto.toByteString())
   -          .build();
   -    } else {
   -      final Context context = new Context(proto, proto);
   -      return builder
   -          .setStateMachineContext(context)
   -          .setLogData(proto.toByteString())
   -          .build();
   +      // skipping the data field as it is already set in statemachine data 
proto
   +      final WriteChunkRequestProto.Builder commitWriteChunkProto = 
WriteChunkRequestProto.newBuilder(write)
   +          .clearData();
   +      protoBuilder.setWriteChunk(commitWriteChunkProto)
   +          .setPipelineID(gid.getUuid().toString())
   +          .setTraceID(proto.getTraceID());
   +
   +      builder.setStateMachineData(write.getData());
        }
   +    return builder.setStateMachineContext(new Context(proto, 
protoBuilder.build()))
   +        .setLogData(proto.toByteString())
   +        .build();
    
      }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to