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

KieScanner does not initialize if missing to locate a kjar dependency of test scope

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Minor
    • 7.0.0.Final
    • 6.2.0.Final, 6.3.0.Final
    • None
    • None
    • Hide

      Steps to reproduce

      Project: onlyfor-test-dep
      mvn clean install
      
      Project: test-deps
      mvn clean deploy 
      
      Simulate the test dependency being not resolvable

      Now remove the "com.acme:onlyfor-test-dep" depedency from the local .m2 maven repo.
      This step is important to simulate another runtime environment which does NOT have access to this depedency - and shall not be needed, this only used is in scope "test".

      Project: run_test_deps

      compile and run java main of : com.acme.run_test_deps.App

      Stacktrace below.

      Please notice that NPE causes the call to kieServices.newKieScanner( kContainer ); will NOT return an instance of KieScanner.

      2016-02-03 17:50:25,648 INFO  [com.acme.run_test_deps.App] (main) start
      2016-02-03 17:50:25,677 DEBUG [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (main) KieModule Lookup. ReleaseId com.acme:test-deps:LATEST was not in cache, checking classpath
      2016-02-03 17:50:25,677 DEBUG [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (main) KieModule Lookup. ReleaseId com.acme:test-deps:LATEST was not in cache, checking maven repository
      [WARNING] The POM for com.acme:onlyfor-test-dep:jar:1.0.0-SNAPSHOT is missing, no dependency information available
      2016-02-03 17:50:29,197 INFO  [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (main) KieModule was added: ZipKieModule[releaseId=com.acme:test-deps:1.0.0-SNAPSHOT,file=C:\Users\mmortari\.m2\repository\com\acme\test-deps\1.0.0-SNAPSHOT\test-deps-1.0.0-SNAPSHOT.jar]
      2016-02-03 17:50:30,539 DEBUG [org.kie.api.builder.KieScanner] (main) org.drools:drools-core:jar:6.2.0.Final resolved to  C:\Users\mmortari\.m2\repository\org\drools\drools-core\6.2.0.Final\drools-core-6.2.0.Final.jar
      2016-02-03 17:50:30,540 DEBUG [org.kie.api.builder.KieScanner] (main) org.mvel:mvel2:jar:2.2.4.Final resolved to  C:\Users\mmortari\.m2\repository\org\mvel\mvel2\2.2.4.Final\mvel2-2.2.4.Final.jar
      2016-02-03 17:50:30,541 DEBUG [org.kie.api.builder.KieScanner] (main) log4j:log4j:jar:1.2.17 resolved to  C:\Users\mmortari\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar
      2016-02-03 17:50:30,542 DEBUG [org.kie.api.builder.KieScanner] (main) com.google.protobuf:protobuf-java:jar:2.5.0 resolved to  C:\Users\mmortari\.m2\repository\com\google\protobuf\protobuf-java\2.5.0\protobuf-java-2.5.0.jar
      2016-02-03 17:50:30,543 DEBUG [org.kie.api.builder.KieScanner] (main) org.kie:kie-internal:jar:6.2.0.Final resolved to  C:\Users\mmortari\.m2\repository\org\kie\kie-internal\6.2.0.Final\kie-internal-6.2.0.Final.jar
      2016-02-03 17:50:30,544 DEBUG [org.kie.api.builder.KieScanner] (main) com.thoughtworks.xstream:xstream:jar:1.4.7 resolved to  C:\Users\mmortari\.m2\repository\com\thoughtworks\xstream\xstream\1.4.7\xstream-1.4.7.jar
      2016-02-03 17:50:30,545 DEBUG [org.kie.api.builder.KieScanner] (main) org.slf4j:slf4j-api:jar:1.7.2 resolved to  C:\Users\mmortari\.m2\repository\org\slf4j\slf4j-api\1.7.2\slf4j-api-1.7.2.jar
      2016-02-03 17:50:30,546 DEBUG [org.kie.api.builder.KieScanner] (main) org.drools:drools-compiler:jar:6.2.0.Final resolved to  C:\Users\mmortari\.m2\repository\org\drools\drools-compiler\6.2.0.Final\drools-compiler-6.2.0.Final.jar
      2016-02-03 17:50:31,310 WARN  [org.kie.scanner.MavenRepository] (main) Unable to resolve artifact: com.acme:onlyfor-test-dep:1.0.0-SNAPSHOT
      org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact com.acme:onlyfor-test-dep:jar:1.0.0-SNAPSHOT in internalmirror (http://localhost:8081/nexus/content/groups/public/)
      	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
      	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
      	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
      	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)
      	at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:216)
      	at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:205)
      	at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:201)
      	at org.kie.scanner.ArtifactResolver.resolveArtifact(ArtifactResolver.java:51)
      	at org.kie.scanner.KieRepositoryScannerImpl.indexAtifacts(KieRepositoryScannerImpl.java:330)
      	at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:73)
      	at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:115)
      	at com.acme.run_test_deps.App.main(App.java:20)
      Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact com.acme:onlyfor-test-dep:jar:1.0.0-SNAPSHOT in internalmirror (http://localhost:8081/nexus/content/groups/public/)
      	at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:39)
      	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
      	at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
      	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
      	at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
      	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
      	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
      	... 11 more
      Exception in thread "main" java.lang.NullPointerException
      	at org.kie.scanner.KieRepositoryScannerImpl.indexAtifacts(KieRepositoryScannerImpl.java:331)
      	at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:73)
      	at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:115)
      	at com.acme.run_test_deps.App.main(App.java:20)
      
      Show
      Steps to reproduce Project: onlyfor-test-dep mvn clean install Project: test-deps mvn clean deploy Simulate the test dependency being not resolvable Now remove the "com.acme:onlyfor-test-dep" depedency from the local .m2 maven repo. This step is important to simulate another runtime environment which does NOT have access to this depedency - and shall not be needed, this only used is in scope "test". Project: run_test_deps compile and run java main of : com.acme.run_test_deps.App Stacktrace below. Please notice that NPE causes the call to kieServices.newKieScanner( kContainer ); will NOT return an instance of KieScanner. 2016-02-03 17:50:25,648 INFO [com.acme.run_test_deps.App] (main) start 2016-02-03 17:50:25,677 DEBUG [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (main) KieModule Lookup. ReleaseId com.acme:test-deps:LATEST was not in cache, checking classpath 2016-02-03 17:50:25,677 DEBUG [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (main) KieModule Lookup. ReleaseId com.acme:test-deps:LATEST was not in cache, checking maven repository [WARNING] The POM for com.acme:onlyfor-test-dep:jar:1.0.0-SNAPSHOT is missing, no dependency information available 2016-02-03 17:50:29,197 INFO [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (main) KieModule was added: ZipKieModule[releaseId=com.acme:test-deps:1.0.0-SNAPSHOT,file=C:\Users\mmortari\.m2\repository\com\acme\test-deps\1.0.0-SNAPSHOT\test-deps-1.0.0-SNAPSHOT.jar] 2016-02-03 17:50:30,539 DEBUG [org.kie.api.builder.KieScanner] (main) org.drools:drools-core:jar:6.2.0.Final resolved to C:\Users\mmortari\.m2\repository\org\drools\drools-core\6.2.0.Final\drools-core-6.2.0.Final.jar 2016-02-03 17:50:30,540 DEBUG [org.kie.api.builder.KieScanner] (main) org.mvel:mvel2:jar:2.2.4.Final resolved to C:\Users\mmortari\.m2\repository\org\mvel\mvel2\2.2.4.Final\mvel2-2.2.4.Final.jar 2016-02-03 17:50:30,541 DEBUG [org.kie.api.builder.KieScanner] (main) log4j:log4j:jar:1.2.17 resolved to C:\Users\mmortari\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar 2016-02-03 17:50:30,542 DEBUG [org.kie.api.builder.KieScanner] (main) com.google.protobuf:protobuf-java:jar:2.5.0 resolved to C:\Users\mmortari\.m2\repository\com\google\protobuf\protobuf-java\2.5.0\protobuf-java-2.5.0.jar 2016-02-03 17:50:30,543 DEBUG [org.kie.api.builder.KieScanner] (main) org.kie:kie-internal:jar:6.2.0.Final resolved to C:\Users\mmortari\.m2\repository\org\kie\kie-internal\6.2.0.Final\kie-internal-6.2.0.Final.jar 2016-02-03 17:50:30,544 DEBUG [org.kie.api.builder.KieScanner] (main) com.thoughtworks.xstream:xstream:jar:1.4.7 resolved to C:\Users\mmortari\.m2\repository\com\thoughtworks\xstream\xstream\1.4.7\xstream-1.4.7.jar 2016-02-03 17:50:30,545 DEBUG [org.kie.api.builder.KieScanner] (main) org.slf4j:slf4j-api:jar:1.7.2 resolved to C:\Users\mmortari\.m2\repository\org\slf4j\slf4j-api\1.7.2\slf4j-api-1.7.2.jar 2016-02-03 17:50:30,546 DEBUG [org.kie.api.builder.KieScanner] (main) org.drools:drools-compiler:jar:6.2.0.Final resolved to C:\Users\mmortari\.m2\repository\org\drools\drools-compiler\6.2.0.Final\drools-compiler-6.2.0.Final.jar 2016-02-03 17:50:31,310 WARN [org.kie.scanner.MavenRepository] (main) Unable to resolve artifact: com.acme:onlyfor-test-dep:1.0.0-SNAPSHOT org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact com.acme:onlyfor-test-dep:jar:1.0.0-SNAPSHOT in internalmirror (http: //localhost:8081/nexus/content/groups/ public /) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:216) at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:205) at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:201) at org.kie.scanner.ArtifactResolver.resolveArtifact(ArtifactResolver.java:51) at org.kie.scanner.KieRepositoryScannerImpl.indexAtifacts(KieRepositoryScannerImpl.java:330) at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:73) at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:115) at com.acme.run_test_deps.App.main(App.java:20) Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact com.acme:onlyfor-test-dep:jar:1.0.0-SNAPSHOT in internalmirror (http: //localhost:8081/nexus/content/groups/ public /) at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:39) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355) at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581) at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) ... 11 more Exception in thread "main" java.lang.NullPointerException at org.kie.scanner.KieRepositoryScannerImpl.indexAtifacts(KieRepositoryScannerImpl.java:331) at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:73) at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:115) at com.acme.run_test_deps.App.main(App.java:20)
    • NEW
    • NEW

    Description

      I will attach PR for proposal of patch for KieRepositoryScannerImpl.
      I will attach reproducer code.

      Suppose a kjar has a test scope dependency which may not be resolvable at runtime; the KieContainer will be created correctly (warning raised in log) but the initialization of the KieScanner fail with NPE.

      Expected behavior: also the KieScanner shall be able to initialize if the KieContainer is working correctly.

      Attachments

        Issue Links

          Activity

            People

              mfusco@redhat.com Mario Fusco
              mmortari@redhat.com Matteo Mortari
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: