DMN build error with kogito 1.19.0.Final

243 views
Skip to first unread message

Marco Iannelli

unread,
Apr 11, 2022, 9:33:55 AM4/11/22
to Kogito development mailing list

Ciao All,

I’m contacting because I’m trying to update our project to use the latest kogito version 1.19.0.Final but I’m facing with a weird exception (cfr the one below)

 

the mvn quarkus:dev works fine, also the uber jar is being generated properly, but suddenly the below error is coming

 I’m using mvn 3.6.3 and openjdk 11.0.4 and the following properties

         <!-- kogito -->

        <version.org.kie.kogito>1.19.0.Final</version.org.kie.kogito>

         <!-- drools version used in kogito -->

        <version.org.drools>8.19.0.Beta</version.org.drools>

         <!-- quarkus -->

        <quarkus-plugin.version>2.7.3.Final</quarkus-plugin.version>

        <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>

        <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>

        <quarkus.platform.version>2.7.3.Final</quarkus.platform.version>

 

 

And this is the build plugin used to build the jar

<build>

        <plugins>

<plugin>

                <groupId>io.quarkus</groupId>

                <artifactId>quarkus-maven-plugin</artifactId>

                <version>${quarkus-plugin.version}</version>

                <executions>

                    <execution>

                        <goals>

                            <goal>build</goal>

                        </goals>

                    </execution>

                </executions>

            </plugin>

        </plugins>

    </build>

 

 

 

last time when we updated to kogito 1.15.0.Final we didn’t find any issue;

 

 

PS C:\Apps\drools\drools-demo-rest-quarkus> mvn clean install -DskipTests=true -DoutputFile=output

[INFO] Scanning for projects...

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Build Order:

[INFO]

[INFO] Drools :: Demo :: Rest Quarkus                                     [pom]

[INFO] Drools :: Demo :: Rest Quarkus DMN                                 [jar]

[INFO]

[INFO] -----------< com.csg.intsw.drools:drools-demo-rest-quarkus >------------

[INFO] Building Drools :: Demo :: Rest Quarkus 1.19.0-SNAPSHOT            [1/2]

[INFO] --------------------------------[ pom ]---------------------------------

[INFO]

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ drools-demo-rest-quarkus ---

[INFO]

[INFO] --- quarkus-maven-plugin:2.7.3.Final:build (default) @ drools-demo-rest-quarkus ---

[INFO] Type of the artifact is POM, skipping build goal

[INFO]

[INFO] --- maven-install-plugin:2.4:install (default-install) @ drools-demo-rest-quarkus ---

[INFO] Installing C:\Apps\drools\drools-demo-rest-quarkus\pom.xml to C:\data\dev\.m2\repository\com\csg\intsw\drools\drools-demo-rest-quarkus\1.19.0-SNAPSHOT\drools-demo-rest-quarkus-1.19.0-SNAPSHOT.pom

[INFO]

[INFO] ---------------< com.csg.intsw.drools:rest-quarkus-dmn >----------------

[INFO] Building Drools :: Demo :: Rest Quarkus DMN 1.19.0-SNAPSHOT        [2/2]

[INFO] --------------------------------[ jar ]---------------------------------

[INFO]

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ rest-quarkus-dmn ---

[INFO] Deleting C:\Apps\drools\drools-demo-rest-quarkus\rest-quarkus-dmn\target

[INFO]

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rest-quarkus-dmn ---

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] Copying 10 resources

[INFO]

[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ rest-quarkus-dmn ---

[INFO] Changes detected - recompiling the module!

[INFO] Compiling 6 source files to C:\Apps\drools\drools-demo-rest-quarkus\rest-quarkus-dmn\target\classes

[INFO]

[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ rest-quarkus-dmn ---

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] Copying 1 resource

[INFO]

[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ rest-quarkus-dmn ---

[INFO] Changes detected - recompiling the module!

[INFO] Compiling 3 source files to C:\Apps\drools\drools-demo-rest-quarkus\rest-quarkus-dmn\target\test-classes

[INFO]

[INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ rest-quarkus-dmn ---

[INFO] Tests are skipped.

[INFO]

[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ rest-quarkus-dmn ---

[INFO] Building jar: C:\Apps\drools\drools-demo-rest-quarkus\rest-quarkus-dmn\target\rest-quarkus-dmn-1.19.0-SNAPSHOT.jar

[INFO]

[INFO] --- quarkus-maven-plugin:2.7.3.Final:build (default) @ rest-quarkus-dmn ---

[INFO] Performed addonsConfig discovery, found: AddonsConfig{usePersistence=false, useTracing=false, useMonitoring=false, usePrometheusMonitoring=false, useCloudEvents=false, useExplainability=false, useProcessSVG=false, useEventDrivenDecisions=false, useEventDrivenRules=false}

[INFO] Generator discovery performed, found [decisions]

[INFO] Initializing DMN DT Validator...

[INFO] DMN DT Validator initialized.

[INFO] Analysing decision tables in DMN Model 'Traffic Violation' ...

[INFO]  analysis for decision table 'Fine':

[WARNING]   Columns: [Violation.Type] relate to FEEL string values which can be enumerated for the inputs; Gap analysis skipped.

[WARNING] [io.quarkus.resteasy.common.deployment.ResteasyCommonProcessor] Directly injecting a @ConfigProperty into a JAX-RS provider may lead to unexpected results. To ensure proper results, please change the type of the field to javax.enterprise.inject.Instance<java.lang.String>. Offending field is 'svcMavenVersion' of class 'com.csg.intsw.drools.lstnr.DecisionServiceContainerResponseFilter'

[WARNING] [io.quarkus.resteasy.common.deployment.ResteasyCommonProcessor] Directly injecting a @ConfigProperty into a JAX-RS provider may lead to unexpected results. To ensure proper results, please change the type of the field to javax.enterprise.inject.Instance<java.lang.String>. Offending field is 'svcGitCommit' of class 'com.csg.intsw.drools.lstnr.DecisionServiceContainerResponseFilter'

[WARNING] [io.quarkus.resteasy.common.deployment.ResteasyCommonProcessor] Directly injecting a @ConfigProperty into a JAX-RS provider may lead to unexpected results. To ensure proper results, please change the type of the field to javax.enterprise.inject.Instance<java.lang.String>. Offending field is 'svcBuildNumber' of class 'com.csg.intsw.drools.lstnr.DecisionServiceContainerResponseFilter'

[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building uber jar: C:\Apps\drools\drools-demo-rest-quarkus\rest-quarkus-dmn\target\rest-quarkus-dmn-1.19.0-SNAPSHOT-runner.jar

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary for Drools :: Demo :: Rest Quarkus 1.19.0-SNAPSHOT:

[INFO]

[INFO] Drools :: Demo :: Rest Quarkus ..................... SUCCESS [  4.876 s]

[INFO] Drools :: Demo :: Rest Quarkus DMN ................. FAILURE [01:13 min]

[INFO] ------------------------------------------------------------------------

[INFO] BUILD FAILURE

[INFO] ------------------------------------------------------------------------

[INFO] Total time:  01:18 min

[INFO] Finished at: 2022-04-11T14:34:21+02:00

[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:2.7.3.Final:build (default) on project rest-quarkus-dmn: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors

[ERROR]         [error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.lang.IllegalStateException: java.nio.file.NoSuchFileException: /META-INF/resources

[ERROR]         at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:891)

[ERROR]         at io.quarkus.builder.BuildContext.run(BuildContext.java:277)

[ERROR]         at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)

[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)

[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)

[ERROR]         at java.base/java.lang.Thread.run(Thread.java:829)

[ERROR]         at org.jboss.threads.JBossThread.run(JBossThread.java:501)

[ERROR] Caused by: java.nio.file.NoSuchFileException: /META-INF/resources

[ERROR]         at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkParents(ZipFileSystem.java:893)

[ERROR]         at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newOutputStream(ZipFileSystemProvider.java:282)

[ERROR]         at java.base/java.nio.file.Files.newOutputStream(Files.java:220)

[ERROR]         at io.quarkus.deployment.pkg.steps.JarResultBuildStep.copyCommonContent(JarResultBuildStep.java:1251)

[ERROR]         at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildUberJar0(JarResultBuildStep.java:386)

[ERROR]         at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildUberJar(JarResultBuildStep.java:270)

[ERROR]         at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:208)

[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

[ERROR]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

[ERROR]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)

[ERROR]         at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:882)

[ERROR]         ... 6 more

[ERROR] -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions, please read the following articles:

[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

[ERROR]

[ERROR] After correcting the problems, you can resume the build with the command

[ERROR]   mvn <args> -rf :rest-quarkus-dmn

Matteo Mortari

unread,
Apr 12, 2022, 6:13:39 PM4/12/22
to Kogito development mailing list
Hi Marco,
this issue seems more related to the Kogito platform per-se, than anything specific to DMN.

Thank you for the pointers but unfortunately it's not enough data to be able to reproduce?
For example, can you try on your end by using this generator:
and report back if it executes on your end as intended?

The reason I'm asking is that specifying the kogito version manually shouldn't be needed.
That's my first suspect from the snippets of the pom, which might be causing troubles depending on the actual content.

I'm also quite positive for Quarkus 2.7.x you should use Maven 3.8.1+ (I am using 3.8.4 fine) which is mandatory in some specific cases; not sure it's impacting on your use-case, but still better to align with the Quarkus platform requirements

If anything else fails, would it be possible for you to share a reproducer?
eg: share the code and an example DMN model, instead of the real DMN models with your business logic ?

Hope this helps, let us know!
MM

--
You received this message because you are subscribed to the Google Groups "Kogito development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kogito-developm...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kogito-development/385b8756-8fce-4638-bf30-24e955033481n%40googlegroups.com.


--

Marco Iannelli

unread,
Apr 13, 2022, 4:44:17 PM4/13/22
to Kogito development mailing list
Hi Matteo,
thank you for your suggestion, it was very helpful; .
I was able to reproduce the issue even with the example downloaded from the quarkus website:
the issue is related to  quarkus.package.type=uber-jar in my application.properties

it seems that since Kogito 1.16 this option doesn't work anymore.
after removing the property it works fine (I have to change the dockerization part though).

do you know if it's a known limitation with quarkus/kogito related the uber jar?

Once more, thank you for your help because it helped to fix my problem and I'm no longer blocked.

BR
Marco

Edoardo Vacchi

unread,
Apr 14, 2022, 4:52:33 AM4/14/22
to Kogito development mailing list
On Wed, Apr 13, 2022 at 10:44 PM Marco Iannelli <m.iann...@gmail.com> wrote:
Hi Matteo,
thank you for your suggestion, it was very helpful; .
I was able to reproduce the issue even with the example downloaded from the quarkus website:
the issue is related to  quarkus.package.type=uber-jar in my application.properties

it seems that since Kogito 1.16 this option doesn't work anymore.
after removing the property it works fine (I have to change the dockerization part though).

do you know if it's a known limitation with quarkus/kogito related the uber jar?

I do know that there were changes in the uber jar packaging strategy within _Quarkus_ *in the past*. 
Are you 100% sure that the docker container really has copied over all of the required files?
For what it's worth, if you do create a container, building a uberjar is redundant.

Cheers,
e.v.
 

Matteo Mortari

unread,
May 13, 2022, 7:31:16 AM5/13/22
to Kogito development mailing list, m.iann...@gmail.com
Marco,
one thing I wanted to mention, but I forgot (sorry), beyond the previous suggestions from me and Edoardo,

FWIW, to build Docker images with Quarkus (and Kogito based on Quarkus) I find particularly easy to use the JIB Quarkus extension: https://quarkus.io/guides/container-image#jib

I prefer to mention this explicitly, and I find it a very convenient way to produce Docker images locally and/or to push to registries such as Docker Hub, Quay, etc.

I thought it was worth mentioning; if you never tried it, imho it is really worth checking it out !

Hope this helps,
Ciao,
MM

Marco Iannelli

unread,
May 13, 2022, 9:49:31 AM5/13/22
to Kogito development mailing list
thank you Matteo, I was not aware of it and we'll definitely try it out.
Saluti
Marco

Marco Iannelli

unread,
Jun 22, 2022, 3:46:02 AM6/22/22
to Kogito development mailing list
we tried to follow this approach but we are experiencing performance issue compared to the uber jar. 
exactly same code but packaged in two different ways;

can you please share your thoughts here?
are there any additional setting we need to keep into account when we are packaging without uber-jar?

thank you for your feedback

Matteo Mortari

unread,
Jun 22, 2022, 4:02:12 AM6/22/22
to Kogito development mailing list
Hi Marco,
if I understand correctly, you have a Kogito application based on Quarkus, which has a different performance profile depending on the way it was packaged by Quarkus tools/framework.

Is this about a specific performance difference you could isolate in a Kogito related functionality only,
or is this a more generalized performance difference noticed end-to-end?

Unless you have specific data which would pin-point to a Kogito related issue, I would advise to engage with the Quarkus community and/or support, since packaging strategy of Quarkus application are driven by Quarkus?

Hope this helps, somehow?
Keep us posted, thanks!
MM

Marco Iannelli

unread,
Jun 22, 2022, 6:02:22 AM6/22/22
to Kogito development mailing list
thank you Matteo, I will discuss with the customer and let you know.
regards
Marco

Marco Iannelli

unread,
Jul 5, 2022, 9:45:25 AM7/5/22
to Kogito development mailing list
Hi Matteo,
please find below a performance summary while hitting the default kogito end point
  • using version 1.20 without uberjar, the average response time is 89115 ms while 
  • using version 1.12 with uberjar the average response time is 878 ms
can you check and share your thoughts?
Thanks
Marco


_______________________

With Kogito : 1.20.0

=============================================================================

 

java -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+UseStringDeduplication -Xms300m -Xmx3500m -jar quarkus-run.jar

 

-60 Payloads (5MB size)

-Ran with default rest endpoints for the main process

 

Response Time: Average response time is 89115 ms.

Heap Memory Consumed : Approx 2 gb .



With kogito 1.12.0 and using Quarkus uber-jar :

 

-java -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+UseStringDeduplication -Xms300m -Xmx3500m -jar desaei-backdating-rules-1.0.0-SNAPSHOT-runner.jar

 

-60 Payloads (5MB size)

-Ran with default rest endpoints for the main process :

 

Response time : Average response time 878 ms

 Heap Consumed : Approx 2 gb

Matteo Mortari

unread,
Jul 6, 2022, 2:42:18 AM7/6/22
to Kogito development mailing list
Hi Marco,

I assume the knowledge assets used in the Kogito project you are referring to in your last email are just and only DMN, given the subject of this thread. (if this is not the case kindly correct me).

Since version Kogito 1.0 I don't recall any architectural difference specific in the Kogito DMN codegen which would justify the performance impact you highlight.
If you could share the reproducer (it doesn't need to have the same exact DMN models, but some models which would highlight the 2x magnitude difference) I am happy to take a look into that.
With a reproducer we can also try A/B with other packaging mechanisms and see if that changes.

Without sharing a reproducer, I believe it will also be difficult for Quarkus' team to take a look into the problem, if that's somehow related to the difference in packaging.

Hope this helps, let us know!
MM
Reply all
Reply to author
Forward
0 new messages