[ https://issues.apache.org/jira/browse/MSHADE-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17862387#comment-17862387 ]
Lorenzo Affetti edited comment on MSHADE-260 at 7/2/24 10:16 AM: ----------------------------------------------------------------- Hello people! This bug seems quite a big deal and It happens to me also on version 3.2.4 (java11). Is somebody working on this? Is this fixed in later versions? was (Author: JIRAUSER304233): Hello people! This bug seems quite a big deal and It happens to me also on version 3.2.4. Is somebody working on this? Is this fixed in later versions? > shading does not rewrite Lambda deserializers > --------------------------------------------- > > Key: MSHADE-260 > URL: https://issues.apache.org/jira/browse/MSHADE-260 > Project: Maven Shade Plugin > Issue Type: Bug > Affects Versions: 3.0.0, 3.1.0 > Environment: Java 8 > Reporter: James Moore > Priority: Major > > In our spark applications, we've encountered issues around shading and > lambdas. Where the javac inserted deserialization function ( included below ) > will not be updated to reflect the shaded libraries The relocation rule is > the following > {code:xml} > <relocation> > <pattern>com.google.protobuf</pattern> > <shadedPattern>com.google.protobuf.v3</shadedPattern> > </relocation> > {code} > But while the majority of the signatures are updated to > com.google.protobuf.v3 in the class file, the following byte code shows the > string where it is not. > {code:java} > (Ljava/lang/Class;Lorg/apache/hadoop/hbase/io/ImmutableBytesWritable;)Lcom/google/protobuf/Message > {code} > I believe this problem affects any shaded library which has a classed passed > into a serialized lambda instance. > {code:java} > private static java.lang.Object > $deserializeLambda$(java.lang.invoke.SerializedLambda); > Code: > 0: aload_0 > 1: invokevirtual #64 // Method > java/lang/invoke/SerializedLambda.getImplMethodName:()Ljava/lang/String; > 4: astore_1 > 5: iconst_m1 > 6: istore_2 > 7: aload_1 > 8: invokevirtual #70 // Method > java/lang/String.hashCode:()I > 11: lookupswitch { // 1 > 1182156382: 28 > default: 39 > } > 28: aload_1 > 29: ldc #71 // String > lambda$convert$60ebd0cc$1 > 31: invokevirtual #75 // Method > java/lang/String.equals:(Ljava/lang/Object;)Z > 34: ifeq 39 > 37: iconst_0 > 38: istore_2 > 39: iload_2 > 40: lookupswitch { // 1 > 0: 60 > default: 143 > } > 60: aload_0 > 61: invokevirtual #78 // Method > java/lang/invoke/SerializedLambda.getImplMethodKind:()I > 64: bipush 6 > 66: if_icmpne 143 > 69: aload_0 > 70: invokevirtual #81 // Method > java/lang/invoke/SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String; > 73: ldc #83 // String > org/apache/spark/api/java/function/Function > 75: invokevirtual #84 // Method > java/lang/Object.equals:(Ljava/lang/Object;)Z > 78: ifeq 143 > 81: aload_0 > 82: invokevirtual #87 // Method > java/lang/invoke/SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String; > 85: ldc #88 // String call > 87: invokevirtual #84 // Method > java/lang/Object.equals:(Ljava/lang/Object;)Z > 90: ifeq 143 > 93: aload_0 > 94: invokevirtual #91 // Method > java/lang/invoke/SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String; > 97: ldc #92 // String > (Ljava/lang/Object;)Ljava/lang/Object; > 99: invokevirtual #84 // Method > java/lang/Object.equals:(Ljava/lang/Object;)Z > 102: ifeq 143 > 105: aload_0 > 106: invokevirtual #95 // Method > java/lang/invoke/SerializedLambda.getImplClass:()Ljava/lang/String; > 109: ldc #96 // String StockHubSpotClass > 111: invokevirtual #84 // Method > java/lang/Object.equals:(Ljava/lang/Object;)Z > 114: ifeq 143 > 117: aload_0 > 118: invokevirtual #99 // Method > java/lang/invoke/SerializedLambda.getImplMethodSignature:()Ljava/lang/String; > 121: ldc #101 // String > (Ljava/lang/Class;Lorg/apache/hadoop/hbase/io/ImmutableBytesWritable;)Lcom/google/protobuf/Message; > 123: invokevirtual #84 // Method > java/lang/Object.equals:(Ljava/lang/Object;)Z > 126: ifeq 143 > 129: aload_0 > 130: iconst_0 > 131: invokevirtual #105 // Method > java/lang/invoke/SerializedLambda.getCapturedArg:(I)Ljava/lang/Object; > 134: checkcast #107 // class java/lang/Class > 137: invokedynamic #46, 0 // InvokeDynamic > #0:call:(Ljava/lang/Class;)Lorg/apache/spark/api/java/function/Function; > 142: areturn > 143: new #109 // class > java/lang/IllegalArgumentException > 146: dup > 147: ldc #111 // String Invalid lambda > deserialization > 149: invokespecial #114 // Method > java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V > 152: athrow > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)