Bug 1310884

Summary: [GSS](6.2.z) Kie-scanner fails to update kiebase if a modified rule makes reference to a global defined in a .gdrl file.
Product: [Retired] JBoss BRMS Platform 6 Reporter: Alessandro Lazarotti <alazarot>
Component: BREAssignee: Mario Fusco <mfusco>
Status: CLOSED EOL QA Contact: Tibor Zimanyi <tzimanyi>
Severity: high Docs Contact:
Priority: high    
Version: 6.2.0CC: dmurphy, kverlaen, lpetrovi, mfusco, mwinkler, tzimanyi
Target Milestone: CR1   
Target Release: 6.2.2   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1310261 Environment:
Last Closed: 2020-03-27 19:10:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1310261    
Bug Blocks: 1309326, 1309327, 1310685    

Description Alessandro Lazarotti 2016-02-22 22:07:31 UTC
+++ This bug was initially created as a clone of Bug #1310261 +++

Description of problem:
When converting an .xls file to a GDT, globals defined in the spreadsheet are stored in a .gdrl file in the same package. However, if an update is made to values in the decision table and the project is built/deployed, applications running a kie-scanner will fail to deploy the kiebase with an error like the following:

ERROR o.d.c.k.b.impl.KieContainerImpl - Unable to update KieBase: defaultKieBase to release example:scanner-reproducer:1.11
Rule Compilation error : [Rule name='Whatever']
	defaultpkg/Rule_Whatever395648274.java (13:477) : list cannot be resolved

where 'list' is the global variable defined in the .gdrl file and referenced in the modified rule.


This behavior appears to apply to any rule referencing a global defined in a separate file. If the rule changes but the global file does not, the kiebase fails to compile.



How reproducible:
Always


Steps to Reproduce:
1. Create a new Global Variable file in business-central
2. Define a global variable
3. Create a new GDT, Guided Rule, or DRL file
4. Reference the global variable in the rule.
5. Configure a kie-scanner in a client application to load the LATEST version of the project
6. Update the rule (but not the global variable)
7. Increment the version in the projects pom.xml
8. Build/Deploy the project

Actual results:
ERROR o.d.c.k.b.impl.KieContainerImpl - Unable to update KieBase: defaultKieBase to release example:scanner-reproducer:1.11
Rule Compilation error : [Rule name='Whatever']
	defaultpkg/Rule_Whatever395648274.java (13:477) : list cannot be resolved

Expected results:
No error, kiebase updated with updated rules


Additional info:

--- Additional comment from JBoss Product and Program Management on 2016-02-19 17:20:18 EST ---

Since this issue was entered in Red Hat Bugzilla, the release flag has been
set to ? to ensure that it is properly evaluated for this release.

--- Additional comment from David Murphy on 2016-02-19 17:24 EST ---

Adding a simple reproducer scenario.

Steps to reproduce:

1. Import brms-project into brms workbench
2. Build/Deploy the project
3. Run client/src/main/java/example/Client.java
4. When prompted, update reproducerRule in workbench, then increment project version and Build/Deploy again
5. Press ENTER on the console where Client is waiting
6. Observe exception

--- Additional comment from Mario Fusco on 2016-02-22 06:12:16 EST ---

Fixed by https://github.com/droolsjbpm/drools/commit/b271fc97080fa185d3e1360fc3223823307dc0a9

Comment 1 Alessandro Lazarotti 2016-02-22 22:09:26 UTC
Fix cherry-picked to 6.3.x branch with https://github.com/droolsjbpm/drools/commit/bd3109437

Comment 3 Tibor Zimanyi 2016-03-08 08:25:16 UTC
Verified by running reproducer from Mario's commit.