driessamyn-sparta commented on code in PR #27700:
URL: https://github.com/apache/flink/pull/27700#discussion_r3073897032


##########
flink-filesystems/flink-azure-fs-hadoop/pom.xml:
##########
@@ -150,6 +150,12 @@ under the License.
                                                                        
<pattern>org.apache.flink.runtime.util</pattern>
                                                                        
<shadedPattern>org.apache.flink.fs.azure.common</shadedPattern>
                                                                </relocation>
+                                                               <!-- Relocate 
Jackson to prevent conflicts with user jobs that depend on newer

Review Comment:
   Thanks for the review @featzhang.
   
   Relocating the full `com.fasterxml.jackson` namespace is consistent with how 
Jackson is shaded across the rest of the Flink codebase — modules like 
`flink-kubernetes`, `flink-sql-avro`, `flink-python`, and `flink-model-triton` 
all relocate the same top-level package without a `ServicesResourceTransformer`.
   
   Jackson's META-INF/services files (e.g. for `JsonFactory`, `ObjectCodec`) 
are not relied upon at runtime in this context — the AWS SDK and Hadoop 
instantiate Jackson classes directly rather than through the ServiceLoader 
mechanism. In fact, `flink-kubernetes` explicitly excludes Jackson SPI files 
from its shaded JAR (`<exclude>META-INF/services/*com.fasterxml*</exclude>`). 
The shade plugin also automatically rewrites service file contents during 
relocation, so even if they were loaded, the references would point to the 
relocated classes.



##########
flink-filesystems/flink-azure-fs-hadoop/pom.xml:
##########
@@ -150,6 +150,12 @@ under the License.
                                                                        
<pattern>org.apache.flink.runtime.util</pattern>
                                                                        
<shadedPattern>org.apache.flink.fs.azure.common</shadedPattern>
                                                                </relocation>
+                                                               <!-- Relocate 
Jackson to prevent conflicts with user jobs that depend on newer
+                                                                    Jackson 
versions. -->
+                                                               <relocation>

Review Comment:
   Good suggestion @featzhang. I've expanded the comment in all five filesystem 
plugin POMs to explain why per-plugin shading is preferred over reusing a 
Flink-wide namespace (see f9564af).



##########
flink-filesystems/flink-gs-fs-hadoop/pom.xml:
##########
@@ -224,6 +224,12 @@ under the License.
                                                                        
<pattern>org.apache.flink.runtime.util</pattern>
                                                                        
<shadedPattern>org.apache.flink.fs.gs.org.apache.flink.runtime.util</shadedPattern>
                                                                </relocation>
+                                                               <!-- Relocate 
Jackson to prevent conflicts with user jobs that depend on newer
+                                                                    Jackson 
versions. -->
+                                                               <relocation>

Review Comment:
   Thanks @featzhang. The new `org.apache.flink.fs.gs.shaded.jackson` namespace 
is distinct from the existing relocations in this module, which target 
`org.apache.flink.fs.gs.org.apache.flink.runtime.fs.hdfs` and 
`org.apache.flink.fs.gs.org.apache.flink.runtime.util`. There is no prefix 
overlap between these.
   
   As for Google Cloud libraries that may bundle their own Jackson: 
`google-cloud-storage` and `gcs-connector` bring in standard (unshaded) Jackson 
under `com.fasterxml.jackson`, which is exactly what this relocation rule 
captures and rewrites. Google's own internally-shaded dependencies (e.g. 
`com.google.api.client.json`) use separate package namespaces that are 
unaffected by this relocation. I've verified in the built JAR that no 
`com.fasterxml.jackson` classes remain unrelocated.



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

Reply via email to