This is an automated email from the ASF dual-hosted git repository.
weichiu pushed a commit to branch HDDS-7593
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-7593 by this push:
new 88fa26b140 HDDS-9918. [hsync] Remove block token from Ratis log once
verified. (#6745) (#6814)
88fa26b140 is described below
commit 88fa26b1408653074089551d373e15d75eddf7b5
Author: Wei-Chiu Chuang <[email protected]>
AuthorDate: Mon Jun 17 10:16:10 2024 -0700
HDDS-9918. [hsync] Remove block token from Ratis log once verified. (#6745)
(#6814)
(cherry picked from commit 4f328fc92a5f38917dfbe447af14f521600827ba)
Conflicts:
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
---
.../server/ratis/ContainerStateMachine.java | 36 ++++++++--------------
1 file changed, 12 insertions(+), 24 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
index 9eb5b909cc..2a4c557183 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
@@ -423,6 +423,9 @@ public class ContainerStateMachine extends BaseStateMachine
{
return builder.build().setException(ioe);
}
+ // once the token is verified, clear it from the proto
+ final ContainerCommandRequestProto.Builder protoBuilder =
ContainerCommandRequestProto.newBuilder(proto)
+ .clearEncodedToken();
boolean blockAlreadyFinalized = false;
if (proto.getCmdType() == Type.PutBlock) {
blockAlreadyFinalized =
shouldRejectRequest(proto.getPutBlock().getBlockData().getBlockID());
@@ -430,29 +433,15 @@ public class ContainerStateMachine extends
BaseStateMachine {
final WriteChunkRequestProto write = proto.getWriteChunk();
blockAlreadyFinalized = shouldRejectRequest(write.getBlockID());
if (!blockAlreadyFinalized) {
- // create the log entry proto
- final WriteChunkRequestProto commitWriteChunkProto =
- WriteChunkRequestProto.newBuilder(write)
- // skipping the data field as it is
- // already set in statemachine data proto
- .clearData()
- .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 WriteChunkRequestProto.Builder commitWriteChunkProto =
WriteChunkRequestProto.newBuilder(write)
+ .clearData();
+ protoBuilder.setWriteChunk(commitWriteChunkProto)
+ .setPipelineID(gid.getUuid().toString())
+ .setTraceID(proto.getTraceID());
- final Context context = new Context(proto,
commitContainerCommandProto);
- return builder
- .setStateMachineContext(context)
- .setStateMachineData(write.getData())
- .setLogData(commitContainerCommandProto.toByteString())
- .build();
+ builder.setStateMachineData(write.getData());
}
} else if (proto.getCmdType() == Type.FinalizeBlock) {
containerController.addFinalizedBlock(proto.getContainerID(),
@@ -465,10 +454,9 @@ public class ContainerStateMachine extends
BaseStateMachine {
ContainerProtos.Result.BLOCK_ALREADY_FINALIZED));
return transactionContext;
} else {
- final Context context = new Context(proto, proto);
- return builder
- .setStateMachineContext(context)
- .setLogData(proto.toByteString())
+ final ContainerCommandRequestProto containerCommandRequestProto =
protoBuilder.build();
+ return builder.setStateMachineContext(new Context(proto,
containerCommandRequestProto))
+ .setLogData(containerCommandRequestProto.toByteString())
.build();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]