mxh82 opened a new issue, #3907:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/issues/3907

   ### Describe the bug
   
   Builds fail with a BuildException NoSuchMethodError when implementing JDBC 
Postgres persistence to an existing Java, Kafka Streams, Kogito, Quarkus 
project. 
   
   Kogito generates protobuf files and marshallers for persisting variables. 
The Kogito marshallers are based on the ProtoStream subproject of Inifispan. 
Thus, the quarkus-persistence-jdbc dependency pulls in the 
org.inifinispan.protostream:5.0.8.Final library. 
   
   It appears that the codegen marshaller is calling 
Descriptor.getOption(String) with a parameter. This method does not take any 
parameters.
   
   ### Expected behavior
   
   The application should build, run, and persist data to the PostgreSQL 
process_instances & correlation_instances tables, which have already been 
created. 
   
   ### Actual behavior
   
   `java.lang.RuntimeException: java.lang.RuntimeException: 
io.quarkus.builder.BuildException: Build failure: Build failed due to errors
       [error]: Build step 
org.kie.kogito.quarkus.processes.deployment.ProcessesAssetsProcessor#postGenerationProcessing
 threw an exception: java.lang.NoSuchMethodError: 
'org.infinispan.protostream.descriptors.Option 
org.infinispan.protostream.descriptors.Descriptor.getOption(java.lang.String)'
       at 
org.kie.kogito.codegen.process.persistence.marshaller.AbstractMarshallerGenerator.packageFromOption(AbstractMarshallerGenerator.java:320)
       at 
org.kie.kogito.codegen.process.persistence.marshaller.AbstractMarshallerGenerator.lambda$generate$1(AbstractMarshallerGenerator.java:114)
       at java.base/java.util.function.Predicate.lambda$and$0(Predicate.java:69)
       at 
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
       at 
java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720)
       at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
       at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
       at 
java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
       at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
       at 
java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
       at 
org.kie.kogito.codegen.process.persistence.marshaller.AbstractMarshallerGenerator.generate(AbstractMarshallerGenerator.java:130)
       at 
org.kie.kogito.codegen.process.persistence.marshaller.AbstractMarshallerGenerator.generate(AbstractMarshallerGenerator.java:100)
       at 
org.kie.kogito.codegen.process.persistence.PersistenceGenerator.generateProtoMarshaller(PersistenceGenerator.java:157)
       at 
org.kie.kogito.codegen.process.persistence.PersistenceGenerator.internalGenerate(PersistenceGenerator.java:127)
       at 
org.kie.kogito.codegen.core.AbstractGenerator.generate(AbstractGenerator.java:72)
       at 
org.kie.kogito.quarkus.workflow.deployment.WorkflowProcessor.getGeneratedPersistenceFiles(WorkflowProcessor.java:238)
       at 
org.kie.kogito.quarkus.workflow.deployment.WorkflowProcessor.generatePersistenceInfo(WorkflowProcessor.java:214)
       at 
org.kie.kogito.quarkus.workflow.deployment.WorkflowProcessor.postGenerationProcessing(WorkflowProcessor.java:184)
       at 
java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
       at 
io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
       at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
       at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
       at 
org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
       at 
org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
       at 
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
       at java.base/java.lang.Thread.run(Thread.java:833)
       at org.jboss.threads.JBossThread.run(JBossThread.java:483) `
   
   ### How to Reproduce?
   
   Use the application.properties entries and pom.xml list below, and run mvn 
clean compile quarkus:dev
   
   `kogito.persistence.type=jdbc
   quarkus.datasource.username=kogito-user
   quarkus.datasource.password=kogito-pass
   quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/kogito
   quarkus.flyway.migrade-at-start=true
   quarkus.datasource.db-kind=postgresql`
   
   `<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.company</groupId>
        <artifactId>state-machine-svc</artifactId>
        <version>0.40.0-SNAPSHOT</version>
   
        <properties>
                <compiler-plugin.version>3.8.1</compiler-plugin.version>
                <lombok.version>1.18.34</lombok.version>
                
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
                
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
                <quarkus.platform.version>3.15.1</quarkus.platform.version>
                <quarkus-plugin.version>3.15.1</quarkus-plugin.version>
                <java.version>17</java.version>
                <maven.compiler.parameters>true</maven.compiler.parameters>
                <maven.compiler.source>${java.version}</maven.compiler.source>
                <maven.compiler.target>${java.version}</maven.compiler.target>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
                <surefire-plugin.version>3.0.0-M7</surefire-plugin.version>
                <kie.version>10.0.0</kie.version>
                <commons.text.version>1.12.0</commons.text.version>
                <smallrye.version>4.20.0</smallrye.version>
                
<sonar.coverage.jacoco.xmlReportPaths>${project.build.directory}/jacoco-report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
                
<sonar.jacoco.reportPath>${project.build.directory}/jacoco-quarkus.exec</sonar.jacoco.reportPath>
        </properties>
   
        <dependencyManagement>
                <dependencies>
                        <dependency>
                                <groupId>${quarkus.platform.group-id}</groupId>
                                
<artifactId>${quarkus.platform.artifact-id}</artifactId>
                                <version>${quarkus.platform.version}</version>
                                <type>pom</type>
                                <scope>import</scope>
                        </dependency>
                </dependencies>
        </dependencyManagement>
   
        <dependencies>
                <dependency>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                        <scope>provided</scope>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-resteasy</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-resteasy-jackson</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-smallrye-openapi</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-smallrye-health</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-resteasy-client</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-resteasy-client-jackson</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-kafka-streams</artifactId>
                </dependency>
                <!-- <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-messaging-kafka</artifactId>
                </dependency> -->
                <dependency>
                        <groupId>org.kie</groupId>
                        <artifactId>kie-addons-quarkus-messaging</artifactId>
                <version>${kie.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.kie</groupId>
                        
<artifactId>kie-addons-quarkus-process-management</artifactId>
                 <version>${kie.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.kie</groupId>
                        
<artifactId>kogito-addons-quarkus-common-deployment</artifactId>
                        <version>${kie.version}</version>
                </dependency>
                <!-- <dependency>
                        <groupId>org.kie.kogito</groupId>
                        <artifactId>kogito-quarkus</artifactId>
                </dependency> -->
                <dependency>
                        <groupId>org.kie</groupId>
                        
<artifactId>kie-addons-quarkus-persistence-jdbc</artifactId>
                        <version>${kie.version}</version>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-jdbc-postgresql</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-agroal</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.jbpm</groupId>
                        <artifactId>jbpm-quarkus</artifactId>
                        <version>${kie.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.commons</groupId>
                        <artifactId>commons-text</artifactId>
                        <version>${commons.text.version}</version>
                </dependency>
                <dependency>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                        <version>33.2.1-jre</version>
                </dependency>
                <dependency>
                        <groupId>com.google.code.gson</groupId>
                        <artifactId>gson</artifactId>
                        <version>2.11.0</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-clients</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-junit5</artifactId>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>org.mockito</groupId>
                        <artifactId>mockito-junit-jupiter</artifactId>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        <artifactId>quarkus-junit5-mockito</artifactId>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>io.rest-assured</groupId>
                        <artifactId>rest-assured</artifactId>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>io.quarkus</groupId>
                        
<artifactId>quarkus-smallrye-reactive-messaging-kafka</artifactId>
                </dependency>
                <dependency>
                        <groupId>io.smallrye.reactive</groupId>
                        
<artifactId>smallrye-reactive-messaging-in-memory</artifactId>
                        <version>${smallrye.version}</version>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-streams-test-utils</artifactId>
                        <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.awaitility</groupId>
                    <artifactId>awaitility</artifactId>
                    <scope>test</scope>
                </dependency>
                <dependency>
               <groupId>io.cloudevents</groupId>
               <artifactId>cloudevents-core</artifactId>
               <version>2.5.0</version>
                <scope>test</scope>
        </dependency>
                <dependency>
                        <groupId>org.kie.kogito</groupId>
                        <artifactId>kogito-quarkus-test-utils</artifactId>
                        <version>${kie.version}</version>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>org.jboss.logmanager</groupId>
                        <artifactId>log4j2-jboss-logmanager</artifactId>
                </dependency>
        </dependencies>
        <build>
                <finalName>${project.artifactId}</finalName>
                <plugins>
             <plugin>
                 <groupId>io.quarkus</groupId>
                 <artifactId>quarkus-maven-plugin</artifactId>
                 <version>${quarkus-plugin.version}</version>
                 <extensions>true</extensions>
                 <executions>
                     <execution>
                         <goals>
                             <goal>build</goal>
                             <goal>generate-code</goal>
                             <goal>generate-code-tests</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
                </plugins>
        </build>
     <profiles>
        <profile>
                <id>native</id>
                <activation>
                <property>
                        <name>native</name>
                </property>
                </activation>
                <build>
                <plugins>
                        <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>${surefire-plugin.version}</version>
                        <executions>
                                <execution>
                                <goals>
                                        <goal>integration-test</goal>
                                        <goal>verify</goal>
                                </goals>
                                <configuration>
                                        <systemPropertyVariables>
                                        <native.image.path>
                                                
${project.build.directory}/${project.build.finalName}-runner
                                        </native.image.path>
                                        </systemPropertyVariables>
                                </configuration>
                                </execution>
                        </executions>
                        </plugin>
                </plugins>
                </build>
                <properties>
                <quarkus.package.type>native</quarkus.package.type>
                </properties>
        </profile>
     </profiles>
   </project>
   `
   
   ### Output of `uname -a` or `ver`
   
   Linux U-28V5CKGDPPKAD 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 
07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
   
   ### Output of `java -version`
   
   openjdk version "21.0.6" 2025-01-21 LTS OpenJDK Runtime Environment 
Temurin-21.0.6+7 (build 21.0.6+7-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.6+7 
(build 21.0.6+7-LTS, mixed mode, sharing)
   
   ### GraalVM version (if different from Java)
   
   _No response_
   
   ### Kogito version or git rev (or at least Quarkus version if you are using 
Kogito via Quarkus platform BOM)
   
   kie version: 10.0.0   Quarkus version: 3.15.1
   
   ### Build tool (ie. output of `mvnw --version` or `gradlew --version`)
   
   maven
   
   ### Additional information
   
   I was able to get rid of the BuildException NoSuchMethodError by using the 
non-quarkus version of the persistence-jdbc dependency:
   `<dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-addons-persistence-jdbc</artifactId>
        <version>${kie.version}</version>
   </dependency>
   `
   
   The application builds, runs, and the JUnits pass, but persistence doesn't 
work when using this dependency.
   The process_instances & correlation_instances tables are empty after 
supplying data to the application that should be persisted.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to