Skip to content

Conversation

@carlesarnal
Copy link
Contributor

@carlesarnal carlesarnal commented Dec 4, 2025

Summary

  • Upgrade Apicurio Registry from 2.6.x to 3.1.2
  • Update default dev service image to 3.1.2
  • Migrate extension code to use v3 APIs (RegistryClientFacadeFactory instead of AbstractSchemaResolver)
  • Add log level configuration to suppress verbose INFO messages from Apicurio client
  • Fix native compilation by removing non-existent strategy classes from reflection config
  • Update integration tests to work with v3 libraries while maintaining v2 compatibility mode
  • Added a migration process document with the required changes for existing applications

Breaking Changes

Schema ID format changed from 8-byte (v2) to 4-byte (v3). Users migrating from v2 must add:
mp.messaging.connector.smallrye-kafka.apicurio.registry.id-handler=io.apicurio.registry.serde.Legacy8ByteIdHandler

Related Issues

Upgrade apicurio registry v3 libraries
@quarkus-bot quarkus-bot bot added area/dependencies Pull requests that update a dependency file area/documentation area/kafka labels Dec 4, 2025
@quarkus-bot

This comment has been minimized.

@quarkus-bot

This comment has been minimized.

@carlesarnal carlesarnal force-pushed the upgrade-apicurio-registry-to-3 branch from ef7c269 to 18ad57f Compare December 4, 2025 13:19
@quarkus-bot

This comment has been minimized.

@github-actions
Copy link

github-actions bot commented Dec 4, 2025

🎊 PR Preview d145f49 has been successfully built and deployed to https://quarkus-pr-main-51401-preview.surge.sh/version/main/guides/

  • Images of blog posts older than 3 months are not available.
  • Newsletters older than 3 months are not available.

@quarkus-bot
Copy link

quarkus-bot bot commented Dec 4, 2025

Status for workflow Quarkus Documentation CI

This is the status report for running Quarkus Documentation CI on commit 39c2799.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

Warning

There are other workflow runs running, you probably need to wait for their status before merging.

@quarkus-bot
Copy link

quarkus-bot bot commented Dec 4, 2025

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 39c2799.

Failing Jobs

Status Name Step Failures Logs Raw logs Build scan
JVM Tests - JDK 17 Build Failures Logs Raw logs 🚧
JVM Tests - JDK 21 Build Failures Logs Raw logs 🚧
✔️ JVM Tests - JDK 21 Semeru Logs Raw logs 🚧
✔️ JVM Tests - JDK 25 Logs Raw logs 🚧
Native Tests - Messaging1 Build Failures Logs Raw logs 🔍
JVM Integration Tests - JDK 17 Build Failures Logs Raw logs 🚧
✔️ JVM Integration Tests - JDK 17 Windows Logs Raw logs 🚧
JVM Integration Tests - JDK 21 Build Failures Logs Raw logs 🚧
JVM Integration Tests - JDK 21 Semeru Build Failures Logs Raw logs 🚧
JVM Integration Tests - JDK 25 Build Failures Logs Raw logs 🚧

Full information is available in the Build summary check run.
You can consult the Develocity build scans.

Failures

⚙️ JVM Tests - JDK 17 #

- Failing: devtools/gradle/gradle-application-plugin 

📦 devtools/gradle/gradle-application-plugin

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.2:exec (gradle) on project io.quarkus.gradle.plugin: Command execution failed.


⚙️ JVM Tests - JDK 21 #

- Failing: devtools/gradle/gradle-application-plugin 

📦 devtools/gradle/gradle-application-plugin

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.2:exec (gradle) on project io.quarkus.gradle.plugin: Command execution failed.


⚙️ Native Tests - Messaging1 #

- Failing: integration-tests/kafka-avro-apicurio2 integration-tests/kafka-json-schema-apicurio2 

📦 integration-tests/kafka-avro-apicurio2

Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project quarkus-integration-test-kafka-avro-apicurio2: Failed to build quarkus application

📦 integration-tests/kafka-json-schema-apicurio2

Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project quarkus-integration-test-kafka-json-schema-apicurio2: Failed to build quarkus application


⚙️ JVM Integration Tests - JDK 17 #

- Failing: integration-tests/kafka-json-schema-apicurio2 

📦 integration-tests/kafka-json-schema-apicurio2

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaConsumer - History - More details - Source on GitHub

java.lang.RuntimeException: 
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "details" (class io.quarkus.it.kafka.jsonschema.Pet), not marked as ignorable (2 known properties: "name", "color"])
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 13] (through reference chain: io.quarkus.it.kafka.jsonschema.Pet["details"])
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.java:30)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.ObjectMapping.parseWithJackson2(ObjectMapping.groovy:254)

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaProducer - History - More details - Source on GitHub

java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.ObjectNode cannot be cast to class io.quarkus.it.kafka.jsonschema.Pet (com.fasterxml.jackson.databind.node.ObjectNode is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @5bd3ca3c; io.quarkus.it.kafka.jsonschema.Pet is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @7c013560)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testJsonSchemaProducer(KafkaJsonSchemaTestBase.java:67)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testApicurioJsonSchemaProducer(KafkaJsonSchemaTestBase.java:36)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:995)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:843)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(Arr...

⚙️ JVM Integration Tests - JDK 21 #

- Failing: integration-tests/kafka-json-schema-apicurio2 

📦 integration-tests/kafka-json-schema-apicurio2

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaConsumer - History - More details - Source on GitHub

java.lang.RuntimeException: 
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "details" (class io.quarkus.it.kafka.jsonschema.Pet), not marked as ignorable (2 known properties: "name", "color"])
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 13] (through reference chain: io.quarkus.it.kafka.jsonschema.Pet["details"])
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.java:30)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.ObjectMapping.parseWithJackson2(ObjectMapping.groovy:254)

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaProducer - History - More details - Source on GitHub

java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.ObjectNode cannot be cast to class io.quarkus.it.kafka.jsonschema.Pet (com.fasterxml.jackson.databind.node.ObjectNode is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @534d0e20; io.quarkus.it.kafka.jsonschema.Pet is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @6dbdbb69)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testJsonSchemaProducer(KafkaJsonSchemaTestBase.java:67)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testApicurioJsonSchemaProducer(KafkaJsonSchemaTestBase.java:36)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:995)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:843)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(Arr...

⚙️ JVM Integration Tests - JDK 21 Semeru #

- Failing: integration-tests/kafka-json-schema-apicurio2 

📦 integration-tests/kafka-json-schema-apicurio2

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaConsumer - History - More details - Source on GitHub

java.lang.RuntimeException: 
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "details" (class io.quarkus.it.kafka.jsonschema.Pet), not marked as ignorable (2 known properties: "name", "color"])
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 13] (through reference chain: io.quarkus.it.kafka.jsonschema.Pet["details"])
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.java:30)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.ObjectMapping.parseWithJackson2(ObjectMapping.groovy:254)

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaProducer - History - More details - Source on GitHub

java.lang.ClassCastException: com.fasterxml.jackson.databind.node.ObjectNode incompatible with io.quarkus.it.kafka.jsonschema.Pet
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testJsonSchemaProducer(KafkaJsonSchemaTestBase.java:67)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testApicurioJsonSchemaProducer(KafkaJsonSchemaTestBase.java:36)
	at java.base/java.lang.reflect.Method.invoke(Method.java:586)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:995)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:843)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

⚙️ JVM Integration Tests - JDK 25 #

- Failing: integration-tests/kafka-json-schema-apicurio2 

📦 integration-tests/kafka-json-schema-apicurio2

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaConsumer - History - More details - Source on GitHub

java.lang.RuntimeException: 
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "details" (class io.quarkus.it.kafka.jsonschema.Pet), not marked as ignorable (2 known properties: "name", "color"])
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 13] (through reference chain: io.quarkus.it.kafka.jsonschema.Pet["details"])
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.java:30)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.ObjectMapping.parseWithJackson2(ObjectMapping.groovy:254)

io.quarkus.it.kafka.KafkaJsonSchemaTest.testApicurioJsonSchemaProducer - History - More details - Source on GitHub

java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.ObjectNode cannot be cast to class io.quarkus.it.kafka.jsonschema.Pet (com.fasterxml.jackson.databind.node.ObjectNode is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @2e40fdbd; io.quarkus.it.kafka.jsonschema.Pet is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @6dd1f239)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testJsonSchemaProducer(KafkaJsonSchemaTestBase.java:67)
	at io.quarkus.it.kafka.KafkaJsonSchemaTestBase.testApicurioJsonSchemaProducer(KafkaJsonSchemaTestBase.java:36)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:995)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:843)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
	at java.base/java.util.ArrayList.forEach(Arr...

Flaky tests - Develocity

⚙️ JVM Tests - JDK 21

📦 extensions/smallrye-reactive-messaging/deployment

io.quarkus.smallrye.reactivemessaging.hotreload.ConnectorChangeTest.testUpdatingConnector - History

  • Expecting actual: ["-3","-4","-6","-7","-8","-9","-10","-11"] to start with: ["-3", "-4", "-5", "-6"] - java.lang.AssertionError
java.lang.AssertionError: 

Expecting actual:
  ["-3","-4","-6","-7","-8","-9","-10","-11"]
to start with:
  ["-3", "-4", "-5", "-6"]

	at io.quarkus.smallrye.reactivemessaging.hotreload.ConnectorChangeTest.testUpdatingConnector(ConnectorChangeTest.java:36)
  • Expecting actual: ["-4","-5","-6","-7","-8","-9","-10","-11"] to start with: ["-3", "-4", "-5", "-6"] - java.lang.AssertionError
java.lang.AssertionError: 

Expecting actual:
  ["-4","-5","-6","-7","-8","-9","-10","-11"]
to start with:
  ["-3", "-4", "-5", "-6"]

	at io.quarkus.smallrye.reactivemessaging.hotreload.ConnectorChangeTest.testUpdatingConnector(ConnectorChangeTest.java:36)
  • Expecting actual: ["-4","-5","-6","-7","-8","-9","-10","-11"] to start with: ["-3", "-4", "-5", "-6"] - java.lang.AssertionError
java.lang.AssertionError: 

Expecting actual:
  ["-4","-5","-6","-7","-8","-9","-10","-11"]
to start with:
  ["-3", "-4", "-5", "-6"]

	at io.quarkus.smallrye.reactivemessaging.hotreload.ConnectorChangeTest.testUpdatingConnector(ConnectorChangeTest.java:36)

⚙️ MicroProfile TCKs Tests

📦 tcks/microprofile-lra

org.eclipse.microprofile.lra.tck.TckRecoveryTests.testCancelWhenParticipantIsUnavailable - History

  • Expecting the metric Compensated callback was called Expected: a value equal to or greater than <1> but: <0> was less than <1> - java.lang.AssertionError
java.lang.AssertionError: 
Expecting the metric Compensated callback was called
Expected: a value equal to or greater than <1>
     but: <0> was less than <1>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.eclipse.microprofile.lra.tck.TckRecoveryTests.assertMetricCallbackCalled(TckRecoveryTests.java:210)
	at org.eclipse.microprofile.lra.tck.TckRecoveryTests.testCancelWhenParticipantIsUnavailable(TckRecoveryTests.java:195)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

⚙️ JVM Integration Tests - JDK 17

📦 integration-tests/oidc-wiremock

io.quarkus.it.keycloak.CodeFlowAuthorizationTest.testCodeFlowUserInfoCachedInIdToken - History

  • expected: <true> but was: <false> - org.opentest4j.AssertionFailedError
org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
	at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
	at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
	at org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
	at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
	at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
	at org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:183)
	at io.quarkus.it.keycloak.CodeFlowAuthorizationTest.testCodeFlowUserInfoCachedInIdToken(CodeFlowAuthorizationTest.java:431)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade Apicurio Registry from 2.x to 3.x

2 participants