[
https://issues.apache.org/jira/browse/HDFS-17967?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18106444#comment-18106444
]
ASF GitHub Bot commented on HDFS-17967:
---------------------------------------
JHSUYU opened a new pull request, #8698:
URL: https://github.com/apache/hadoop/pull/8698
JIRA: HDFS-17967
## Summary
This is a follow-up of HDFS-17897 and HDFS-17899.
The following data-transfer connection paths still do not handle
InvalidEncryptionKeyException:
- DataXceiver.writeBlock() — mirror pipeline connection
- DataXceiver.replaceBlock() — proxy copy connection
- StripedBlockWriter — erasure coding target connection
With data-transfer encryption enabled, block-key rotation or transient RPC
failures delaying key propagation can leave DataNodes temporarily out of sync.
The SASL handshake
then fails with InvalidEncryptionKeyException.
Fix: Close the failed socket, clear the cached encryption key, and retry
once. Retrying is safe because the exception occurs before the downstream
writeBlock or copyBlock request is sent. A second failure is propagated.
## Test
-
TestDataXceiverEncryptionKey#testWriteBlockRetriesInvalidEncryptionKeyToMirror
-
TestDataXceiverEncryptionKey#testReplaceBlockRetriesInvalidEncryptionKeyToProxy
- TestStripedBlockWriterEncryptionKey#testClearEncryptionKeyOnRetry
> Handle InvalidEncryptionKeyException in data-transfer connection setup paths
> -----------------------------------------------------------------------------
>
> Key: HDFS-17967
> URL: https://issues.apache.org/jira/browse/HDFS-17967
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: datanode
> Affects Versions: 3.4.3
> Reporter: ZhenyuLi
> Priority: Major
>
> HDFS-17897 and HDFS-17899 added handling for
> InvalidEncryptionKeyException in several HDFS data-transfer connection
> paths.
> However, the following paths still do not retry when the cached data
> encryption
> key is rejected during the SASL handshake:
> * DataXceiver writeBlock mirror pipeline connection
> * DataXceiver replaceBlock proxy copy connection
> * Erasure coding StripedBlockWriter target connection
> In these paths, InvalidEncryptionKeyException is raised during the SASL
> data-transfer handshake, before the downstream writeBlock or copyBlock
> request
> is sent. Therefore, retrying the connection once is safe because no
> data-transfer operation has been issued yet.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]