{"action":"created","issue":{"url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/issues/34","repository_url":"https://api.github.com/repos/jenkinsci/active-directory-plugin","labels_url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/issues/34/labels{/name}","comments_url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/issues/34/comments","events_url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/issues/34/events","html_url":"https://github.com/jenkinsci/active-directory-plugin/pull/34","id":155231777,"number":34,"title":"[JENKINS-34426] Fix to handle SECURITY-243","user":{"login":"fbelzunc","id":3898648,"avatar_url":"https://avatars.githubusercontent.com/u/3898648?v=3","gravatar_id":"","url":"https://api.github.com/users/fbelzunc","html_url":"https://github.com/fbelzunc","followers_url":"https://api.github.com/users/fbelzunc/followers","following_url":"https://api.github.com/users/fbelzunc/following{/other_user}","gists_url":"https://api.github.com/users/fbelzunc/gists{/gist_id}","starred_url":"https://api.github.com/users/fbelzunc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fbelzunc/subscriptions","organizations_url":"https://api.github.com/users/fbelzunc/orgs","repos_url":"https://api.github.com/users/fbelzunc/repos","events_url":"https://api.github.com/users/fbelzunc/events{/privacy}","received_events_url":"https://api.github.com/users/fbelzunc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2016-05-17T10:58:03Z","updated_at":"2016-05-17T12:44:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/pulls/34","html_url":"https://github.com/jenkinsci/active-directory-plugin/pull/34","diff_url":"https://github.com/jenkinsci/active-directory-plugin/pull/34.diff","patch_url":"https://github.com/jenkinsci/active-directory-plugin/pull/34.patch"},"body":"# Stacktrace\r\n\r\n```\r\nFailed to retrieve user <user>\r\nhudson.plugins.active_directory.CacheAuthenticationException: Authentication failed because there was a problem caching user <user>; nested exception is com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:340)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:199)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:141)\r\n\tat org.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:122)\r\n\tat org.acegisecurity.providers.ProviderManager.doAuthentication(ProviderManager.java:200)\r\n\tat org.acegisecurity.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:47)\r\n\tat org.acegisecurity.ui.webapp.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:74)\r\n\tat org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:252)\r\n\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\r\n\tat jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)\r\n\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\r\n\tat org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)\r\n\tat hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)\r\n\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\r\n\tat hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)\r\n\tat hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)\r\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\r\n\tat org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)\r\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\r\n\tat hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)\r\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\r\n\tat org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)\r\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\r\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)\r\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\r\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)\r\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)\r\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)\r\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)\r\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\r\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)\r\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\r\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\r\n\tat org.eclipse.jetty.server.Server.handle(Server.java:499)\r\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)\r\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)\r\n\tat org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)\r\n\tat winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\nCaused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load\r\n\tat com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2234)\r\n\tat com.google.common.cache.LocalCache.get(LocalCache.java:3965)\r\n\tat com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:232)\r\n\t... 40 more\r\nCaused by: java.lang.IllegalStateException: Recursive load\r\n\tat com.google.common.base.Preconditions.checkState(Preconditions.java:145)\r\n\tat com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2330)\r\n\tat com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2320)\r\n\tat com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)\r\n\tat com.google.common.cache.LocalCache.get(LocalCache.java:3965)\r\n\tat com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:232)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:199)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider.retrieveUser(ActiveDirectoryUnixAuthenticationProvider.java:141)\r\n\tat hudson.plugins.active_directory.AbstractActiveDirectoryAuthenticationProvider.loadUserByUsername(AbstractActiveDirectoryAuthenticationProvider.java:54)\r\n\tat hudson.plugins.active_directory.ActiveDirectorySecurityRealm.loadUserByUsername(ActiveDirectorySecurityRealm.java:731)\r\n\tat hudson.model.User$UserIDCanonicalIdResolver.resolveCanonicalId(User.java:1048)\r\n\tat hudson.model.User.get(User.java:394)\r\n\tat hudson.model.User.get(User.java:363)\r\n\tat hudson.model.User.get(User.java:483)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUserDetail.getJenkinsUser(ActiveDirectoryUserDetail.java:177)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUserDetail.updateUserInfo(ActiveDirectoryUserDetail.java:188)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider$1.call(ActiveDirectoryUnixAuthenticationProvider.java:315)\r\n\tat hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider$1.call(ActiveDirectoryUnixAuthenticationProvider.java:232)\r\n\tat com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4767)\r\n\tat com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)\r\n\tat com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)\r\n\tat com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)\r\n\tat com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)\r\n\t... 43 more\r\n```\r\n\r\nand it is produced because of SECURITY-243 - https://github.com/jenkinsci/jenkins/blob/jenkins-2.3/core/src/main/java/hudson/model/User.java#L1048 - Which is producing a recursive load.\r\n\r\n@reviewbybees @andresrc @jtnord "},"comment":{"url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/issues/comments/219706154","html_url":"https://github.com/jenkinsci/active-directory-plugin/pull/34#issuecomment-219706154","issue_url":"https://api.github.com/repos/jenkinsci/active-directory-plugin/issues/34","id":219706154,"user":{"login":"andresrc","id":500424,"avatar_url":"https://avatars.githubusercontent.com/u/500424?v=3","gravatar_id":"","url":"https://api.github.com/users/andresrc","html_url":"https://github.com/andresrc","followers_url":"https://api.github.com/users/andresrc/followers","following_url":"https://api.github.com/users/andresrc/following{/other_user}","gists_url":"https://api.github.com/users/andresrc/gists{/gist_id}","starred_url":"https://api.github.com/users/andresrc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andresrc/subscriptions","organizations_url":"https://api.github.com/users/andresrc/orgs","repos_url":"https://api.github.com/users/andresrc/repos","events_url":"https://api.github.com/users/andresrc/events{/privacy}","received_events_url":"https://api.github.com/users/andresrc/received_events","type":"User","site_admin":false},"created_at":"2016-05-17T12:44:35Z","updated_at":"2016-05-17T12:44:35Z","body":"@fbelzunc I would keep the original fix then and include a `TODO` to update it when the baseline is incremented "}}