Repository navigation
HADOOP-19973. Hadoop file system can not browse the folder that has children folder with colon in Windows. - #8536
Conversation
|
💔 -1 overall
This message was automatically generated. |
cb4f028 to
0864c91
Compare
|
💔 -1 overall
This message was automatically generated. |
302e17e to
5201a91
Compare
|
🎊 +1 overall
This message was automatically generated. |
|
🎊 +1 overall
This message was automatically generated. |
|
🎊 +1 overall
This message was automatically generated. |
|
🎊 +1 overall
This message was automatically generated. |
d89f1ef to
1a02e8b
Compare
|
🎊 +1 overall
This message was automatically generated. |
|
🎊 +1 overall
This message was automatically generated. |
|
@Hexiaoqiao @shfshihuafeng would you have time to take a look at this one? It is a one-line ABFS fix for HDFS-17881. All checks are green: Backports are prepared for the release branches: #8692 (branch-3.5) and Thanks! |
|
@cnauroth @steveloughran would you be able to review this as well? The change is HDFS-17881: All checks are green: One process question: the JIRA is filed under the HDFS project with component Thanks! |
|
* as noted, I'm not working. taking august off and doing something completely different from mid sept. sorry
only worry about this pr, asking for other branches is a distraction. the backports are just that, backports of whatever is in trunk, and shouldn't be different except where some incompatiblity (like junit) force it. get this one, submit those PRs with a declaration of which azure endpoints you reran the hadoop azure itests against (i.e. |
|
💔 -1 overall
This message was automatically generated. |
|
💔 -1 overall
This message was automatically generated. |
|
💔 -1 overall
This message was automatically generated. |
…hildren folder with colon in Windows.
ABFS built list-status entry paths with File.separator, which is a
backslash on Windows. Path("\name:x") then treats "\name" as a URI
scheme, so listing a directory whose children contain a colon failed
with URISyntaxException. The separator here is part of an ABFS/URI
path, not a local filesystem path, so use a forward slash
unconditionally.
Contains content generated by Claude.
Generated-by: Claude Opus 5
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
🎊 +1 overall
This message was automatically generated. |
anujmodi2021
left a comment
There was a problem hiding this comment.
+1
LGTM
Would be good to test this against a real storage account. May be run some integration test if not already done.
|
I am not set up to test against msft storage. Anyone who hits problems with azure storage must have an account, and so should be able to get set up for this. please get set up for testing...we can't be getting changes into a cloud storage connector that isn't being tested against that store, as it will ship and regressions not found out until it is actually in production. |
|
Hi @anujmodi2021 , NoteRan the full hadoop-azure integration suite on commit 6beae98 (this PR rebased on trunk) Results (failsafe): 1362 tests, 1136 passed, 0 failures, 12 errors, 214 skipped. All errors/failures are pre-existing and unrelated to this change:
ITestAzureBlobFileSystemListStatus (21 tests), ITestAbfsListStatusRemoteIterator |
|
Thanks @vt921102 @steveloughran do you see any other concerns with this change? |
|
Hi @anujmodi2021 , @steveloughran |
|
@vt921102 I'm taking an extended break from software dev, though I'm trying to set up hadoop for reproducible builds so we can get a 3.5.1 release out. If @anujmodi2021 cherrypicks this commit into that branch, it'll be included. |
|
@vt921102 |
…hildren folder with colon in Windows. (apache#8536) Contributed by Le Van Toan
|
Thanks @anujmodi2021 for the merge. For the The |
…hildren folder with colon in Windows. (apache#8536) Contributed by Le Van Toan
…hildren folder with colon in Windows. (apache#8536) Contributed by Le Van Toan (cherry picked from commit e8783aa) The production change is identical to trunk. TestAbfsClient required adaptation because branch-3.4 is still on JUnit 4 with Assertions.assertThat and Mockito.spy, its AbfsDfsClient constructor takes six arguments, and its AbfsClientContextBuilder has no withFileSystemId.
Description of PR
Fixes HADOOP-19973.
AbfsClient.getVersionedFileStatusFromEntry()built the entry path asnew Path(File.separator + entry.name()). On WindowsFile.separatoris abackslash, so for a child entry named
FestSpecial:the string handed toPathis\FestSpecial:.Pathlooks for the first:before the first/; finding no/, it treats\FestSpecialas a URI scheme and listingfails:
The separator here is part of an ABFS/URI path, not a local filesystem path,
so it must always be
/. Linux was unaffected becauseFile.separatorisalready
/there.Backports: #8692 (branch-3.5), #8693 (branch-3.4).
How was this patch tested?
New unit test
TestAbfsClient#testGetVersionedFileStatusFromEntryUsesForwardSlash,asserting the entry path is built with
/independently of the platform'sFile.separator. It fails on Windows before the fix and is a regression guardon every platform afterwards. Yetus reported
+1 unit — hadoop-azure in the patch passedon the pre-rebase revision; CI is re-running after the rebaseonto current trunk.
Manually reproduced and verified against Azure Data Lake Storage using the
test_hadoop_azure.zipreproducer attached to the JIRA (AbfsListStatusOAuthTest.java).Integration test endpoint declaration: TODO — see
hadoop-tools/hadoop-azure/src/site/markdown/testing_azure.md.For code changes:
LICENSE,LICENSE-binary,NOTICE-binaryfiles? (not applicable)AI Tooling
If an AI tool was used:
Contains content generated by Claude in creating the unit test.
Note
Ran the full hadoop-azure integration suite on commit 6beae98 (this PR rebased on trunk)
against ataccamahadoopabfsitest.dfs.core.windows.net (Azure region: North Europe),
HNS-enabled, auth = SharedKey, on macOS / JDK 17:
Results (failsafe): 1362 tests, 1136 passed, 0 failures, 12 errors, 214 skipped.
Results (surefire): 238 tests, 233 passed, 1 failure, 4 skipped.
Duration: 54:59
All errors/failures are pre-existing and unrelated to this change:
ITestAbfsClient.testAuthTypeProviderSetup[OAuth, SAS, UserboundSASWithOAuth]:
"Failed to initialize null" in AbfsConfiguration.getTokenProvider — the test
account has no OAuth/SAS token provider configured (SharedKey-only run).
trunk without this patch on macOS; timing-dependent eviction test.
ITestAzureBlobFileSystemListStatus (21 tests), ITestAbfsListStatusRemoteIterator
and the contract tests pass. The run was executed by my colleague Pavel Chuchma
on our team's storage account; I have the full logs and failsafe reports.