Closed timja closed 7 years ago
I am able to duplicate the null pointer exception in h.filterDescriptors without any message from the git plugin. I believe this is a problem in core, though I could easily be wrong.
Steps I take to see the problem:
$ git clone https://github.com/MarkEWaite/docker JENKINS-40545
$ cd JENKINS-40545
$ git checkout -b lts-with-plugins -t origin/lts-with-plugins
$ docker build -t jenkins:JENKINS-40545 . $ docker run -i --rm --publish 8080:8080 --publish 50000:50000 --publish 18022:18022 -t jenkins:JENKINS-40545
The console log reports:
Feb 06, 2017 6:55:04 PM hudson.ExpressionFactory2$JexlExpression evaluate WARNING: Caught exception evaluating: h.filterDescriptors(it,attrs.descriptors) in /job/Git-Folder/job/git-plugin-freestyle-multi-branch/configure. Reason: java.lang.NullPointerException java.lang.NullPointerException at hudson.model.DescriptorVisibilityFilter.apply(DescriptorVisibilityFilter.java:72) at hudson.Functions.filterDescriptors(Functions.java:1790) at sun.reflect.GeneratedMethodAccessor437.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258) at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51) at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80) at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74) at org.apache.commons.jelly.tags.core.CoreTagLibrary$3.run(CoreTagLibrary.java:134) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
I see the same null pointer exception if I try to configure a folder inside a folder. For example, the problem happens if I use the following steps:
I don't see that null pointer exception when I configure a freestyle job inside a folder.
Just in case this behavior changes from later modifications to my lts-with-plugins branch, I placed a git tag named "JENKINS-40545" in that repository.
Probably a bug in some plugin, but TBD which. DescriptorVisibilityFilter should look for null descriptors and log a message but continue. And whatever code is creating this descriptor list should be checking for nulls earlier and logging something more specific.
We have the same warnings for the plugins filters when opening the Jenkins System configure page.
WARNING: Caught exception evaluating: h.filterDescriptors(it,attrs.descriptors) in /jenkins/configure. Reason: java.lang.NullPointerException
java.lang.NullPointerException
at hudson.model.DescriptorVisibilityFilter.apply(DescriptorVisibilityFilter.java:72)
at hudson.Functions.filterDescriptors(Functions.java:1790)
Here is the Jenkins war version:
The issue appears after an update of the Jenkins pipeline plugins and dependancies:
Have the same issue at my Jenkins when navigating to the /configure section
core version: 2.46.2 (LTS)
OS: CentOS Linux release 7.3.1611 (kernel 4.1)
plugins:
ace-editor: 1.1 analysis-core: 1.84 ansicolor: 0.4.2 ant: 1.2 antisamy-markup-formatter: 1.1 artifactdeployer: 0.33 artifactory: 2.4.6 authentication-tokens: 1.3 aws-credentials: 1.19 aws-java-sdk: 1.11.68 blueocean: 1.0.1 blueocean-autofavorite: 0.7 blueocean-commons: 1.0.1 blueocean-config: 1.0.1 blueocean-dashboard: 1.0.1 blueocean-display-url: 2.0 blueocean-events: 1.0.1 blueocean-git-pipeline: 1.0.1 blueocean-github-pipeline: 1.0.1 blueocean-i18n: 1.0.1 blueocean-jwt: 1.0.1 blueocean-personalization: 1.0.1 blueocean-pipeline-api-impl: 1.0.1 blueocean-pipeline-editor: 0.2.0 blueocean-rest: 1.0.1 blueocean-rest-impl: 1.0.1 blueocean-web: 1.0.1 bouncycastle-api: 2.16.0 branch-api: 2.0.8 build-history-metrics-plugin: 1.2 build-name-setter: 1.5.1 build-pipeline-plugin: 1.4.8 build-timeout: 1.15 build-user-vars-plugin: 1.4 buildtriggerbadge: 2.2 built-on-column: 1.1 checkstyle: 3.47 ci-game: 1.23 claim: 2.9 cloudbees-folder: 6.0.3 cobertura: 1.9.7 conditional-buildstep: 1.3.3 copy-to-slave: 1.4.4 copyartifact: 1.37 credentials: 2.1.13 credentials-binding: 1.11 cvs: 2.11 dashboard-view: 2.9.10 delivery-pipeline-plugin: 0.9.7 description-setter: 1.10 display-url-api: 2.0 docker-commons: 1.6 docker-workflow: 1.10 durable-task: 1.13 ec2: 1.36 email-ext: 2.57.2 embeddable-build-status: 1.8 envinject: 2.0 external-monitor-job: 1.4 extra-columns: 1.18 favorite: 2.0.4 file-leak-detector: 1.4 flexible-publish: 0.15.2 git: 3.3.0 git-client: 2.4.5 git-server: 1.6 github: 1.26.2 github-api: 1.85 github-branch-source: 2.0.5 github-oauth: 0.24 github-organization-folder: 1.6 gradle: 1.26 greenballs: 1.15 groovy: 2.0 groovy-postbuild: 2.2.2 handlebars: 1.1.1 hidden-parameter: 0.0.4 htmlpublisher: 1.11 icon-shim: 2.0.3 jackson2-api: 2.7.3 javadoc: 1.1 jenkins-multijob-plugin: 1.24 JiraTestResultReporter: 1.0.4 jobConfigHistory: 2.12 join: 1.16 jquery: 1.11.2-0 jquery-detached: 1.2.1 junit: 1.20 ldap: 1.11 lenientshutdown: 1.1.1 logstash: 1.1.1 mailer: 1.20 mapdb-api: 1.0.6.0 matrix-auth: 1.5 matrix-combinations-parameter: 1.0.9 matrix-project: 1.7.1 maven-plugin: 2.15.1 metrics: 3.1.2.9 momentjs: 1.1.1 multiple-scms: 0.5 naginator: 1.17.2 nested-view: 1.14 node-iterator-api: 1.5.0 nodelabelparameter: 1.5.1 notification: 1.10 pam-auth: 1.3 parameterized-trigger: 2.29 pipeline-build-step: 2.5 pipeline-github-lib: 1.0 pipeline-graph-analysis: 1.3 pipeline-input-step: 2.5 pipeline-milestone-step: 1.3.1 pipeline-model-api: 1.1.4 pipeline-model-declarative-agent: 1.1.1 pipeline-model-definition: 1.1.4 pipeline-model-extensions: 1.1.4 pipeline-rest-api: 2.6 pipeline-stage-step: 2.2 pipeline-stage-tags-metadata: 1.1.4 pipeline-stage-view: 2.6 plain-credentials: 1.4 plot: 1.9 postbuild-task: 1.8 postbuildscript: 0.17 pubsub-light: 1.8 rebuild: 1.25 resource-disposer: 0.6 rich-text-publisher-plugin: 1.3 run-condition: 1.0 s3: 0.8 sauce-ondemand: 1.158 sbt: 1.5 scm-api: 2.1.1 scoverage: 1.3.0 script-security: 1.27 scriptler: 2.9 shelve-project-plugin: 1.5 shiningpanda: 0.22 sidebar-link: 1.7 slack: 1.8.1 sse-gateway: 1.15 ssh: 2.4 ssh-agent: 1.15 ssh-credentials: 1.13 ssh-slaves: 1.16 structs: 1.6 subversion: 2.5.6 tap: 2.1 test-results-analyzer: 0.2.3 timestamper: 1.7.2 token-macro: 2.1 translation: 1.10 validating-string-parameter: 2.3 variant: 1.1 violation-columns: 1.6 violations: 0.7.11 windows-slaves: 1.0 workflow-aggregator: 2.4 workflow-api: 2.12 workflow-basic-steps: 2.3 workflow-cps: 2.29 workflow-cps-global-lib: 2.7 workflow-durable-task-step: 2.10 workflow-job: 2.10 workflow-multibranch: 2.14 workflow-scm-step: 2.4 workflow-step-api: 2.9 workflow-support: 2.14 ws-cleanup: 0.32
As I understand the problem, it is the Iterable
Diagnostics proposed
Code changed in jenkins
User: Oliver Gondža
Path:
core/src/main/java/hudson/model/DescriptorVisibilityFilter.java
test/src/test/java/hudson/model/DescriptorVisibilityFilterTest.java
test/src/test/resources/hudson/model/DescriptorVisibilityFilterTest/Jenkins40545/index.jelly
http://jenkins-ci.org/commit/jenkins/1167430a716c2750efa810974c9e1a513478c4a8
Log:
[FIXED JENKINS-40545] Diagnose NPE in DescriptorVisibilityFilter.apply
Before:
Jun 15, 2017 8:29:06 AM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: h.filterDescriptors(it, no_descriptors_here).size() in /jenkins/jenkins40545/. Reason: java.lang.NullPointerException
java.lang.NullPointerException
at hudson.model.DescriptorVisibilityFilter.apply(DescriptorVisibilityFilter.java:72)
at hudson.Functions.filterDescriptors(Functions.java:1863)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258)
...
After:
Jun 15, 2017 12:10:43 PM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: h.filterDescriptors(it, no_descriptors_here).size() in /jenkins/jenkins40545/. Reason: java.lang.NullPointerException: Descriptor list is null for context 'class hudson.model.DescriptorVisibilityFilterTest$Jenkins40545' in thread 'Handling GET /jenkins/jenkins40545/ from 127.0.0.1 : Jetty Thread Pool DescriptorVisibilityFilterTest/Jenkins40545/index.jelly'
java.lang.NullPointerException: Descriptor list is null for context 'class hudson.model.DescriptorVisibilityFilterTest$Jenkins40545' in thread 'Handling GET /jenkins/jenkins40545/ from 127.0.0.1 : Jetty Thread Pool DescriptorVisibilityFilterTest/Jenkins40545/index.jelly'
at hudson.model.DescriptorVisibilityFilter.apply(DescriptorVisibilityFilter.java:73)
at hudson.Functions.filterDescriptors(Functions.java:1863)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258)
...
Code changed in jenkins
User: Oliver Gondža
Path:
core/src/main/java/hudson/model/DescriptorVisibilityFilter.java
test/src/test/java/hudson/model/DescriptorVisibilityFilterTest.java
test/src/test/resources/hudson/model/DescriptorVisibilityFilterTest/Jenkins40545/index.jelly
http://jenkins-ci.org/commit/jenkins/70f80e97c7fcdf112812923c6439773628239a53
Log:
Merge pull request #2919 from olivergondza/visiblity-filter
[FIXED JENKINS-40545] Diagnose NPE in DescriptorVisibilityFilter.apply
Compare: https://github.com/jenkinsci/jenkins/compare/f7d6b6f89fd8...70f80e97c7fc
markewaite can you rerun with olivergondza’s patch so that we can see where the actual culprit lies?
I tested with version 2.69. My use case was at launch of a fresh install (with quite a bit of configuration) loading the /configure endpoint through Manage Jenkins -> Configure System. It looks like my problem may be related to JENKINS-45085 (multi-scm), here is the interesting part of the console output:
WARNING: Caught exception evaluating: h.filterDescriptors(it,attrs.descriptors) in /configure. Reason: java.lang.NullPointerException: Descriptor list is null for context 'class hudson.model.Hudson' in thread 'Handling GET /configure from 172.18.0.1 : RequestHandlerThread[#1] Jenkins/configure.jelly GlobalLibraries/config.jelly LibraryConfiguration/config.jelly SCMRetriever/DescriptorImpl/config.jelly MultiSCM/DescriptorImpl/config.jelly' java.lang.NullPointerException: Descriptor list is null for context 'class hudson.model.Hudson' in thread 'Handling GET /configure from 172.18.0.1 : RequestHandlerThread[#1] Jenkins/configure.jelly GlobalLibraries/config.jelly LibraryConfiguration/config.jelly SCMRetriever/DescriptorImpl/config.jelly MultiSCM/DescriptorImpl/config.jelly'
The problem seems to be in multiple-scms plugin:
https://github.com/jenkinsci/multiple-scms-plugin/blob/6e7231283defa716d547b2f4f56e9b8db52b67be/src/main/resources/org/jenkinsci/plugins/multiplescms/MultiSCM/config.jelly#L10
https://github.com/jenkinsci/multiple-scms-plugin/blob/6e7231283defa716d547b2f4f56e9b8db52b67be/src/main/java/org/jenkinsci/plugins/multiplescms/MultiSCM.java#L217-L229
Further investigation is needed.
Jesse has verified my assumption in https://issues.jenkins-ci.org/browse/JENKINS-39598?focusedCommentId=306856&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-306856. Which makes this a duplicate.
[Duplicates: JENKINS-39598]
A null pointer exception is reported by the jelly code when I try to configure a folder in a folder or a pipeline in a folder.
The message is "Caught exception evaluating: h.filterDescriptors(it,attrs.descriptors) in /configure. Reason: java.lang.NullPointerException"
Refer to comment later in this report for steps markewaite used to duplicate the problem.
Originally reported by haiwang, imported from: NPE in console log when I configure a folder in a folder or a pipeline in a folder