Version: Stable 2024.08
Release: 20240827.1724745249889
Custom Functions in SAS Viya Intelligent Decisioning (ID) are no longer working.
Our recent update to 2024.08 coincides with the start of this issue, but this may be unrelated.
We make use of many Custom Functions in our Code files, Decision flows and Rule sets. Until recently, this has worked without error.
However, we are now receiving the following error when we try to score an item in ID:
(I've replaced the function names with XXX)
ERROR: Compilation error.
ERROR: Line 225: Unknown function XXX.
ERROR: Line 459: Package "casuser(example_user)".brm_51_ruleset_0 is not defined.
ERROR: Line 552: Thread "casuser(example_user)".brm_rules_execution_thread is not defined.
ERROR: Line 552: The thread type brm_rules_execution_thread, used in declaring _t, is not defined.
Likewise, any newly published SCR containers also throw this error at startup:
2024-09-03 17:22:25.966 ERROR --- [pool-1-thread-1] c.s.m.solo.impl.loader.DS2ModuleHandler : Error compiling module XXX: [Line 19: Package tkmas.XXX_package_1_11 is not defined., Line 10: Package tkmas.XXX_package_1_6 is not defined., Line 49: Unknown function YYY.]
2024-09-03 17:22:25.969 ERROR --- [pool-1-thread-1] c.sas.mas.solo.impl.loader.ModuleLoader : Could not compile module XXX
com.sas.mas.solo.impl.MASSoloException: Error compiling module XXX: [Line 19: Package tkmas.XXX_package_1_11 is not defined., Line 10: Package tkmas.XXX_package_1_6 is not defined., Line 49: Unknown function YYY.]
at com.sas.mas.solo.impl.loader.DS2ModuleHandler.compile(DS2ModuleHandler.java:110)
at com.sas.mas.solo.impl.loader.ModuleManager.compileInternal(ModuleManager.java:142)
at com.sas.mas.solo.impl.loader.ModuleManager.compile(ModuleManager.java:81)
at com.sas.mas.solo.impl.loader.ModuleLoader$1.call(ModuleLoader.java:173)
at com.sas.mas.solo.impl.loader.ModuleLoader$1.call(ModuleLoader.java:169)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Inspecting the compiled SAS code, it looks like ID is simply not including the method definitions in the code anymore. When I look at the results from past scoring tests, I can see in the compiled code the method(s) of the Custom Functions. This is not the case anymore.
When editing new or existing Code files, I can still select from the Custom Functions toolbar, so they do still exist, but ID is just not including their method definitions at compile time.
This issue is going to cause a massive blocker for our production deployments until we can resolve it.
Any assistance will be greatly appreciated.
Kind regards, Andrew