[JBoss JIRA] (DROOLS-4922) LinkageError: attempted duplicate class definition for materialized Lambda during incremental compilation
by Toshiya Kobayashi (Jira)
[ https://issues.redhat.com/browse/DROOLS-4922?page=com.atlassian.jira.plug... ]
Toshiya Kobayashi commented on DROOLS-4922:
-------------------------------------------
Fixed by https://github.com/kiegroup/drools/commit/ef45baf507953964a98b12c3cc5019c...
> LinkageError: attempted duplicate class definition for materialized Lambda during incremental compilation
> ---------------------------------------------------------------------------------------------------------
>
> Key: DROOLS-4922
> URL: https://issues.redhat.com/browse/DROOLS-4922
> Project: Drools
> Issue Type: Bug
> Components: executable model
> Reporter: Toshiya Kobayashi
> Assignee: Toshiya Kobayashi
> Priority: Major
> Fix For: 7.33.0.Final
>
>
> In case of incremental compilation, say, a rule is changed:
> - A lambda consequence (or a lambda predicate) has the same expression
> - But an "import" statement is added to the rule
> It will results in
> {noformat}
> [ERROR] testIdenticalConsequenceButImportChange[PATTERN_DSL](org.drools.modelcompiler.IncrementalCompilationTest) Time elapsed: 3.135 s <<< ERROR!
> java.lang.LinkageError: loader org.drools.dynamic.DynamicProjectClassLoader$DefaultInternalTypesClassLoader @2b0dc227 (instance of org.drools.dynamic.DynamicProjectClassLoader$DefaultInternalTypesClassLoader, child of 'app' jdk.internal.loader.ClassLoaders$AppClassLoader) attempted duplicate class definition for org.drools.test.LambdaConsequence6F5B5EC739B778AE0EE14FA22BAFE144.
> at java.base/java.lang.ClassLoader.defineClass1(Native Method)
> at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
> at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:877)
> at org.drools.dynamic.DynamicProjectClassLoader$DefaultInternalTypesClassLoader.defineClass(DynamicProjectClassLoader.java:97)
> at org.drools.reflective.classloader.ProjectClassLoader.defineType(ProjectClassLoader.java:183)
> at org.drools.reflective.classloader.ProjectClassLoader.defineClass(ProjectClassLoader.java:195)
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.reinitModifiedClasses(KieContainerImpl.java:323)
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.update(KieContainerImpl.java:243)
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.update(KieContainerImpl.java:236)
> at org.drools.compiler.kie.builder.impl.KieContainerImpl.updateToVersion(KieContainerImpl.java:194)
> at org.drools.modelcompiler.IncrementalCompilationTest.testIdenticalConsequenceButImportChange(IncrementalCompilationTest.java:257)
> ...
> {noformat}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
6 years, 4 months
[JBoss JIRA] (DROOLS-5107) A rule always fires with executable model for a constraint which has extra parentheses
by Toshiya Kobayashi (Jira)
[ https://issues.redhat.com/browse/DROOLS-5107?page=com.atlassian.jira.plug... ]
Toshiya Kobayashi commented on DROOLS-5107:
-------------------------------------------
Fixed by https://github.com/kiegroup/drools/commit/f5f02da63c3befee2a1c3eeaeaf4fb0...
> A rule always fires with executable model for a constraint which has extra parentheses
> --------------------------------------------------------------------------------------
>
> Key: DROOLS-5107
> URL: https://issues.redhat.com/browse/DROOLS-5107
> Project: Drools
> Issue Type: Bug
> Components: executable model
> Affects Versions: 7.33.0.Final
> Reporter: Toshiya Kobayashi
> Assignee: Toshiya Kobayashi
> Priority: Major
> Fix For: 7.34.0.Final
>
>
> When you have a constraint with extra parentheses,
> {noformat}
> $p : Person((age > 30))
> {noformat}
> executable-model generates a pattern without a constraint expr method so it always fires.
> {code:java}
> public static org.drools.model.Rule rule_R() {
> final org.drools.model.Variable<org.drools.modelcompiler.domain.Person> var_$p = D.declarationOf(org.drools.modelcompiler.domain.Person.class, DomainClassesMetadataFBDA1ED637C8B60C741C0BDB502EB8F0.org_drools_modelcompiler_domain_Person_Metadata_INSTANCE, "$p");
> org.drools.model.Rule rule = D.rule("R").build(D.pattern(var_$p),
> D.execute(() -> {
> {
> }
> }));
> return rule;
> }
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
6 years, 4 months