Skip to content

Upgrade to 4.18.0 (bis)#693

Closed
f2par0 wants to merge 39 commits intoapache:mainfrom
Talend:fdeparscau/4.18.0
Closed

Upgrade to 4.18.0 (bis)#693
f2par0 wants to merge 39 commits intoapache:mainfrom
Talend:fdeparscau/4.18.0

Conversation

@f2par0
Copy link
Copy Markdown
Collaborator

@f2par0 f2par0 commented Apr 1, 2026

No description provided.

jbonofre and others added 30 commits March 18, 2026 09:30
Force javax.xml.bind:jaxb-api to 2.3.1 in dependencyManagement to
avoid transitive resolution of beta 2.3.0-b161121.1438 from defunct
http://maven.java.net repositories blocked by Maven 3.8.1+.
…ap<String, String>

Camel 4.18.0 changed EndpointUriFactory.multiValuePrefixes() from Set<String>
to Map<String, String>. Updated the generated DirectVm and Vm endpoint URI
factories accordingly.
The camel-spring-ai component was split into camel-spring-ai-chat,
camel-spring-ai-embeddings, camel-spring-ai-tools, and
camel-spring-ai-vector-store in Camel 4.18.0. The monolithic artifact
no longer exists.
Replace auto-detect-version with explicit version properties for nimbusds,
ASM, opentelemetry-semconv, reactor-netty-incubator-quic, and
netty-incubator-codec-classes-quic. Add missing feature dependencies for
camel-aws-common, camel-micrometer-observability, camel-mina-sftp,
camel-opentelemetry-metrics, camel-test-junit6, camel-test-main-junit6,
and camel-test-spring-junit6. Update jackson2 to 2.20.1 with separate
annotations version, and bump generated component JSON versions.
- Add netty-nio-client to awssdk feature for AWS SDK Netty HTTP transport
- Add camel-aws-common dependency to all AWS/AWS2 features
- Add awssdk feature to AWS features missing it
- Wrap avro-ipc-netty and reactor-netty with relaxed netty version imports
- Wrap reactor-core with optional jdk.internal and micrometer imports
- Add cxf-rt-features-logging to camel-cxf feature
- Add missing jackson, http-client, azure, guava feature dependencies
- Add wrapped bundles for docling, github-api, graphql-java, groovy,
  IBM COS/Watson/WatsonX, iggy, langchain4j, Milo OPC UA, SSHD,
  stripe, openai, keycloak
- Fix protobuf4-version to 4.31.1 for Google Cloud features
- Fix snakeyaml-engine version for kubernetes
- Fix opentelemetry-semconv groupId
- Add micrometer-observation bundle for micrometer-observability
- Add spring-data-redis for camel-redis
- Add resilience4j and micrometer deps for resilience4j-micrometer
- Wrap various bundles with resolution:=optional imports
- Add missing AWS SDK service bundles (polly, rekognition, s3vectors,
  textract, transcribe)
- Wrap reactor-core in azure base feature with selective optional imports
- Add WSS4J bundles for CXF WS-Security resolution
- Add missing feature dependencies (jackson, guava, http-client,
  bouncycastle, caffeine) across multiple features
- Add missing bundles: elasticsearch-rest5-client, checker-qual,
  sshd-sftp, resilience4j-micrometer, micrometer-tracing,
  jolokia-core, keycloak-common/core/authz-client, spring-vault-core,
  proto-google-common-protos, google-genai, opentelemetry-sdk
  sub-modules, openai-java-core/client-okhttp, spring-test
- Fix camel-stitch netty import range in component pom.xml
- Fix version mismatches: protobuf4 bump to 4.33.4, snakeyaml-engine
  pinned to 2.10 for kubernetes, protobuf 3.x for google-functions
  and google-vertexai
- Wrap third-party bundles with optional imports where needed
  (infinispan, neo4j, ical4j, dapr-sdk, jackson-databind-nullable)
Replace docling-java with docling-core, docling-serve-api, and
docling-serve-client to provide the required ai.docling.core and
ai.docling.serve.api packages.
- Fix opentelemetry-semconv groupId (io.opentelemetry.semconv -> io.opentelemetry)
- Fix Eclipse Milo artifact IDs and add missing milo bundles (milo-stack-core,
  milo-transport, milo-dtd-manager, milo-dtd-core, jspecify)
- Fix ibm-watsonx-ai, iggy, and infinispan artifact coordinates
… infinispan

- Fix elasticsearch: use io.opentelemetry.semconv groupId for semconv 1.37.0
- Fix iggy: add missing commons-pool2 dependency bundle
- Fix infinispan-common: remove infinispan-query-dsl (dropped in Infinispan 16)
Testcontainers 2.0.3 renamed all modules from {name} to
testcontainers-{name}. Update all test POMs accordingly.
…n-annotations

jackson-annotations 2.20.1 doesn't exist; use the correct property
jackson2-annotations-version (2.20) instead of jackson2-version.
- Add explicit Event Hub entity config (eh1) so the emulator creates it
- Use log-based wait strategy instead of port-based to ensure emulator
  is fully ready before tests run
- Use acceptLicense() instead of env var
- Increase mock assertion wait time to 60s to allow for slow startup
The 2.0.1 emulator image consistently crashes with exit code 139
(SIGSEGV) on GitHub Actions runners.
…age-blob features

Mark non-netty imports as optional (resolution:=optional) for wrapped
reactor-netty-core and reactor-netty-http bundles to prevent unresolvable
optional dependencies (micrometer, brave, etc.) from blocking bundle resolution.
…rage-blob features

Remove dependency='true' from reactor-netty-core and reactor-netty-http
bundle entries so Karaf always installs them. With dependency='true', the
feature resolver was skipping these bundles, causing
NoClassDefFoundError: reactor/netty/http/client/HttpClient at runtime.
…storage-blob features

The previous Import-Package pattern (io.netty*;version="[4.1,5)") made all
io.netty sub-packages mandatory, causing OSGi resolution failures for
platform-specific packages like kqueue, epoll, io_uring, and haproxy codec.
Using *;resolution:=optional lets the resolver wire to the netty bundles
already declared in the feature without failing on missing optional transports.
The previous change (7def8e0) made all imports optional (*;resolution:=optional)
which prevented azure-core-http-netty from resolving reactor.netty.http.client.HttpClient
at runtime. This fix makes only platform-specific packages optional (kqueue, uring,
haproxy, http3, quic) while keeping io.netty and reactor imports mandatory so the
OSGi resolver properly wires the bundles.

Affected features: camel-azure-eventhubs, camel-azure-storage-blob, camel-stitch.
The wrap protocol with overwrite=merge and BND wildcard Import-Package
directives was preventing reactor-netty-http from resolving properly,
causing NoClassDefFoundError for reactor.netty.http.client.HttpClient
in the azure-eventhubs integration test. Use direct bundle references
instead, consistent with the camel-azure-storage-queue feature.
…ility

reactor-netty 1.3.3 requires Netty 4.2+. In Netty 4.2, netty-codec was
split into netty-codec-base and netty-codec-compression, and the incubator
modules (quic, io_uring) graduated to the main Netty project.
reactor-netty-core 1.3.3 mandatorily imports org.jspecify.annotations,
so the jspecify bundle must be present for runtime OSGi resolution.
reactor-netty-http 1.3.3 has mandatory Import-Package entries for
io.netty.handler.codec.http3 and io.netty.handler.codec.quic, but
these packages are not available in the azure Karaf features. This
prevents the bundle from resolving, causing azure-core-http-netty
to fail with ClassNotFoundException on reactor.netty.http.client.HttpClient.
…features

Instead of wrapping reactor-netty-http to make http3 and quic imports
optional, use the unwrapped bundle and provide the actual
netty-codec-http3 and netty-codec-classes-quic dependencies, matching
the approach used by camel-stitch.

This fixes the ClassNotFoundException for reactor.netty.http.client.HttpClient
in the azure-core-http-netty bundle caused by the wrap protocol not
correctly preserving Export-Package headers.
…tures

The plain reactor-netty-http bundle from 1.3.3 has mandatory imports on
io.netty.handler.codec.http3 and io.netty.handler.codec.quic. Providing
the actual http3/quic bundles doesn't work because netty-codec-http3
itself requires javax.annotation (JSR-305) which isn't in these features.

Since the Azure features don't use HTTP/3 or QUIC, wrapping
reactor-netty-http to make those imports optional is the correct fix.
The Karaf feature resolver skips wrapped dependency bundles whose exports
it cannot determine at resolution time. This caused reactor-netty-core
and reactor-netty-http to not be installed, leading to
ClassNotFoundException for reactor.netty.http.client.HttpClient at
runtime and failing the camel-azure-eventhubs integration test.
The wrapped reactor-netty-http bundle imports io.micrometer.common which
is not available in the Karaf runtime. Mark io.micrometer imports as
optional to allow the bundle to resolve without micrometer present.
jbonofre and others added 9 commits March 29, 2026 19:25
…ures

Instead of wrapping reactor-netty-http to make http3/quic imports
optional, provide the actual netty-codec-http3 and
netty-codec-classes-quic bundles so the original OSGi manifest
resolves correctly. This fixes ClassNotFoundException for
reactor.netty.http.client.HttpClient in azure-core-http-netty.
The Karaf feature resolver skips dependency bundles whose imports it
cannot determine are needed at resolution time. Since azure-core-http-netty
is a wrapped bundle, the resolver cannot see its imports and therefore
does not install reactor-netty-http and the netty codec bundles.

Removing dependency='true' makes these primary bundles that are always
installed with the feature, ensuring reactor-netty-http and the required
netty bundles are available at runtime.
The Karaf feature resolver cannot see imports of wrapped bundles at
resolution time, so it skips installing reactor-netty-http and other
dependency bundles. Adding explicit Import-Package for
reactor.netty.http.client and other key packages to the
azure-core-http-netty wrap directive makes these imports visible to
the resolver, which then correctly pulls in reactor-netty-http and
its transitive dependencies.

Also restores dependency='true' on netty/reactor bundles since they
will now be correctly resolved through the import chain.
Re-apply stability fixes that were lost in the revert (621e78c):
- Upgrade emulator to 2.2.0 to avoid SIGSEGV on GitHub Actions
- Add explicit Event Hub entity config (eh1)
- Use log-based wait strategy with 3-minute startup timeout
- Use acceptLicense() API instead of env var
- Increase mock assertion wait time to 60s
The EventHubs emulator container consistently fails to start within
the timeout on GitHub Actions runners.
Upgrade Azurite to 3.35.0 across all Azure itests for consistency
(storage-queue was using unpinned 'latest'). Simplify the EventHubs
emulator container configuration by relying on defaults and re-enable
the previously ignored test.
reactor-netty-http has mandatory imports for io.netty.handler.codec.http3,
io.netty.handler.codec.quic, and io.netty.handler.codec.haproxy. When all
bundles in a feature are marked dependency='true', the Karaf resolver may
fail to transitively resolve them, causing NoClassDefFoundError for
reactor/netty/http/client/HttpClient at runtime.

Apply the same wrap directive already used in camel-azure-storage-queue to
camel-azure-eventhubs, camel-azure-storage-blob, and camel-stitch features.
@jbonofre
Copy link
Copy Markdown
Member

jbonofre commented Apr 1, 2026

Cache update on #691

@jbonofre jbonofre closed this Apr 1, 2026
@f2par0 f2par0 deleted the fdeparscau/4.18.0 branch April 1, 2026 14:09
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.

2 participants