History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: QB-3312
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Blocker Blocker
Assignee: Robin Shen
Reporter: Alexey Shumkin
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
QuickBuild

Quickbuild is stuck. It does not perform any request

Created: 17/Dec/18 08:37 PM   Updated: 18/Dec/18 11:50 PM
Component/s: None
Affects Version/s: 8.0.20
Fix Version/s: None

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
Environment:
Operating System Linux 4.4.0-139-generic, amd64
JVM OpenJDK 64-Bit Server VM 1.8.0_111, Oracle Corporation
QuickBuild Version 8.0.20 - Tue Sep 18 07:53:55 UTC 2018


 Description  « Hide
Every configuration is stuck on build request with process status WAITING_PROCESS

Server log contains many errors
2018-12-17 22:38:43,394 [Thread-74] ERROR com.pmease.quickbuild.DefaultBuildEngine - Error processing build requests.
    java.lang.IllegalAccessError: java/util/Arrays$ArrayList
     at ASMAccessorImpl_4284742961545068505910.getValue(Unknown Source)
     at org.mvel2.optimizers.dynamic.DynamicGetAccessor.getValue(DynamicGetAccessor.java:66)
     at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:98)
     at org.mvel2.ast.And.getReducedValueAccelerated(And.java:32)
     at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:38)
     at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:93)
     at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
     at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:125)
     at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:111)
     at org.mvel2.ast.ForEachNode.getReducedValueAccelerated(ForEachNode.java:79)
     at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
     at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:125)
     at org.mvel2.MVEL.executeExpression(MVEL.java:1057)
     at com.pmease.quickbuild.plugin.basis.BasisPlugin$30.evaluate(BasisPlugin.java:314)
     at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:314)
     at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:74)
     at com.pmease.quickbuild.setting.step.nodematcher.ScriptNodeMatcher.matches(ScriptNodeMatcher.java:43)
     at com.pmease.quickbuild.setting.step.nodematcher.ScriptNodeMatcher$$EnhancerByCGLIB$$96f115b.CGLIB$matches$1(<generated>)
     at com.pmease.quickbuild.setting.step.nodematcher.ScriptNodeMatcher$$EnhancerByCGLIB$$96f115b$$FastClassByCGLIB$$2e784aea.invoke(<generated>)
     at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
     at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:261)
     at com.pmease.quickbuild.setting.step.nodematcher.ScriptNodeMatcher$$EnhancerByCGLIB$$96f115b.matches(<generated>)
     at com.pmease.quickbuild.DefaultBuildEngine.checkCandidate(DefaultBuildEngine.java:1517)
     at com.pmease.quickbuild.DefaultBuildEngine.run(DefaultBuildEngine.java:1173)
     at java.lang.Thread.run(Thread.java:745)

Master step has the following rule for node selection
Node Selection
On node with specified script evaluating to true
Script
import java.util.Arrays;

nodeLabels = node.?getAttribute("NODE_LABELS");
if (nodeLabels == null) { return false };

build_labels = vars.?getValue("MASTER_NODE_LABELS");
// empty condition matches any node
if (build_labels == null) {return true};

String[] nodeLabelsArr = nodeLabels.split(",");
String[] build_labelsArr = build_labels.split(",");

matched = true;
for (String label: build_labelsArr) {
  matched = matched && Arrays.asList(nodeLabelsArr).contains(label);
}
matched;

It's kind a memory leak because a time from a service restart to a stuck state increased accrodingly to maximum increased memory heap when I changed
wrapper.java.maxmemory=2048 first to 4096 then to 8192 in conf/wrapper.conf

But QB shows
Total Heap Memory 7.11 GB
Used Heap Memory 329.77 MB


 All   Comments   Work Log   Change History      Sort Order:
Robin Shen [17/Dec/18 11:36 PM]
Please use groovy script instead of MVEL script. MVEL is not actively maintained and the complex script may have issues with Java 1.8 or higher.

Alexey Shumkin [18/Dec/18 06:22 PM]
It seems it was the reason. I've changed to groovy and no errors. Thanks