wojiaodoubao commented on code in PR #7294:
URL: https://github.com/apache/hadoop/pull/7294#discussion_r1924758499


##########
hadoop-cloud-storage-project/hadoop-tos/hadoop-tos-shade/pom.xml:
##########
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.hadoop</groupId>
+    <artifactId>hadoop-project</artifactId>
+    <version>3.5.0-SNAPSHOT</version>
+    <relativePath>../../../hadoop-project</relativePath>
+  </parent>
+
+  <artifactId>hadoop-tos-shade</artifactId>
+  <version>3.5.0-SNAPSHOT</version>
+  <name>Apache Hadoop Volcano Engine Services Shade Dependencies</name>
+  <description>
+    This module contains code to support integration with Volcano Engine TOS.
+    It also declares the dependencies needed to work with Volcano Engine 
services.
+  </description>
+  <packaging>jar</packaging>
+
+  <properties>
+    <file.encoding>UTF-8</file.encoding>
+    <ve-tos-java-sdk.version>2.8.6</ve-tos-java-sdk.version>
+    <tos.shading.prefix>org.apache.hadoop.fs.tosfs.shaded</tos.shading.prefix>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <!-- The ve-tos-java-sdk 2.8.6 depends on okhttp, but okhttp violates 
dependency convergence.
+        The com.squareup.okhttp3:okhttp:jar:4.10.0 depends on 
org.jetbrains.kotlin:kotlin-stdlib-common,
+        with 2 different versions: 1.5.31 and 1.6.20. Force configure it to 
1.6.20. -->
+      <dependency>
+        <groupId>org.jetbrains.kotlin</groupId>
+        <artifactId>kotlin-stdlib-common</artifactId>
+        <version>1.6.20</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.volcengine</groupId>
+      <artifactId>ve-tos-java-sdk</artifactId>
+      <version>${ve-tos-java-sdk.version}</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>${maven-shade-plugin.version}</version>
+        <executions>
+          <execution>
+            <id>shade-tos-sdk</id>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <shadeSourcesContent>true</shadeSourcesContent>
+              <createSourcesJar>true</createSourcesJar>
+              <artifactSet>
+                <includes>
+                  <include>com.volcengine:*</include>
+                  <include>com.squareup.okhttp3:okhttp</include>
+                  <include>com.squareup.okio:okio-jvm</include>
+                  <include>org.jetbrains.kotlin:kotlin-stdlib*</include>

Review Comment:
   Thanks @pan3793 for your reply.
   
   > AFAIK, the hadoop-client-runtime was not fully tested in the Hadoop 
project, and several issues caused by relocation were identified after Spark 
adoption. I think the hadoop-tos-shade stays in the same situation
   
   This is a new input for me. Could you help giving more details about this 
issue, thanks a lot.
   
   > How hard is it for TOS to switch to another HTTP client?
   
   I'm not sure whether we can push the tos sdk to switch to another HTTP 
client. Even they would like to do this, it will take a lot of time. So I'd 
prefer to use the existed tos sdk.
   
   > publish ve-tos-java-sdk-shaded, and downstream projects like Hadoop simply 
consume the single jar, this will address the test coverage concern I mentioned 
above and save a lot of users for handling class conflict.
   
   In the current version, the ve-tos-java-sdk-shaded is done by 
hadoop-tos-shade, and the hadoop-tos-core module depends on the 
hadoop-tos-shade.
   
   If I publish a ve-tos-java-sdk-shaded, what is the difference between the 
published ve-tos-java-sdk-shaded ant the orignal hadoo-tos-shade module? May be 
because I don't understand the reflection stuff, I'm not clear at here. Please 
help if I'm wrong, thanks a lot.
   
   
   
   I prefer to make hadoop-tos depending on tos sdk directly, without any 
shade. The users can shade hadoop-tos and it's dependencies if necessary. This 
should be the most flexible way, without any side effect.



-- 
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