From bd1cf6844a083515f8927c5df9b7b2642e3cf183 Mon Sep 17 00:00:00 2001 From: wanghongbing Date: Tue, 30 Jan 2024 20:22:25 +0800 Subject: [PATCH 1/2] HDDS-10246. Remove readLock from KeyValueHandler.checkContainerIsHealthy --- .../ozone/container/keyvalue/KeyValueHandler.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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 362c08c6a94b..1121188be9d1 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 @@ -749,14 +749,10 @@ ContainerCommandResponseProto handleReadChunk( @VisibleForTesting void checkContainerIsHealthy(KeyValueContainer kvContainer, BlockID blockID, Type cmd) { - kvContainer.readLock(); - try { - if (kvContainer.getContainerData().getState() == State.UNHEALTHY) { - LOG.warn("{} request {} for UNHEALTHY container {} replica", cmd, - blockID, kvContainer.getContainerData().getContainerID()); - } - } finally { - kvContainer.readUnlock(); + // No kvContainer.readLock() for performance optimization + if (kvContainer.getContainerData().getState() == State.UNHEALTHY) { + LOG.warn("{} request {} for UNHEALTHY container {} replica", cmd, + blockID, kvContainer.getContainerData().getContainerID()); } } From 7149cfa8437956081144b10a82ac0394533ba400 Mon Sep 17 00:00:00 2001 From: wanghongbing Date: Wed, 31 Jan 2024 17:41:35 +0800 Subject: [PATCH 2/2] Remove KeyValueHandler.checkContainerIsHealthy method --- .../container/keyvalue/KeyValueHandler.java | 20 ------------------- 1 file changed, 20 deletions(-) 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 1121188be9d1..1501f862cf79 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 @@ -580,7 +580,6 @@ ContainerCommandResponseProto handleGetBlock( try { BlockID blockID = BlockID.getFromProtobuf( request.getGetBlock().getBlockID()); - checkContainerIsHealthy(kvContainer, blockID, Type.GetBlock); responseData = blockManager.getBlock(kvContainer, blockID) .getProtoBufMessage(); final long numBytes = responseData.getSerializedSize(); @@ -615,8 +614,6 @@ ContainerCommandResponseProto handleGetCommittedBlockLength( try { BlockID blockID = BlockID .getFromProtobuf(request.getGetCommittedBlockLength().getBlockID()); - checkContainerIsHealthy(kvContainer, blockID, - Type.GetCommittedBlockLength); BlockUtils.verifyBCSId(kvContainer, blockID); blockLength = blockManager.getCommittedBlockLength(kvContainer, blockID); } catch (StorageContainerException ex) { @@ -703,7 +700,6 @@ ContainerCommandResponseProto handleReadChunk( .getChunkData()); Preconditions.checkNotNull(chunkInfo); - checkContainerIsHealthy(kvContainer, blockID, Type.ReadChunk); BlockUtils.verifyBCSId(kvContainer, blockID); if (dispatcherContext == null) { dispatcherContext = DispatcherContext.getHandleReadChunk(); @@ -741,21 +737,6 @@ ContainerCommandResponseProto handleReadChunk( return getReadChunkResponse(request, data, byteBufferToByteString); } - /** - * Throw an exception if the container is unhealthy. - * - * @throws StorageContainerException if the container is unhealthy. - */ - @VisibleForTesting - void checkContainerIsHealthy(KeyValueContainer kvContainer, BlockID blockID, - Type cmd) { - // No kvContainer.readLock() for performance optimization - if (kvContainer.getContainerData().getState() == State.UNHEALTHY) { - LOG.warn("{} request {} for UNHEALTHY container {} replica", cmd, - blockID, kvContainer.getContainerData().getContainerID()); - } - } - /** * Handle Delete Chunk operation. Calls ChunkManager to process the request. */ @@ -919,7 +900,6 @@ ContainerCommandResponseProto handleGetSmallFile( try { BlockID blockID = BlockID.getFromProtobuf(getSmallFileReq.getBlock() .getBlockID()); - checkContainerIsHealthy(kvContainer, blockID, Type.GetSmallFile); BlockData responseData = blockManager.getBlock(kvContainer, blockID); ContainerProtos.ChunkInfo chunkInfoProto = null;