This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new e7bf154708 HDDS-11132. Revert client version bump done as part of
HDDS-10983 (#7348)
e7bf154708 is described below
commit e7bf1547080cf84478b8728f167b8c70e524c2d5
Author: Swaminathan Balachandran <[email protected]>
AuthorDate: Wed Oct 23 04:04:34 2024 -0700
HDDS-11132. Revert client version bump done as part of HDDS-10983 (#7348)
---
.../java/org/apache/hadoop/ozone/ClientVersion.java | 4 ----
.../ozone/container/keyvalue/KeyValueHandler.java | 18 ++----------------
.../ozone/container/keyvalue/helpers/BlockUtils.java | 4 +++-
.../TestKeyValueHandlerWithUnhealthyContainer.java | 6 ++----
.../hdds/scm/storage/TestContainerCommandsEC.java | 2 +-
5 files changed, 8 insertions(+), 26 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java
index f3bd1a96b6..cc6695dc7d 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java
@@ -42,10 +42,6 @@ public enum ClientVersion implements ComponentVersion {
"This client version has support for Object Store and File " +
"System Optimized Bucket Layouts."),
- EC_REPLICA_INDEX_REQUIRED_IN_BLOCK_REQUEST(4,
- "This client version enforces replica index is set for fixing read
corruption that could occur when " +
- "replicaIndex parameter is not validated before EC block reads."),
-
FUTURE_VERSION(-1, "Used internally when the server side is older and an"
+ " unknown client version has arrived from the client.");
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
index 1bcb64200b..aa9c4bd953 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
@@ -121,7 +121,6 @@ import static
org.apache.hadoop.hdds.scm.protocolPB.ContainerCommandResponseBuil
import static
org.apache.hadoop.hdds.scm.utils.ClientCommandsUtils.getReadChunkVersion;
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
.ContainerDataProto.State.RECOVERING;
-import static
org.apache.hadoop.ozone.ClientVersion.EC_REPLICA_INDEX_REQUIRED_IN_BLOCK_REQUEST;
import static org.apache.hadoop.ozone.OzoneConsts.INCREMENTAL_CHUNK_LIST;
import static
org.apache.hadoop.ozone.container.common.interfaces.Container.ScanResult;
@@ -634,15 +633,6 @@ public class KeyValueHandler extends Handler {
return getEchoResponse(request);
}
- /**
- * Checks if a replicaIndex needs to be checked based on the client version
for a request.
- * @param request ContainerCommandRequest object.
- * @return true if the validation is required for the client version else
false.
- */
- private boolean replicaIndexCheckRequired(ContainerCommandRequestProto
request) {
- return request.hasVersion() && request.getVersion() >=
EC_REPLICA_INDEX_REQUIRED_IN_BLOCK_REQUEST.toProtoValue();
- }
-
/**
* Handle Get Block operation. Calls BlockManager to process the request.
*/
@@ -661,9 +651,7 @@ public class KeyValueHandler extends Handler {
try {
BlockID blockID = BlockID.getFromProtobuf(
request.getGetBlock().getBlockID());
- if (replicaIndexCheckRequired(request)) {
- BlockUtils.verifyReplicaIdx(kvContainer, blockID);
- }
+ BlockUtils.verifyReplicaIdx(kvContainer, blockID);
responseData = blockManager.getBlock(kvContainer,
blockID).getProtoBufMessage();
final long numBytes = responseData.getSerializedSize();
metrics.incContainerBytesStats(Type.GetBlock, numBytes);
@@ -786,9 +774,7 @@ public class KeyValueHandler extends Handler {
ChunkInfo chunkInfo = ChunkInfo.getFromProtoBuf(request.getReadChunk()
.getChunkData());
Preconditions.checkNotNull(chunkInfo);
- if (replicaIndexCheckRequired(request)) {
- BlockUtils.verifyReplicaIdx(kvContainer, blockID);
- }
+ BlockUtils.verifyReplicaIdx(kvContainer, blockID);
BlockUtils.verifyBCSId(kvContainer, blockID);
if (dispatcherContext == null) {
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/BlockUtils.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/BlockUtils.java
index 945efbcf6e..8bbc247800 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/BlockUtils.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/BlockUtils.java
@@ -247,7 +247,9 @@ public final class BlockUtils {
public static void verifyReplicaIdx(Container container, BlockID blockID)
throws IOException {
Integer containerReplicaIndex =
container.getContainerData().getReplicaIndex();
- if (containerReplicaIndex > 0 &&
!containerReplicaIndex.equals(blockID.getReplicaIndex())) {
+ Integer blockReplicaIndex = blockID.getReplicaIndex();
+ if (containerReplicaIndex > 0 && blockReplicaIndex != null &&
blockReplicaIndex != 0 &&
+ !containerReplicaIndex.equals(blockReplicaIndex)) {
throw new StorageContainerException(
"Unable to find the Container with replicaIdx " +
blockID.getReplicaIndex() + ". Container "
+ container.getContainerData().getContainerID() + " replicaIdx
is "
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandlerWithUnhealthyContainer.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandlerWithUnhealthyContainer.java
index 1db2d7ff53..395e943c76 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandlerWithUnhealthyContainer.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandlerWithUnhealthyContainer.java
@@ -124,8 +124,7 @@ public class TestKeyValueHandlerWithUnhealthyContainer {
handler.handleGetBlock(
getDummyCommandRequestProto(clientVersion,
ContainerProtos.Type.GetBlock, rid),
container);
- assertEquals((replicaIndex > 0 && rid != replicaIndex &&
clientVersion.toProtoValue() >=
-
ClientVersion.EC_REPLICA_INDEX_REQUIRED_IN_BLOCK_REQUEST.toProtoValue()) ?
+ assertEquals((replicaIndex > 0 && rid != 0 && rid != replicaIndex) ?
ContainerProtos.Result.CONTAINER_NOT_FOUND : UNKNOWN_BCSID,
response.getResult());
}
@@ -167,8 +166,7 @@ public class TestKeyValueHandlerWithUnhealthyContainer {
ContainerProtos.ContainerCommandResponseProto response =
handler.handleReadChunk(getDummyCommandRequestProto(clientVersion,
ContainerProtos.Type.ReadChunk, rid),
container, null);
- assertEquals((replicaIndex > 0 && rid != replicaIndex &&
- clientVersion.toProtoValue() >=
ClientVersion.EC_REPLICA_INDEX_REQUIRED_IN_BLOCK_REQUEST.toProtoValue()) ?
+ assertEquals((replicaIndex > 0 && rid != 0 && rid != replicaIndex) ?
ContainerProtos.Result.CONTAINER_NOT_FOUND : UNKNOWN_BCSID,
response.getResult());
}
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java
index 6f79839cd0..1b7eb837cf 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java
@@ -460,7 +460,7 @@ public class TestContainerCommandsEC {
int replicaIndex = 4;
XceiverClientSpi dnClient = xceiverClientManager.acquireClient(
createSingleNodePipeline(newPipeline, newPipeline.getNodes().get(0),
- replicaIndex));
+ 2));
try {
// To create the actual situation, container would have been in closed
// state at SCM.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]