Thanks Jack/Ryan for the feedback! I am happy to go with option 3 if that is what people agree on. Its the simplest change.
To be clear: We will just skip tests in the Nessie module on Java8. This will still create the jars for releases and still run tests for Java11. I will wait a day or two to see if anyone else has any feedback and if not will do Option 3. Best, Ryan On Mon, Jun 14, 2021 at 9:48 PM Ryan Blue <b...@apache.org> wrote: > I would also vote for option 3. That seems like the easiest way to go if > the Nessie server can't run in JDK8. Assuming that people have multiple > JDKs available seems brittle to me, too. And using a container seems like a > bit more development work in the Iceberg build. How long can we continue > running as we currently do? > > On Mon, Jun 14, 2021 at 9:26 AM Jack Ye <yezhao...@gmail.com> wrote: > >> My thinking is that currently we already have CI tasks for JDK 8 and 11 >> separately, so it would be sufficient to only run build on JDK8 and run >> build and test on JDK11, which leads to option 3. >> >> For option 1, I think people do mostly have JDK 11, but might not want to >> have 8 and 11 at the same time in classpath, so we should be more cautious >> about it. For option 2, yes the major concern will be the large Docker >> dependency, but since it is only test dependency it should be fine, so that >> is also a good way to go. >> >> -Jack Ye >> >> On Mon, Jun 14, 2021 at 6:14 AM Ryan Murray <rym...@gmail.com> wrote: >> >>> Hi All, >>> >>> Currently the iceberg CI/development build relies on a custom gradle >>> plugin to start a Nessie server for the nessie module tests. The underlying >>> tech that powers a nessie server is Quarkus. Unfortunately Quarkus is >>> dropping support for building and running from jdk8. This means that the >>> Java8 build and the Nessie module are no longer compatible. Note this is >>> the server only, and has no effect on the client. The client and the nessie >>> iceberg catalog are still jdk8/jdk11 compatible. >>> >>> We have a few ways to fix this and I wanted to solicit the opinion of >>> the community before working on one: >>> >>> 1) Have a JDK11 available on the PATH for builds. JDK11 based builds >>> work fine and JDK8 based builds can use the JDK11 on PATH to start the >>> Nessie server. This is easy in CI but it requires all devs to have a JDK11 >>> available. I am assuming that most developers have jdk11 on their path >>> already? >>> 2) Use testcontainers. The testcontainers plugin would start the Nessie >>> docker image for nessie tests. This would add a dependency of Docker to >>> both CI builds and developer builds. I am aware of other Apache projects >>> who use testcontainers so I don't think there are license issues but Docker >>> is potentially a large dependency. >>> 3) Skip Nessie module for JDK8 builds. This has little effect on CI and >>> developers but it complicates the release as to get all release modules a >>> build would have to happen for JDK8 and JDK11. >>> 4) We rebuild the Nessie server to work w/ Jersey. This has no effect on >>> iceberg devs but it's quite expensive for us. >>> >>> The order of preference for us is 1->4. I understand that most people >>> will prefer 4 but I am hoping that 1, 2, or 3 may be possible and we can >>> save some dev time on project Nessie. >>> >>> Best, >>> Ryan >>> >>> >>> > > -- > Ryan Blue >