Download Blaze Trial
Follow FICO
LinkedIn   Twitter   Youtube
Close To access this section, please choose the Community Neighborhood in which you have the most interest.

» Business Rules Management
» Collections & Recovery
» Fraud Management
» Risk Management
» Scoring
Close To access this section, please choose the Community Neighborhood in which you have the most interest.

» Business Rules Management
» Collections & Recovery
» Fraud Management
» Risk Management
» Scoring
Reply
Regular Visitor
Posts: 8
Registered: ‎03-31-2009
Accepted Solution

BA 6.6 evaluation error in loop

Hi,

I'm trying to validate data using Blaze Advisor rule repository from Java.
My SRL function :

 

try
{
    apply Representative_Ruleset();
    aCount is an integer initially gGoodsItems.count;
    aIndex is an integer initially 0;
    while (aIndex < aCount) do
    {
        apply GoodsItems_CommodityCode_Ruleset(aIndex);
        apply GoodsItems_Packages_Marks_Ruleset(aIndex);
        aIndex = aIndex + 1;
    }
}
catch a Throwable with
{
    it.printStackTrace();
}

 

It throws a NdServiceSessionRuntimeException in the while loop on exit of the first apply.
Exception disapears if both "apply" in the loop are commented.

 

Full exception trace :

 

com.blazesoft.server.base.NdServiceSessionRuntimeException: Service session Id number 39.
Service 'Decision Services'. Server 'Decision Services' on host 'yyyy'.
Evaluation error
Service session Id number 39.
Service 'Decision Services'. Server 'Decision Services' on host 'yyyy'.
Deleting local object 'Anonymous3#8'
at Decision Services.rb at line 2860 (76736 -> 76777)
at Decision Services.rb at line 2860 (76736 -> 76777)
com.blazesoft.engines.rules.NdRuntimeException: 'Anonymous3#8' is already deleted.
 at com.blazesoft.engines.rules.NdObject.WjHBKzO(:2001)
 at com.blazesoft.engines.rules.NdObject.WjHBKMM(:4700)
 at com.blazesoft.engines.rules.NdObject.WjHBKUU(:4842)
 at com.blazesoft.engines.rules.NdObject.release(:5006)
 at com.blazesoft.engines.rules.expressions.NdFunctionalExpression.WjHLQSY(:223)
 at com.blazesoft.engines.rules.expressions.NdFunctionalExpression.WjHBdED(:172)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:572)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluate(:539)
 at com.blazesoft.engines.rules.expressions.WjHBsBU.WjHBdED(:359)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:572)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluate(:539)
 at com.blazesoft.engines.rules.rete.WjHAXMK.WjHAXGE(:536)
 at com.blazesoft.engines.rules.rete.WjHBtbG.WjHBtaZ(:255)
 at com.blazesoft.engines.rules.rete.WjHBtbG.WjHAXBL(:281)
 at com.blazesoft.engines.rules.rete.WjHAXMK.WjHAXJH(:553)
 at com.blazesoft.engines.rules.rete.WjHBtbG.WjHAXBL(:282)
 at com.blazesoft.engines.rules.rete.WjHAXMK.WjHAXJH(:553)
 at com.blazesoft.engines.rules.rete.WjHBMQA.WjHBMPZ(:128)
 at com.blazesoft.engines.rules.NdClass.WjHBLSW(:2454)
 at com.blazesoft.engines.rules.NdClass.WjHBLTX(:2477)
 at com.blazesoft.engines.rules.NdClass.WjHBLSW(:2458)
 at com.blazesoft.engines.rules.WjHBXRP.WjHBLTX(:385)
 at com.blazesoft.engines.rules.NdClass.WjHBLSW(:2458)
 at com.blazesoft.engines.rules.NdObject.WjHBKJJ(:4635)
 at com.blazesoft.engines.rules.NdScriptContext.WjHBTRH(:4884)
 at com.blazesoft.engines.rules.NdObject.WjHBKzO(:2098)
 at com.blazesoft.engines.rules.NdObject.WjHBKXX(:4904)
 at com.blazesoft.engines.rules.NdEvaluationContext.WjHHQEV(:294)
 at com.blazesoft.engines.rules.NdEvaluationContext.WjHLPgB(:324)
 at com.blazesoft.engines.rules.NdEvaluationContext.free(:394)
 at com.blazesoft.engines.rules.expressions.NdFunctionalExpression.WjHLQSY(:219)
 at com.blazesoft.engines.rules.expressions.NdFunctionalExpression.WjHLOvY(:179)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluateAction(:1223)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:224)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHBdED(:199)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:572)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluate(:539)
 at com.blazesoft.engines.rules.expressions.WjHBrxD.WjHBdED(:176)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOvY(:502)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluateAction(:1230)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:227)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLOvY(:206)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluateAction(:1223)
 at com.blazesoft.engines.rules.expressions.WjHBYaP.WjHBdED(:271)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOvY(:502)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluateAction(:1230)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:227)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLOvY(:206)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.NdFunction$FunctionEvaluator.catchEvaluate(:431)
 at com.blazesoft.engines.rules.NdFunctionalItem.WjHLQcJ(:782)
 at com.blazesoft.engines.rules.NdFunctionalItem.catchEvaluate(:715)
 at com.blazesoft.engines.rules.NdFunctionalItem.WjHLVyT(:963)
 at com.blazesoft.engines.rules.NdFunctionalItem.catchInvokeInternal(:1046)
 at com.blazesoft.engines.flow.WjHATZC.WjHGPWR(:112)
 at com.blazesoft.engines.flow.WjHGPOT.WjHAZIB(:533)
 at com.blazesoft.engines.flow.WjHGQLV.WjHGWSJ(:394)
 at com.blazesoft.engines.flow.WjHByQO.WjHUosA(:814)
 at com.blazesoft.engines.flow.WjHByQO.WjHUorZ(:577)
 at com.blazesoft.engines.rules.NdRuleflowFunctional.imperativeInvokeRuleflow(:408)
 at com.blazesoft.engines.rules.NdRuleflowFunctional$WjHUpzZ.WjHUpzX(:853)
 at com.blazesoft.engines.rules.NdRuleflowFunctional$WjHUpzZ.WjHUpzY(:867)
 at com.blazesoft.engines.rules.NdRuleflowFunctional$WjHUpzZ.catchEvaluate(:976)
 at com.blazesoft.engines.rules.NdFunctionalItem.WjHLQcJ(:782)
 at com.blazesoft.engines.rules.NdFunctionalItem.catchEvaluate(:715)
 at com.blazesoft.engines.rules.NdFunctionalItem.WjHLVyT(:963)
 at com.blazesoft.engines.rules.NdFunctionalItem.catchInvokeInternal(:1046)
 at com.blazesoft.engines.flow.WjHATZC.WjHGPWR(:112)
 at com.blazesoft.engines.flow.WjHGPOT.WjHAZIB(:533)
 at com.blazesoft.engines.flow.WjHGQLV.WjHGWSJ(:394)
 at com.blazesoft.engines.flow.WjHByQO.WjHUosA(:814)
 at com.blazesoft.engines.flow.WjHByQO.run(:499)
 at com.blazesoft.engines.rules.NdScriptContext.WjHBTqH(:3560)
 at com.blazesoft.engines.rules.NdDefCommonBuiltIns.executeAgent(:353)
 at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at com.blazesoft.engines.rules.java.WjHBkmV.WjHBklU(:212)
 at com.blazesoft.engines.rules.java.WjHBkmV.invoke(:409)
 at com.blazesoft.objects.base.NdDefaultExternalContext.invokeExternalMethod(:64)
 at com.blazesoft.engines.rules.expressions.NdMethodInvoker.WjHLTvK(:395)
 at com.blazesoft.engines.rules.expressions.NdCallExpression.WjHLUmM(:1767)
 at com.blazesoft.engines.rules.expressions.WjHBuyB.WjHLUmM(:183)
 at com.blazesoft.engines.rules.expressions.NdCallExpression.WjHLUmL(:695)
 at com.blazesoft.engines.rules.expressions.NdCallExpression.WjHLOvY(:622)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluateAction(:1223)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:224)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHBdED(:199)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:572)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluate(:539)
 at com.blazesoft.engines.rules.expressions.WjHAVGD.WjHBdED(:185)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOvY(:502)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluateAction(:1223)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:224)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHBdED(:199)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:572)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluate(:539)
 at com.blazesoft.engines.rules.expressions.WjHAVGD.WjHBdED(:185)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOvY(:502)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluateAction(:1230)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:227)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLOvY(:206)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluateAction(:1223)
 at com.blazesoft.engines.rules.expressions.WjHBYaP.WjHBdED(:271)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOvY(:502)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluateAction(:1223)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:224)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHBdED(:199)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:572)
 at com.blazesoft.engines.rules.expressions.NdExpression.evaluate(:539)
 at com.blazesoft.engines.rules.expressions.WjHAVGD.WjHBdED(:185)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOvY(:502)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOxA(:1240)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluateAction(:1230)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLPlX(:227)
 at com.blazesoft.engines.rules.expressions.WjHAPdD.WjHLOvY(:206)
 at com.blazesoft.engines.rules.expressions.NdExpression.WjHLOwZ(:592)
 at com.blazesoft.engines.rules.expressions.NdExpression.catchEvaluate(:1168)
 at com.blazesoft.engines.rules.NdFunction$FunctionEvaluator.catchEvaluate(:431)
 at com.blazesoft.engines.rules.NdFunctionalItem.WjHLQcJ(:782)
 at com.blazesoft.engines.rules.NdFunctionalItem.catchEvaluate(:715)
 at com.blazesoft.engines.rules.NdFunctionalItem.WjHLVyT(:963)
 at com.blazesoft.engines.rules.NdFunctionalItem.catchInvoke(:1127)
 at com.blazesoft.server.deploy.rules.NdDeployRulesServiceSrlInvoker.invoke(:146)
 at com.blazesoft.server.deploy.rules.NdDeployRulesServiceClientContext.invokeService(:2507)
 at com.blazesoft.server.deploy.rules.NdDeployInvokerRulesServiceClientContext.execute(:66)
 at com.blazesoft.server.rules.NdRulesServiceAgent.process(:1447)
 at com.blazesoft.server.rules.NdRulesServiceAgent.run(:1221)
 at com.blazesoft.server.local.NdLocalServiceExecContext.runAgent(:96)
 at com.blazesoft.server.local.NdLocalService.runAgent(:1244)
 at com.blazesoft.server.local.NdLocalService.invokeServiceSessionImpl(:1897)
 at com.blazesoft.server.local.NdLocalService.invokeServiceSession(:1949)
 at com.blazesoft.server.deploy.NdStatelessServer.SiPsoKE(:233)
 at com.blazesoft.server.deploy.NdStatelessServer.invokeService(:362)
 at com.blazesoft.server.deploy.NdStatelessServer.invokeService(:489)
 at eu.erp.dms.mdas.validation.server.RulesRepoServer.invokevalidateDocument(RulesRepoServer.java:59)
 at eu.erp.dms.mdas.validation.bean.RuleServerImpl.validateDocument(RuleServerImpl.java:108)
 at eu.erp.dms.mdas.validation.test.RulesTest.validateDocument(RulesTest.java:111)
 at eu.erp.dms.mdas.validation.test.RulesTest.validateDocument(RulesTest.java:105)
 at eu.erp.dms.mdas.validation.test.CommonRulesTests.R13LTTest(CommonRulesTests.java:3582)
 at eu.erp.dms.mdas.validation.test.IE615Test_Ext.R13LT(IE615Test_Ext.java:123)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.springframework.test.context.junit4.SpringTestMethod.invoke(SpringTestMethod.java:163)
 at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:233)
 at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:333)
 at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
 at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
 at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:142)
 at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
 at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
 at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
 at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
 at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)


Where is the problem ?

Super Contributor
Andrei
Posts: 249
Registered: ‎09-26-2008

Re: BA 6.6 evaluation error in loop

I don't think it has anything to do with the loop. It looks like there is some object that is being manipulated by your ruleset in such way that its hash code changes. As a result, it cannot be found and deleted from the working memory or something along these lines.

 

Check your Java class code to see how the hashCode()/equals() methods are implemented and try to make the object's hash code immutable for the duration of the rule session.

Andrei Palskoi
Blaze Solution Architect
Super Contributor
Andrei
Posts: 249
Registered: ‎09-26-2008

Re: BA 6.6 evaluation error in loop

Also for classes that like to change their hashcode there is a way to tell Blaze that they cannot be trusted. Just search for "NdUserDefinedMutableJavaValueClasses.properties" in Blaze HTML documentation.
Andrei Palskoi
Blaze Solution Architect