We’ve encountered this failure in the drools rule compilation whenever a new set of rules are added. The weird thing here is if we restart the service, then we don't see this issue.
int kieJarReleaseId = 0;
ReleaseId releaseId;
KieServices ks = KieServices.Factory.get();
KieModuleModel kieModuleModel;
releaseId = ks.newReleaseId("org.kie", "test-upgrade", "1." + kieJarReleaseId++ + ".0");
// Create the in-memory File System and add the resources files to it
String kBaseName = "kBase";
kieModuleModel = ks.newKieModuleModel();
KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel(kBaseName);
kieBaseModel.setDefault(true).setEqualsBehavior(EqualityBehaviorOption.EQUALITY).setEventProcessingMode(
EventProcessingOption.STREAM);
kieBaseModel.newKieSessionModel("defaultKSession").setType(KieSessionType.STATEFUL).setDefault(true);
// Kie Base Configuration
KieBaseConfiguration kbConfig = ks.newKieBaseConfiguration();
kbConfig.setOption(ConstraintJittingThresholdOption.get(-1));
if (!drlFileContent.isEmpty()) {
KieFileSystem kfs = ks.newKieFileSystem();
kfs.generateAndWritePomXML(releaseId);
kfs.writeKModuleXML(kieModuleModel.toXML());
kfs.write("src/main/resources/rules.drl", drlFileContent);
KieBuilder kbuilder = ks.newKieBuilder(kfs);
kbuilder.buildAll();
if (kbuilder.getResults().hasMessages(Level.ERROR)) {
return false;
}
KieModule kModule = kbuilder.getKieModule();
if(kieJarReleaseId > 1){
KieRepository kRepo = ks.getRepository();
kRepo.removeKieModule(ks.newReleaseId("org.kie", "test-upgrade", "1." + (kieJarReleaseId-2)+".0"));
}
kContainer = ks.newKieContainer(kModule.getReleaseId());
}
Could any of the experts let me know what we are missing / why we are encountering this error?