The version of Guava that you use at compile time is important. If it’s earlier than 20 (-ish) the byte codes will be different because of the presence/absence of certain varargs methods.
> On Dec 19, 2023, at 7:28 PM, Benchao Li <[email protected]> wrote: > > I tried to reproduce this using Guillaume's > project(https://github.com/MasseGuillaume/asm-remapper-bug), and the > findings are below: > > - compiled latest main branch > (50a20824c4536450dcae963b5e757cf4bbc7e406) with JDK8(1.8.0_391) on > MacOS with M2 chip: reproduced > - compiled latest main branch > (50a20824c4536450dcae963b5e757cf4bbc7e406) with JDK8(1.8.0_391) on > Linux with x64 architecture: reproduced > - compiled latest main branch > (50a20824c4536450dcae963b5e757cf4bbc7e406) with JDK11(1.11.0_21) on > MacOS with M2 chip: cannot reproduce > - compiled latest main branch > (50a20824c4536450dcae963b5e757cf4bbc7e406) with JDK17(1.17.0_7) on > MacOS with M2 chip: cannot reproduce > > It seems unrelated to platforms, and I assume it should not either, > since Java's bytecode should be platform independent. > > @Guillaume You said above that with 1.8.0_371-b11 on macos x64, you > cannot reproduce the problem, can you confirm that? Per my testing, > JDK8's output could all reproduce the problem > > Guillaume Masse <[email protected]> 于2023年12月18日周一 23:13写道: >> >> If I build 1.36.0 and 1.35.0 with the same java version/build javap can >> read the classfiles. Since the release process is manual it's really hard >> to know what causes the problem. My solution is to build and release each >> Calcite version myself and host it on our own S3 repository. >> >> On Mon, Dec 18, 2023, 8:56 AM Ruben Q L <[email protected]> wrote: >> >>> Hello, >>> >>> My project also recently upgraded to Calcite 1.36, and we are facing the >>> exact same issue when trying to shade with ASM. >>> >>> @Guillame , I can see that https://gitlab.ow2.org/asm/asm/-/issues/318008 >>> has >>> been closed, but I can't really understand why, since the explanation >>> mentions SqlFunctions-1.35.0, but the issue is with 1.36, do you have more >>> info on that? >>> >>> Best, >>> Ruben >>> >>> >>> On Fri, Nov 24, 2023 at 10:09 PM Guillaume Masse >>> <[email protected]> wrote: >>> >>>> We run spark in AWS EMR and it overrides the classpath, so we don't have >>>> control over it: >>>> >>>> Sparks will pull guava 14.0.1: >>>> >>>> >>> https://github.com/apache/spark/blob/master/dev/deps/spark-deps-hadoop-3-hive-2.3#L68 >>>> >>>> That's why we need to shade guava. >>>> >>>> >>>> On Fri, Nov 24, 2023 at 4:31 PM Julian Hyde <[email protected]> wrote: >>>> >>>>> The version of Guava we compile against is relevant. In 1.35 we >>>>> compiled against Guava 19.0; in 1.36 we compiled against Guava >>>>> 32.1.3-jre. The effect would be the same if we compiled against any >>>>> version of Guava 20.0 or higher, due to the addition of >>>>> Preconditions.checkArgument methods that in earlier Guava versions >>>>> would be handled by varargs method. >>>>> >>>>> See https://issues.apache.org/jira/browse/CALCITE-5477 (which was >>>>> fixed in 1.35) and https://issues.apache.org/jira/browse/CALCITE-5763 >>>>> (which was fixed in 1.36 and essentially reverted 5477). >>>>> >>>>> Julian >>>>> >>>>> On Fri, Nov 24, 2023 at 10:20 AM Guillaume Masse >>>>> <[email protected]> wrote: >>>>>> >>>>>> Hi Benchao Li, >>>>>> >>>>>> thanks for giving me more details like the java version, >>>>>> >>>>>> I compiled with 1.8.0_371-b11 on macos x64 (emulated) and I was still >>>>> able >>>>>> to transform the classfile. The bug must come from something else. >>> Was >>>>> this >>>>>> compiled on your personal machine? Was it on windows/linux/mac? >>> What's >>>>> the >>>>>> processor architecture? >>>>>> >>>>>> 1.35.0 also pases the transformation and the same piece of code is >>>> there. >>>>>> How was 1.35.0 released? >>>>>> >>>>>> Thanks! >>>>>> >>>>>> >>>>>> On Thu, Nov 23, 2023 at 9:59 PM Benchao Li <[email protected]> >>>> wrote: >>>>>> >>>>>>> Guillaume, >>>>>>> >>>>>>> The binary release are always compiled with JDK8, this is a >>> required >>>>>>> procedure[1]. >>>>>>> >>>>>>> For 1.36.0, the JDK version I'm using is: >>>>>>> $ java -version >>>>>>> java version "1.8.0_371" >>>>>>> Java(TM) SE Runtime Environment (build 1.8.0_371-b11) >>>>>>> Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode) >>>>>>> >>>>>>> [1] >>>>> https://calcite.apache.org/docs/howto.html#making-a-release-candidate >>>>>>> >>>>>>> Guillaume Masse <[email protected]> >>>> 于2023年11月24日周五 >>>>>>> 07:22写道: >>>>>>>> >>>>>>>> Hi all, >>>>>>>> >>>>>>>> We recently upgraded to calcite 1.36.0 and it broke our >>> deployment >>>>>>> process. >>>>>>>> We are using java asm <https://asm.ow2.io/> to shade (rename >>>>> packages >>>>>>> from >>>>>>>> the bytecode) since there are multiple dependencies clash when >>>> using >>>>> with >>>>>>>> Apache Spark. For example, Apache Spark is using a much older >>>>> version of >>>>>>>> guava. If I build calcite locally with Java Correto 17.0.7-amzn I >>>> can >>>>>>>> transform calcite's bytecode without any problem. Where can I >>> find >>>>> the >>>>>>> java >>>>>>>> version used to compiled calcite? Is there a process in place to >>>>> have a >>>>>>>> consistent java version? >>>>>>>> >>>>>>>> https://gitlab.ow2.org/asm/asm/-/issues/318008 >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Guillaume Massé >>>>>>>> [Gee-OHM] >>>>>>>> (马赛卫) >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> Best, >>>>>>> Benchao Li >>>>>>> >>>>> >>>> >>> > > > > -- > > Best, > Benchao Li
