yangdong2398 opened a new pull request, #8823:
URL: https://github.com/apache/hadoop/pull/8823

   ### Description of PR
   
   JIRA: https://issues.apache.org/jira/browse/HADOOP-20021
   
   Follow-up to HDFS-11161 (hadoop-bos), found while verifying the module with 
the `hadoop fs` CLI and the contract suite on JDK 17.
   
   - Upgrade `bce-java-sdk` 0.10.330 -> 0.10.332. 0.10.330 throws 
`NullPointerException` on `hadoop fs -ls bos://bucket/` because the list 
response has no `owner`; 0.10.332 guards it.
   - Hierarchy (namespace) buckets:
     - `rename`: follow the FileSystem contract when the destination is an 
existing directory, and refuse to rename into its own descendant.
     - `create`: throw `ParentNotDirectoryException` when an ancestor is a file.
     - Map HTTP 400 `InvalidArgument` to `BosException` instead of 
`SessionTokenExpireException`; the latter was retried by the retry policy and 
caused ~150s timeouts.
   - Packaging: stop bundling guava, httpclient, httpcore and commons-codec in 
the shaded jar and use the ones shipped with Hadoop (jar ~14MB -> ~9.4MB). 
`httpcore-nio` and `httpasyncclient` are still bundled: the SDK's 
`BceHttpClient` needs them at class load time even with async put disabled, and 
Hadoop does not ship them.
   - Update `LICENSE-binary` (SDK version, `httpcore-nio`, `httpasyncclient`).
   
   ### How was this patch tested?
   
   JDK 17, endpoint `http://bj.bcebos.com`, run against real BOS with 
credentials from environment variables 
(`EnvironmentVariableCredentialsProvider`):
   
   - Contract suite on both a flat bucket and a hierarchy bucket: 140 tests, 0 
failures, 0 errors, 31 skipped (append, concat, unbuffer, setTimes, rootdir, 
and 2 in create).
   - `hadoop fs` CLI on both buckets: `mkdir -p`, `put`, `cat`, `mv`, `ls` 
(including bucket root), `rm -r`, `-checksum`.
   - `mvn checkstyle:check` (0 violations), `javadoc:javadoc` and 
`spotbugs:check` (0 bugs) on `hadoop-bos`.
   
   Limitations: the CLI check used a Maven-resolved classpath, not a built 
distribution tarball. Since guava/httpclient now come from Hadoop, hadoop-bos 
needs `hadoop-common` (not only `hadoop-client-api`) on the classpath.
   
   ### For code changes:
   
   - [x] Does the title or this PR starts with the corresponding JIRA issue id 
(e.g. 'HADOOP-17799. Your PR title ...')?
   - [x] Object storage: have the integration tests been executed and the 
endpoint declared according to the connector-specific documentation?
   - [x] If adding new dependencies to the code, are these dependencies 
licensed in a way that is compatible for inclusion under [ASF 
2.0](http://www.apache.org/legal/resolved.html#category-a)?
   - [x] If applicable, have you updated the `LICENSE`, `LICENSE-binary`, 
`NOTICE-binary` files?
   
   ### AI Tooling
   
   - [x] The PR includes the phrase "Contains content generated by Claude Code"
         where Claude Code is the name of the AI tool used.
   - [x] My use of AI contributions follows the ASF legal policy
         https://www.apache.org/legal/generative-tooling.html
   
   Contains content generated by Claude Code.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to