Skip to content

fix(jvm): restore Java env build by installing fission-java-core from source#437

Merged
sanketsudake merged 3 commits into
masterfrom
jvm-java25-fix
Jun 6, 2026
Merged

fix(jvm): restore Java env build by installing fission-java-core from source#437
sanketsudake merged 3 commits into
masterfrom
jvm-java25-fix

Conversation

@sanketsudake
Copy link
Copy Markdown
Member

Problem — why Java CI is failing

io.fission:fission-java-core:0.0.2-SNAPSHOT no longer resolves from anywhere:

  • It was only ever published to the oss.sonatype.org OSSRH snapshots repository, which has been decommissioned (404 on both oss.sonatype.org and central.sonatype.com snapshots).
  • It was never released to Maven Central (repo1.maven.org/maven2/io/fission/ only contains fission-jvm-jersey).
  • Source lives in fission/fission-java-libs (two interfaces: Function, Context).

So mvn package fails for the env image, the builder's user-function builds, and the example function built by jvm/tests/test_java_env.sh (which builds in a clean maven container — fixing only the images would not fix CI).

Fix

New jvm/install-fission-java-core.sh:

  • Downloads fission-java-libs at pinned commit e97baa8b (immutable tarball), normalizes the 2018-era pom's missing XML namespace declarations (strict plugin parsers reject it), and mvn installs fission-java-core under 0.0.1, 0.0.2 and 0.0.2-SNAPSHOT.
  • The SNAPSHOT version keeps pre-existing user functions (whose poms still reference 0.0.2-SNAPSHOT) building against the new jvm-builder image — Maven falls back to the local artifact when the dead remote is unreachable.
  • Duplicated into jvm/builder/ (that image's Docker build context is jvm/builder/; the copy carries a keep-in-sync note).

Used in three places: env image build stage, builder image (pre-seeds /root/.m2), and the CI test script before packaging the example.

Repo poms now reference fission-java-core:0.0.2 (non-SNAPSHOT — never checked against remotes once installed locally) and drop the dead oss.sonatype.org <repositories> blocks.

Version bumps

  • Spring Boot parent 3.3.2 → 3.5.14 (latest 3.x)
  • Java 22 (non-LTS, images no longer updated) → 25 LTS: maven:3.9.16-eclipse-temurin-25-alpine / eclipse-temurin:25-jdk-alpine
  • Example pom: spring-boot-starter-web 2.0.1.RELEASE → 3.5.14 (provided), surefire 2.22.1 → 3.5.4, maven.compiler.release 17
  • envconfig.json: runtimeVersion 25, version 1.31.3 → 1.32.0 (triggers release on merge)
  • environments.json regenerated via make update-env-json (was stale — still carried jvm 1.31.1)

Verification (local)

  • jvm-env image builds (make jvm-env-img DOCKER_FLAGS=--load)
  • jvm-builder image builds; contains maven 3.9.16 + all three artifact versions in /root/.m2
  • ✅ Example jar builds with the exact docker run command the CI test uses
  • ✅ Container smoke test: Spring Boot 3.5.14 boots on Java 25.0.3, POST /v2/specialize → 200, GET /Hello World!

Related

🤖 Generated with Claude Code

… source

io.fission:fission-java-core:0.0.2-SNAPSHOT was only ever published to
the oss.sonatype.org OSSRH snapshots repository, which has been
decommissioned, so the jvm env, its builder and the example function
could no longer resolve the dependency and CI failed.

- Add install-fission-java-core.sh which builds the artifact from a
  pinned commit of fission/fission-java-libs and installs it into the
  local Maven repository under 0.0.1, 0.0.2 and 0.0.2-SNAPSHOT (the
  SNAPSHOT version keeps pre-existing user functions building against
  the jvm-builder image working). The script normalizes the library
  pom's missing XML namespace declarations which strict plugin parsers
  reject. Duplicated into jvm/builder/ because the builder image is
  built with that directory as its Docker context.
- Reference fission-java-core 0.0.2 (non-SNAPSHOT) from jvm/pom.xml and
  the example pom, and drop the dead oss.sonatype.org <repositories>
  blocks.
- jvm/tests/test_java_env.sh installs the artifact inside the clean
  maven build container before packaging the example function.
- Upgrade Spring Boot 3.3.2 -> 3.5.14, Java 22 -> 25 LTS
  (maven 3.9.16-eclipse-temurin-25-alpine / eclipse-temurin:25-jdk-alpine),
  example spring-boot-starter-web 2.0.1.RELEASE -> 3.5.14 and
  surefire 2.22.1 -> 3.5.4.
- Bump envconfig version to 1.32.0 (runtimeVersion 25) and regenerate
  environments.json via make update-env-json (it was stale).

Verified locally: env + builder images build, the example jar builds
exactly as the CI test does, and a container smoke test passes
(/v2/specialize 200, invoke returns "Hello World!" on Java 25.0.3 /
Spring Boot 3.5.14).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…r Hub image

The jvm e2e test relied on the utils.sh default JVM_RUNTIME_IMAGE
(fission/jvm-env from Docker Hub, years out of date), so the image
loaded into kind by `make jvm-test-images` was never exercised and the
freshly built example jar (release 17 bytecode) failed to load on the
ancient runtime. Pin JVM_RUNTIME_IMAGE=jvm-env in the test, matching
the go/binary/nodejs/python test convention.

Also add Collect Fission Dump on failure to the jvm job (same hunk as
in #436) so future e2e failures leave pod-level diagnostics.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sanketsudake
Copy link
Copy Markdown
Member Author

CI is green ✅ — the jvm e2e job now builds the example jar from source-installed fission-java-core and runs it against the locally built Java 25 / Spring Boot 3.5.14 image (pool manager + new deployment both pass). Ready for merge.

…n from master which supersedes this branch's jvm-job hunk
@sanketsudake sanketsudake merged commit 4a4ce69 into master Jun 6, 2026
15 checks passed
@sanketsudake sanketsudake deleted the jvm-java25-fix branch June 6, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant