Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-6957

Investigate NPE in SmokeParserTest

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 7.71.0.Final
    • 7.70.0.Final
    • executable model
    • None
    • 2022 Week 20-22 (from May 16)
    • 2
    • Workaround Exists
    • Hide

      Disable parallel build

      System.setProperty("drools.parallelRulesBuildThreshold", "-1");
      
      Show
      Disable parallel build System .setProperty( "drools.parallelRulesBuildThreshold" , "-1" );
    • NEW
    • NEW
    • ---
    • ---

    Description

      Failed in a daily build. Not reproducible locally.

      Regression
      org.drools.testcoverage.functional.parser.SmokeParserTest.testParserSmoke[15]
      
      Failing for the past 1 build (Since #7 )
      Took 95 ms.
      Stacktrace
      java.lang.NullPointerException
      	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
      	at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
      	at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
      	at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:722)
      	at org.drools.modelcompiler.builder.generator.ModelGenerator.processRules(ModelGenerator.java:168)
      	at org.drools.modelcompiler.builder.generator.ModelGenerator.generateModel(ModelGenerator.java:139)
      	at org.drools.modelcompiler.builder.processors.ModelGeneratorPhase.process(ModelGeneratorPhase.java:44)
      	at org.drools.compiler.builder.impl.processors.IteratingPhase.process(IteratingPhase.java:56)
      	at org.drools.modelcompiler.builder.processors.ModelMainCompilationPhase.process(ModelMainCompilationPhase.java:103)
      	at org.drools.modelcompiler.builder.ModelBuilderImpl.doSecondBuildStep(ModelBuilderImpl.java:114)
      	at org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:115)
      	at org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:99)
      	at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:270)
      	at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:216)
      	at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:80)
      	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:280)
      	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:246)
      	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:203)
      	at org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem(KieUtil.java:140)
      	at org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem(KieUtil.java:127)
      	at org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromResources(KieUtil.java:114)
      	at org.drools.testcoverage.functional.parser.SmokeParserTest.testParserSmoke(SmokeParserTest.java:44)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
      	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
      	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
      	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
      	at org.junit.runners.Suite.runChild(Suite.java:128)
      	at org.junit.runners.Suite.runChild(Suite.java:27)
      	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
      	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
      	at org.junit.runners.Suite.runChild(Suite.java:128)
      	at org.junit.runners.Suite.runChild(Suite.java:27)
      	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
      	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
      	at org.apache.maven.surefire.junitcore.JUnitCore.run(JUnitCore.java:55)
      	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createRequestAndRun(JUnitCoreWrapper.java:137)
      	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:107)
      	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:83)
      	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:75)
      	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:158)
      	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
      	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
      	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
      	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
      Caused by: java.lang.NullPointerException
      	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
      	at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
      	at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
      	at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737)
      	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
      	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
      	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:661)
      	at org.drools.modelcompiler.builder.generator.ModelGenerator.lambda$processRules$1(ModelGenerator.java:167)
      	at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
      	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
      	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
      	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
      	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
      	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
      Caused by: java.lang.NullPointerException
      	at com.github.javaparser.utils.PositionUtils.compare(PositionUtils.java:67)
      	at com.github.javaparser.utils.PositionUtils.lambda$sortByBeginPosition$0(PositionUtils.java:55)
      	at java.base/java.util.TimSort.binarySort(TimSort.java:296)
      	at java.base/java.util.TimSort.sort(TimSort.java:221)
      	at java.base/java.util.Arrays.sort(Arrays.java:1515)
      	at java.base/java.util.ArrayList.sort(ArrayList.java:1750)
      	at com.github.javaparser.utils.PositionUtils.sortByBeginPosition(PositionUtils.java:55)
      	at com.github.javaparser.utils.PositionUtils.sortByBeginPosition(PositionUtils.java:47)
      	at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.printOrphanCommentsBeforeThisChildNode(DefaultPrettyPrinterVisitor.java:1978)
      	at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:374)
      	at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:163)
      	at com.github.javaparser.ast.expr.SimpleName.accept(SimpleName.java:76)
      	at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:1054)
      	at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:163)
      	at com.github.javaparser.ast.expr.MethodCallExpr.accept(MethodCallExpr.java:122)
      	at org.drools.mvel.parser.printer.PrintUtil.printNode(PrintUtil.java:29)
      	at org.drools.modelcompiler.builder.generator.drlxparse.SingleDrlxParseSuccess.getExprId(SingleDrlxParseSuccess.java:204)
      	at org.drools.modelcompiler.builder.generator.expression.AbstractExpressionBuilder.createExprId(AbstractExpressionBuilder.java:407)
      	at org.drools.modelcompiler.builder.generator.expression.PatternExpressionBuilder.buildSingleExpressionWithIndexing(PatternExpressionBuilder.java:116)
      	at org.drools.modelcompiler.builder.generator.expression.PatternExpressionBuilder.buildExpressionWithIndexing(PatternExpressionBuilder.java:98)
      	at org.drools.modelcompiler.builder.generator.expression.PatternExpressionBuilder.processExpression(PatternExpressionBuilder.java:69)
      	at org.drools.modelcompiler.builder.generator.expression.AbstractExpressionBuilder.processExpression(AbstractExpressionBuilder.java:83)
      	at org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSLSimpleConstraint.buildPattern(PatternDSLSimpleConstraint.java:45)
      	at org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSL$5.onSuccess(PatternDSL.java:281)
      	at org.drools.modelcompiler.builder.generator.drlxparse.AbstractDrlxParseSuccess.accept(AbstractDrlxParseSuccess.java:46)
      	at org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSL.buildConstraint(PatternDSL.java:274)
      	at org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSLPattern.buildConstraints(PatternDSLPattern.java:124)
      	at org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSLPattern.buildPattern(PatternDSLPattern.java:58)
      	at org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSL.buildPattern(PatternDSL.java:317)
      	at org.drools.modelcompiler.builder.generator.visitor.ModelGeneratorVisitor.visit(ModelGeneratorVisitor.java:131)
      	at org.drools.drl.ast.descr.PatternDescr.accept(PatternDescr.java:275)
      	at org.drools.modelcompiler.builder.generator.visitor.AndVisitor.visit(AndVisitor.java:51)
      	at org.drools.modelcompiler.builder.generator.visitor.ModelGeneratorVisitor.visit(ModelGeneratorVisitor.java:69)
      	at org.drools.modelcompiler.builder.generator.ModelGenerator.processRule(ModelGenerator.java:201)
      	at org.drools.modelcompiler.builder.generator.ModelGenerator.processRuleDescr(ModelGenerator.java:186)
      	at org.drools.modelcompiler.builder.generator.ModelGenerator.lambda$processRules$0(ModelGenerator.java:167)
      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
      	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
      	at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
      	at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
      	... 5 more
      

       

      To reproduce locally, edit SmokeParserTest to test "operators.drl" intensely.

      
      public class SmokeParserTest extends ParserTest {
      
          private final Logger LOGGER = LoggerFactory.getLogger(SmokeParserTest.class);
      
          private static int count = 0;
      
          public SmokeParserTest(final File file, final KieBaseTestConfiguration kieBaseTestConfiguration) {
              super(file, kieBaseTestConfiguration);
          }
      
          @Parameters
          public static Collection<Object[]> getParameters() {
              //        return getTestParamsFromFiles(getFiles("smoke"));
              File file = new File("src/test/resources/org/drools/testcoverage/functional/parser/smoke/operators.drl");
              List<File> files = new ArrayList<>();
              files.add(file);
              return getTestParamsFromFiles(files);
          }
      
          @Test
          public void testParserSmoke() {
              for (int i = 0; i < 50; i++) {
                  LOGGER.warn(count++ + " : " + file.getName());
                  final Resource fileResource = KieServices.Factory.get().getResources().newFileSystemResource(file);
                  KieUtil.getKieBuilderFromResources(kieBaseTestConfiguration, true, fileResource);
                  LOGGER.warn("done : " + file.getName());
              }
      
          }
      }
      

      Attachments

        Issue Links

          Activity

            People

              rhn-support-tkobayas Toshiya Kobayashi
              rhn-support-tkobayas Toshiya Kobayashi
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: