<< Back to previous view |
[QB-3312] Quickbuild is stuck. It does not perform any request
|
|
Status: | Closed |
Project: | QuickBuild |
Component/s: | None |
Affects Version/s: | 8.0.20 |
Fix Version/s: | None |
Type: | Bug | Priority: | Blocker |
Reporter: | Alexey Shumkin | Assigned To: | Robin Shen |
Resolution: | Fixed | Votes: | 0 |
Remaining Estimate: | Unknown | Time Spent: | Unknown |
Original Estimate: | 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 |
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 |
Comments |
Comment by 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. |
Comment by Alexey Shumkin [ 18/Dec/18 06:22 PM ] |
It seems it was the reason. I've changed to groovy and no errors. Thanks |