jenkinsci / jenkinsci/active-directory-plugin

[JENKINS-34435] REST API returns error when attempting to check lock status

Open
#477 4 comments 0 reactions 0 assignees View on GitHub
component:active-directory-plugin imported-jira-issue priority:major resolution:unresolved
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("", "");

 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

Page generated: Apr 25, 2016 11:33:11 AMREST APIJenkins ver. 1.643
#

########################################################################

---
Originally reported by dweintraub, imported from: REST API returns error when attempting to check lock status


  • status: Open
  • priority: Major
  • component(s): active-directory-plugin
  • label(s): rest
  • resolution: Unresolved
  • votes: 1
  • watchers: 3
  • imported: 2025-12-07

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 Speed

0 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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.