jenkinsci / jenkinsci/active-directory-plugin
[JENKINS-34435] REST API returns error when attempting to check lock status
- Dominant language
- Java
- Stars
- 53
- Forks
- 115
- PR merge metrics
- No merged PRs in 30d
Description
We use the REST API to do several tasks such as setting the Build Description, returning the build description, setting the lock state of the build, and returning the lock state of the build. We had Jenkins 1.641 and everything was okay. We updated to Jenkins 1.643 and now get the following error:
+ curl -utcruse:swordfish http://jenkins.travelclick.net/jenkins/job/Admin-CoreServices-5.5.5/50/toggleLogKeep
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 -::- -::- -::- 0
100 13287 0 13287 0 0 115k 0 -::- -::- -::- 115k
Jenkins <span class="error">[Jenkins]</span>var isRunAsTest=false; var rootURL="/jenkins"; var resURL="/jenkins/static/8607eae1";crumb.init("", "");Skip to content
Oops!
A problem occurred while processing the request.
Please check our bug tracker to see if a similar problem has already been reported.
If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem.
If you think this is a new issue, please file a new issue.
When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins.
The users list might be also useful in understanding what has happened.
Stack trace
hudson.plugins.active_directory.CacheAuthenticationException: Authentication failed caching user svc-relmag2; nested exception is com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:194)
at hudson.plugins.active_directory.AbstractActiveDirectoryAuthenticationProvider.loadUserByUsername(AbstractActiveDirectoryAuthenticationProvider.java:54)
at jenkins.security.ImpersonatingUserDetailsService.loadUserByUsername(ImpersonatingUserDetailsService.java:32)
at hudson.model.User.impersonate(User.java:309)
at jenkins.security.BasicHeaderApiTokenAuthenticator.authenticate(BasicHeaderApiTokenAuthenticator.java:31)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:79)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2234)
at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:136)
... 36 more
Caused by: java.lang.IllegalStateException: Recursive load
at com.google.common.base.Preconditions.checkState(Preconditions.java:145)
at com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2330)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2320)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:302)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:269)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.access$100(ActiveDirectoryUnixAuthenticationProvider.java:72)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider$1.call(ActiveDirectoryUnixAuthenticationProvider.java:147)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider$1.call(ActiveDirectoryUnixAuthenticationProvider.java:136)
at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4767)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
... 39 more
########################################################################
---
Originally reported by dweintraub, imported from: REST API returns error when attempting to check lock status
Raw content of original issue
We use the REST API to do several tasks such as setting the Build Description, returning the build description, setting the lock state of the build, and returning the lock state of the build. We had Jenkins 1.641 and everything was okay. We updated to Jenkins 1.643 and now get the following error:
+ curl -utcruse:swordfish http://jenkins.travelclick.net/jenkins/job/Admin-CoreServices-5.5.5/50/toggleLogKeep
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed0 0 0 0 0 0 0 0 -
::- -::- -::- 0
100 13287 0 13287 0 0 115k 0 -::- -::- -::- 115k<!DOCTYPE html><html><head resURL="/jenkins/static/8607eae1">
<title>Jenkins [Jenkins]</title><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/css/style.css" /><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/css/color.css" /><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/css/responsive-grid.css" /><link rel="shortcut icon" type="image/vnd.microsoft.icon" href="/jenkins/static/8607eae1/favicon.ico" /><link color="black" rel="mask-icon" href="/jenkins/images/mask-icon.svg" /><script>var isRunAsTest=false; var rootURL="/jenkins"; var resURL="/jenkins/static/8607eae1";</script><script src="/jenkins/static/8607eae1/scripts/prototype.js" type="text/javascript"></script><script src="/jenkins/static/8607eae1/scripts/behavior.js" type="text/javascript"></script><script src='/jenkins/adjuncts/8607eae1/org/kohsuke/stapler/bind.js' type='text/javascript'></script><script src="/jenkins/static/8607eae1/scripts/yui/yahoo/yahoo-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/dom/dom-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/event/event-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/animation/animation-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/dragdrop/dragdrop-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/container/container-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/connection/connection-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/datasource/datasource-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/autocomplete/autocomplete-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/menu/menu-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/element/element-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/button/button-min.js"></script><script src="/jenkins/static/8607eae1/scripts/yui/storage/storage-min.js"></script><script src="/jenkins/static/8607eae1/scripts/hudson-behavior.js" type="text/javascript"></script><script src="/jenkins/static/8607eae1/scripts/sortable.js" type="text/javascript"></script><script>crumb.init("", "");</script><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/scripts/yui/container/assets/container.css" /><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/scripts/yui/assets/skins/sam/skin.css" /><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/scripts/yui/container/assets/skins/sam/container.css" /><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/scripts/yui/button/assets/skins/sam/button.css" /><link rel="stylesheet" type="text/css" href="/jenkins/static/8607eae1/scripts/yui/menu/assets/skins/sam/menu.css" /><meta name="ROBOTS" content="INDEX,NOFOLLOW" /></head><body data-model-type="hudson.model.Hudson" id="jenkins" data-version="jenkins-1.643" class="yui-skin-sam jenkins-1.643"><a href="#skip2content" class="skiplink">Skip to content</a><div id="page-head"><div id="header"><div class="logo"><a id="jenkins-home-link" href="/jenkins/"><img id="jenkins-head-icon" alt="title" src="/jenkins/static/8607eae1/images/headshot.png" /><img id="jenkins-name-icon" height="34" alt="title" width="139" src="/jenkins/static/8607eae1/images/title.png" /></a></div><div class="login"> <a href="/jenkins/login?from=%2Fjenkins%2Fjob%2FAdmin-CoreServices-5.5.5%2F50%2FtoggleLogKeep"><b>log in</b></a></div><div class="searchbox hidden-xs"><form style="position:relative;" name="search" action="/jenkins/search/" class="no-json" method="get"><div id="search-box-minWidth"></div><div id="search-box-sizer"></div><div id="searchform"><input id="search-box" placeholder="search" name="q" class="has-default-text" /> <a href="http://wiki.jenkins-ci.org/display/JENKINS/Search+Box"><img style="width: 16px; height: 16px; " class="icon-help icon-sm" src="/jenkins/static/8607eae1/images/16x16/help.png" /></a><div id="search-box-completion"></div><script>createSearchBox("/jenkins/search/");</script></div></form></div></div><div id="breadcrumbBar"><tr id="top-nav"><td id="left-top-nav" colspan="2"><link rel='stylesheet' href='/jenkins/adjuncts/8607eae1/lib/layout/breadcrumbs.css' type='text/css' /><script src='/jenkins/adjuncts/8607eae1/lib/layout/breadcrumbs.js' type='text/javascript'></script><div class="top-sticker noedge"><div class="top-sticker-inner"><div id="right-top-nav"></div><ul id="breadcrumbs"><li class="item"><a class="model-link inside" href="/jenkins/">Jenkins</a></li><li class="children" href="/jenkins/"></li></ul><div id="breadcrumb-menu-target"></div></div></div></td></tr></div></div><div id="page-body" class="clear"><div id="side-panel"><div class="task"><a class="task-icon-link" href="http://jenkins-ci.org/"><img style="width: 24px; height: 24px; width: 24px; height: 24px; margin: 2px;" class="icon-next icon-md" src="/jenkins/static/8607eae1/images/24x24/next.png" /></a> <a class="task-link" href="http://jenkins-ci.org/">Jenkins project</a></div><div class="task"><a class="task-icon-link" href="http://issues.jenkins-ci.org/"><img style="width: 24px; height: 24px; width: 24px; height: 24px; margin: 2px;" class="icon-gear2 icon-md" src="/jenkins/static/8607eae1/images/24x24/gear2.png" /></a> <a class="task-link" href="http://issues.jenkins-ci.org/">Bug tracker</a></div><div class="task"><a class="task-icon-link" href="http://jenkins-ci.org/content/mailing-lists"><img style="width: 24px; height: 24px; width: 24px; height: 24px; margin: 2px;" class="icon-search icon-md" src="/jenkins/static/8607eae1/images/24x24/search.png" /></a> <a class="task-link" href="http://jenkins-ci.org/content/mailing-lists">Mailing Lists</a></div><div class="task"><a class="task-icon-link" href="https://twitter.com/jenkinsci"><img style="width: 24px; height: 24px; width: 24px; height: 24px; margin: 2px;" class="icon-user icon-md" src="/jenkins/static/8607eae1/images/24x24/user.png" /></a> <a class="task-link" href="https://twitter.com/jenkinsci">Twitter: @jenkinsci</a></div></div><div id="main-panel"><a name="skip2content"></a><h1 style="text-align: center"><img height="179" width="154" src="/jenkins/static/8607eae1/images/rage.png" /><span style="font-size:50px"> Oops!</span></h1><div id="error-description"><p>A problem occurred while processing the request.
Please check <a href="https://issues.jenkins-ci.org/">our bug tracker</a> to see if a similar problem has already been reported.
If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem.
If you think this is a new issue, please file a new issue.
When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins.
<a href="http://jenkins-ci.org/content/mailing-lists">The users list</a> might be also useful in understanding what has happened.</p><h2>Stack trace</h2><pre style="margin:2em; clear:both">hudson.plugins.active_directory.CacheAuthenticationException: Authentication failed caching user svc-relmag2; nested exception is com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:194)
at hudson.plugins.active_directory.AbstractActiveDirectoryAuthenticationProvider.loadUserByUsername(AbstractActiveDirectoryAuthenticationProvider.java:54)
at jenkins.security.ImpersonatingUserDetailsService.loadUserByUsername(ImpersonatingUserDetailsService.java:32)
at hudson.model.User.impersonate(User.java:309)
at jenkins.security.BasicHeaderApiTokenAuthenticator.authenticate(BasicHeaderApiTokenAuthenticator.java:31)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:79)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2234)
at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:136)
... 36 more
Caused by: java.lang.IllegalStateException: Recursive load
at com.google.common.base.Preconditions.checkState(Preconditions.java:145)
at com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2330)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2320)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:302)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:269)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.access$100(ActiveDirectoryUnixAuthenticationProvider.java:72)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider$1.call(ActiveDirectoryUnixAuthenticationProvider.java:147)
at hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider$1.call(ActiveDirectoryUnixAuthenticationProvider.java:136)
at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4767)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
... 39 more
</pre></div></div></div><footer><div class="container-fluid"><div class="row"><div class="col-md-6" id="footer"></div><div class="col-md-18"><span class="page_generated">Page generated: Apr 25, 2016 11:33:11 AM</span><span class="rest_api"><a href="api/">REST API</a></span><span class="jenkins_ver"><a href="http://jenkins-ci.org/">Jenkins ver. 1.643</a></span></div></div></div></footer></body></html>#
########################################################################
- environment:
Linux RHEL 7 under Tomcat 7. Running Jenkins 1.643
Contributor guide
Research direction
Start by reproducing the REST request with the reported Jenkins versions and read ActiveDirectoryUnixAuthenticationProvider.java at line 194, then follow the authentication stack through BasicHeaderApiTokenAuthenticator. Done means the lock-status request no longer returns the shown authentication error; capture the result and relevant stack trace for comparison.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, authentication, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100
