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


##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java:
##########
@@ -422,39 +422,26 @@ 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())

Review Comment:
   My fault:  the `setLogData` should use the new proto.
   ```java
       final ContainerCommandRequestProto containerCommandRequestProto = 
protoBuilder.build();
       return builder.setStateMachineContext(new Context(proto, 
containerCommandRequestProto))
           .setLogData(containerCommandRequestProto.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