Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-21785

Check for changes in folders linked via svn:externals fails due to missing credentials

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Component/s: subversion-plugin
    • Labels:
      None
    • Environment:
      Windows 7 x64 for both hosts and slaves, Linux for both hosts and slaves
    • Similar Issues:

      Description

      Note from the commenters:

      This bug has been resolved in Subversion Plugin 2.3. You just need to reconfigure your jobs. You have to add all SVN Credentials as "Additional Credentials" in the job config with correct realm notation "<proto://server:port> SvnRealmName". Please read the comments below.

      • Find out the SVN realm name on your client like this:
        svn --no-auth-cache --config-dir invalid info proto://host:port/path/to/repo
      • The SVN realm name is set in your SVN Server config svnserve.conf (realm = realm-name). See man pages here.
      • If you are using svn+ssh your realm will be in the "svn+ssh://server-name" format. No port, no pointy brackets, no extra realm name.
      • Add "Additional Credentials" for *all* repositories involved at the checkout - also for repositories which are referenced by SVN externals.

      Original Bug Description:

      We use svn:externals to map folders of the same repository into the project folders. The 2.1 version of the plugin fails to check for changes and reports a "svn: E200015: No credential to try. Authentication failed" error in the stack trace.

      hudson.util.IOException2: revision check failed on https://svn.dummyserver.org/svn/Data/trunk/Dummy
      	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
      	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
      	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:736)
      	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:897)
      	at hudson.model.AbstractProject.checkout(AbstractProject.java:1411)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:651)
      	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:560)
      	at hudson.model.Run.execute(Run.java:1670)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:231)
      Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/Data/trunk/Dummy failed
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
      	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
      	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
      	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
      	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
      	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
      	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
      	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
      	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
      	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
      	... 11 more
      Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
      	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
      	... 29 more
      

        Attachments

          Issue Links

            Activity

            Hide
            aboks Arnout Boks added a comment -

            I also encounter this issue, on a Debian machine in my case.

            The strange thing is that if, after such a "No credential to try" failure, the next (manually started) build always seems to run fine.

            I have not listed all externals as separate 'modules' in my job configuration, but I have configured additional credentials for the realm to which all externals belong.

            Show
            aboks Arnout Boks added a comment - I also encounter this issue, on a Debian machine in my case. The strange thing is that if, after such a "No credential to try" failure, the next (manually started) build always seems to run fine. I have not listed all externals as separate 'modules' in my job configuration, but I have configured additional credentials for the realm to which all externals belong.
            Hide
            simabeis Marcel Beister added a comment -

            It seems that the error only occurs on some of the svn:externals, but I can't find a pattern. A manual next build did not solve the issue for me.

            Show
            simabeis Marcel Beister added a comment - It seems that the error only occurs on some of the svn:externals, but I can't find a pattern. A manual next build did not solve the issue for me.
            Hide
            kolonkom Matthias Kolonko added a comment -

            There happened to be an issue before that is solved now.
            It seems like the externals have not been taken intor account when fixing this.

            Show
            kolonkom Matthias Kolonko added a comment - There happened to be an issue before that is solved now. It seems like the externals have not been taken intor account when fixing this.
            Hide
            dvnieuwe Davy Van Nieuwenborgh added a comment -

            I notice the same in our setup. After an upgrade, none of our jobs work correctly as we get "Authentication failures" randomly on one or more externals.
            When reverting to 1.54, everything works fine again.
            Very annoying that after a simple upgrade your complete installation does not work anymore ...

            Show
            dvnieuwe Davy Van Nieuwenborgh added a comment - I notice the same in our setup. After an upgrade, none of our jobs work correctly as we get "Authentication failures" randomly on one or more externals. When reverting to 1.54, everything works fine again. Very annoying that after a simple upgrade your complete installation does not work anymore ...
            Hide
            josesa Jose Sa added a comment -

            I see similar issue with some externals (not all) with following exception:

            Feb 18, 2014 7:19:48 PM hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl onNotify
            WARNING: Failed to handle Subversion commit notification
            org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svnroot/repo/path/to/external failed
                    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
                    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
                    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
                    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
                    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
                    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
                    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
                    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148)
                    at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2700)
                    at hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl.onNotify(SubversionRepositoryStatus.java:202)
                    at hudson.scm.SubversionRepositoryStatus.doNotifyCommit(SubversionRepositoryStatus.java:136)
                    at sun.reflect.GeneratedMethodAccessor348.invoke(Unknown Source)
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                    at java.lang.reflect.Method.invoke(Method.java:616)
                    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
                    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
                    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
                    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120)
                    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
                    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
                    at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
                    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
                    at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
                    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
                    at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
                    at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
                    at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
                    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:203)
                    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181)
                    at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:86)
                    at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:90)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
                    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
                    at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227)
                    at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
                    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
                    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
                    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
                    at java.lang.Thread.run(Thread.java:679)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
                    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
                    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
                    at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
                    at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35)
                    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
                    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
                    ... 84 more
            Feb 18, 2014 7:19:48 PM hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl onNotify
            WARNING: No subversion jobs using repository: 9ab88d41-efc2-4aad-9281-006de71726b0
            

            I've reviewed credentials and even forced the same credentialsId in all subversion jobs using groovy script but still the stack traces show up. It seems as if from error message the protocol+server+port is missing as it doesn't look like an url, could the exception print also the job or referent url that refers to that "external" to help debug ?

            Show
            josesa Jose Sa added a comment - I see similar issue with some externals (not all) with following exception: Feb 18, 2014 7:19:48 PM hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl onNotify WARNING: Failed to handle Subversion commit notification org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svnroot/repo/path/to/external failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148) at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2700) at hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl.onNotify(SubversionRepositoryStatus.java:202) at hudson.scm.SubversionRepositoryStatus.doNotifyCommit(SubversionRepositoryStatus.java:136) at sun.reflect.GeneratedMethodAccessor348.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) at org.kohsuke.stapler.Stapler.service(Stapler.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) at winstone.ServletConfiguration.execute(ServletConfiguration.java:248) at winstone.RequestDispatcher.forward(RequestDispatcher.java:333) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:203) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181) at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:86) at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:90) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at winstone.RequestDispatcher.forward(RequestDispatcher.java:331) at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227) at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang. Thread .run( Thread .java:679) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 84 more Feb 18, 2014 7:19:48 PM hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl onNotify WARNING: No subversion jobs using repository: 9ab88d41-efc2-4aad-9281-006de71726b0 I've reviewed credentials and even forced the same credentialsId in all subversion jobs using groovy script but still the stack traces show up. It seems as if from error message the protocol+server+port is missing as it doesn't look like an url, could the exception print also the job or referent url that refers to that "external" to help debug ?
            Hide
            t_stahl Thorsten Stahl added a comment -

            I've got the same error since we updated the Subversion-Plugin from 1.54 to 2.2.
            I found a pattern in my case. This only happens with our repository trigger and only with jobs, which have a special svn:externals definition.
            The svn:externals are defined absolute (not relative) and refer another repository on the same host. 'Add additional credentials' don't work in all experiments with any kind of name-permutation in the 'Realm' field.
            Other jobs with svn:externals relative to their own repository works fine, even if i start the problem jobs manually.
            As work around i add the regarding external-url to the 'Source Code Management' section in the job configuration page and set the the repository depth to 'empty' and the 'Local module directory' to 'dummy_xxx'.

            Show
            t_stahl Thorsten Stahl added a comment - I've got the same error since we updated the Subversion-Plugin from 1.54 to 2.2. I found a pattern in my case. This only happens with our repository trigger and only with jobs, which have a special svn:externals definition. The svn:externals are defined absolute (not relative) and refer another repository on the same host. 'Add additional credentials' don't work in all experiments with any kind of name-permutation in the 'Realm' field. Other jobs with svn:externals relative to their own repository works fine, even if i start the problem jobs manually. As work around i add the regarding external-url to the 'Source Code Management' section in the job configuration page and set the the repository depth to 'empty' and the 'Local module directory' to 'dummy_xxx'.
            Hide
            josesa Jose Sa added a comment -

            I had enable the polling from master option on startup "-Dhudson.scm.SubversionSCM.pollFromMaster=true" and after disabling it and restarting server, rechecking the polling from the slave instead of master now all urls fail to check with same stack trace.

            svn checkout doesn't seem to have a problem.

            Tested with Jenkins LTS 1.532.2 and svn plugin 2.2

            Show
            josesa Jose Sa added a comment - I had enable the polling from master option on startup "-Dhudson.scm.SubversionSCM.pollFromMaster=true" and after disabling it and restarting server, rechecking the polling from the slave instead of master now all urls fail to check with same stack trace. svn checkout doesn't seem to have a problem. Tested with Jenkins LTS 1.532.2 and svn plugin 2.2
            Hide
            josesa Jose Sa added a comment -

            After some additional testing it seems that subversion plugin is relying on host svn client configuration looking into $HOME/.subversion for the credentials instead of of using the ones configured in Jenkins.

            When I used a Windows slave that didn't had a svn client installed or removed .subversion on linux slaves or master the problem to check on all urls is shown in scm polling log.

            Show
            josesa Jose Sa added a comment - After some additional testing it seems that subversion plugin is relying on host svn client configuration looking into $HOME/.subversion for the credentials instead of of using the ones configured in Jenkins. When I used a Windows slave that didn't had a svn client installed or removed .subversion on linux slaves or master the problem to check on all urls is shown in scm polling log.
            Hide
            wh WH added a comment -

            Similar problem here (Jenkins LTS 1.532.2 and Subversion Plugin 2.2):
            Project1 has svn:externals property "^/project2/trunk/directory directory".

            Checking out svn+ssh://server/repo/project1/trunk@3895 at revision 3895
            A         xxx.xxx
            ...
             U        .
            Fetching 'svn+ssh://server/repo/project2/trunk/directory' at -1 into 'C:\slavedir\workspace\jobdir\f99eb302\directory'
            A         directory\yyy.yyy
            ...
             U        directory
            At revision 3895
            At revision 3895
            hudson.util.IOException2: revision check failed on svn+ssh://server/repo/project2/trunk/directory
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1411)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
            	at hudson.model.Run.execute(Run.java:1665)
            	at hudson.matrix.MatrixRun.run(MatrixRun.java:146)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:246)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNSSHConnector.open(SVNSSHConnector.java:77)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:77)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1252)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
            	... 11 more
            
            Show
            wh WH added a comment - Similar problem here (Jenkins LTS 1.532.2 and Subversion Plugin 2.2): Project1 has svn:externals property "^/project2/trunk/directory directory". Checking out svn+ssh: //server/repo/project1/trunk@3895 at revision 3895 A xxx.xxx ... U . Fetching 'svn+ssh: //server/repo/project2/trunk/directory' at -1 into 'C:\slavedir\workspace\jobdir\f99eb302\directory' A directory\yyy.yyy ... U directory At revision 3895 At revision 3895 hudson.util.IOException2: revision check failed on svn+ssh: //server/repo/project2/trunk/directory at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899) at hudson.model.AbstractProject.checkout(AbstractProject.java:1411) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561) at hudson.model.Run.execute(Run.java:1665) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:246) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.svn.SVNSSHConnector.open(SVNSSHConnector.java:77) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:77) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1252) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177) ... 11 more
            Hide
            chikigai chikigai added a comment -

            Same issue here with Jenkins 1.552 and Subversion Plugin 2.2 using Windows7 slaves.
            All of our jobs configured to access SVN repositories via the svn:externals property are failing due to authentication failures.
            Externals set to paths within the same repository and with different repositories both fail.
            Setting "Additional Credentials" makes no difference whatsoever.

            Show
            chikigai chikigai added a comment - Same issue here with Jenkins 1.552 and Subversion Plugin 2.2 using Windows7 slaves. All of our jobs configured to access SVN repositories via the svn:externals property are failing due to authentication failures. Externals set to paths within the same repository and with different repositories both fail. Setting "Additional Credentials" makes no difference whatsoever.
            Hide
            abarychev Andrei Barychev added a comment -

            Same problem, Jenkins 1.552, SVN plugin 2.2, on RH Linux and Windows 7/2003.

            Checkout works fine, but polling and change log querying randomly fail. There is no difference whether a build was started manually or triggered.

            All svn:externals reference the same repo (^). The failures happen at random places; one external is queried successfully now and then fails on the next run.

            Show
            abarychev Andrei Barychev added a comment - Same problem, Jenkins 1.552, SVN plugin 2.2, on RH Linux and Windows 7/2003. Checkout works fine, but polling and change log querying randomly fail. There is no difference whether a build was started manually or triggered. All svn:externals reference the same repo (^). The failures happen at random places; one external is queried successfully now and then fails on the next run.
            Hide
            chikigai chikigai added a comment -

            Some additional information.
            There's definitely some randomness in the authentication failures, but I've spotted a case where it occurs very frequently - svn:externals set to point to a file in the same repository.

            Show
            chikigai chikigai added a comment - Some additional information. There's definitely some randomness in the authentication failures, but I've spotted a case where it occurs very frequently - svn:externals set to point to a file in the same repository.
            Hide
            soukupmi michael soukup added a comment -

            same problem
            found this bug-entry too late, so I opened another: JENKINS-22078

            Show
            soukupmi michael soukup added a comment - same problem found this bug-entry too late, so I opened another: JENKINS-22078
            Hide
            soukupmi michael soukup added a comment - - edited

            seems additional credentials for this specific external (same credentials as for the root project with the realm being the url to the external repo) made it work, but I have no intention of doing this for all my 50 projects...
            edit: This did not work at all, the test case i made for it did that (see workaround)

            workaround that works for me at the moment:

            • create new project that watches the changes in my library (the external that is in common for all and fails with the revision check, repository depth=empty)
            • configure other project as triggered by this new one

            this seems to make the revision check work properly

            Show
            soukupmi michael soukup added a comment - - edited seems additional credentials for this specific external (same credentials as for the root project with the realm being the url to the external repo) made it work, but I have no intention of doing this for all my 50 projects... edit: This did not work at all, the test case i made for it did that (see workaround) workaround that works for me at the moment: create new project that watches the changes in my library (the external that is in common for all and fails with the revision check, repository depth=empty) configure other project as triggered by this new one this seems to make the revision check work properly
            Hide
            josesa Jose Sa added a comment -

            what I'm currently doing is setup a subversion specific domain with all svn hosts listed (using wildcards and independent of protocol) with a using a single credential account to access all svn repositories.

            Then I get that credential ID from browser url which is something like "6c9118bf-622a-498d-b244-3c3382d73a39"

            To apply that credential to all jobs matching a regular expression I use the following groovy script:

            /*** BEGIN META {
              "name" : "scm_svn_credentials",
              "comment" : "Check/Fix subversion credentials in jobs",
              "parameters" : [ 'CREDENTIALS', 'JOBS_PAT' ],
              "core": "1.532.2",
              "authors" : [
                { name : "Jose Miguel Sa" }
              ]
            } END META**/
            
            import hudson.scm.*
            
            /** set input values **/
            //String CREDENTIALS = "6c9118bf-622a-498d-b244-3c3382d73a39";
            //String JOBS_PAT = ".*";
            
            /** bulk apply changes **/
            def updateSvn(job, CREDENTIALS) {
                def locations = [];
                for (loc in job.scm.getLocations()) {
                    if ( CREDENTIALS != "" ) loc = loc.withCredentialsId(CREDENTIALS);
                    locations.add(loc);
                }
                job.setScm(new SubversionSCM(locations,
                    job.scm.workspaceUpdater,
                    job.scm.browser,
                    job.scm.excludedRegions,
                    job.scm.excludedUsers,
                    job.scm.excludedRevprop,
                    job.scm.excludedCommitMessages,
                    job.scm.includedRegions,
                    job.scm.ignoreDirPropChanges,
                    job.scm.filterChangelog,
                    job.scm.additionalCredentials));
            }
            
            def printSvnLoc(loc) {
                println "  Location: $loc.remote";
                println "    local: $loc.local";
                println "    credentialsId: $loc.credentialsId";
                println "    depthOption: $loc.depthOption";
                println "    ignoreExternalsOption: $loc.ignoreExternalsOption";
            }
            
            def instance = hudson.model.Hudson.getInstance();
            def jobs = instance.items;
            for (job in jobs.findAll{ it.name =~ /^${JOBS_PAT}$/ }) {
                if (job instanceof hudson.model.ExternalJob) continue;
                if (job.scm instanceof hudson.scm.SubversionSCM) {
                    println "\n[ job: $job.name ]";
            
                   // Comment the following line when ready to efectivelly apply changes
                /*
                    updateSvn(job, CREDENTIALS);
                //*/
            
                    // check current values
                    for (loc in job.scm.getLocations()) {
                        printSvnLoc(loc);
                    }
                    println "  workspaceUpdater: $job.scm.workspaceUpdater";
                    println "  browser: $job.scm.browser";
                    println "  excludedRegions: $job.scm.excludedRegions";
                    println "  excludedUsers: $job.scm.excludedUsers";
                    println "  excludedRevprop: $job.scm.excludedRevprop";
                    println "  excludedCommitMessages: $job.scm.excludedCommitMessages";
                    println "  includedRegions: $job.scm.includedRegions";
                    println "  ignoreDirPropChanges: $job.scm.ignoreDirPropChanges";
                    println "  filterChangelog: $job.scm.filterChangelog";
                    println "  additionalCredentials: $job.scm.additionalCredentials";
                }
            }
            

            Which aplies correctly the same credential to all svn locations, but still the actual changelog checks are failing because instead of relying on svnkit implementation it is delegating those to svn client installed in the account running the scm polling process, in Jenkins if polling from master is set, or from slaves otherwise.

            Show
            josesa Jose Sa added a comment - what I'm currently doing is setup a subversion specific domain with all svn hosts listed (using wildcards and independent of protocol) with a using a single credential account to access all svn repositories. Then I get that credential ID from browser url which is something like "6c9118bf-622a-498d-b244-3c3382d73a39" To apply that credential to all jobs matching a regular expression I use the following groovy script: /*** BEGIN META { "name" : "scm_svn_credentials" , "comment" : "Check/Fix subversion credentials in jobs" , "parameters" : [ 'CREDENTIALS', 'JOBS_PAT' ], "core" : "1.532.2" , "authors" : [ { name : "Jose Miguel Sa" } ] } END META**/ import hudson.scm.* /** set input values **/ // String CREDENTIALS = "6c9118bf-622a-498d-b244-3c3382d73a39" ; // String JOBS_PAT = ".*" ; /** bulk apply changes **/ def updateSvn(job, CREDENTIALS) { def locations = []; for (loc in job.scm.getLocations()) { if ( CREDENTIALS != "" ) loc = loc.withCredentialsId(CREDENTIALS); locations.add(loc); } job.setScm( new SubversionSCM(locations, job.scm.workspaceUpdater, job.scm.browser, job.scm.excludedRegions, job.scm.excludedUsers, job.scm.excludedRevprop, job.scm.excludedCommitMessages, job.scm.includedRegions, job.scm.ignoreDirPropChanges, job.scm.filterChangelog, job.scm.additionalCredentials)); } def printSvnLoc(loc) { println " Location: $loc.remote" ; println " local: $loc.local" ; println " credentialsId: $loc.credentialsId" ; println " depthOption: $loc.depthOption" ; println " ignoreExternalsOption: $loc.ignoreExternalsOption" ; } def instance = hudson.model.Hudson.getInstance(); def jobs = instance.items; for (job in jobs.findAll{ it.name =~ /^${JOBS_PAT}$/ }) { if (job instanceof hudson.model.ExternalJob) continue ; if (job.scm instanceof hudson.scm.SubversionSCM) { println "\n[ job: $job.name ]" ; // Comment the following line when ready to efectivelly apply changes /* updateSvn(job, CREDENTIALS); //*/ // check current values for (loc in job.scm.getLocations()) { printSvnLoc(loc); } println " workspaceUpdater: $job.scm.workspaceUpdater" ; println " browser: $job.scm.browser" ; println " excludedRegions: $job.scm.excludedRegions" ; println " excludedUsers: $job.scm.excludedUsers" ; println " excludedRevprop: $job.scm.excludedRevprop" ; println " excludedCommitMessages: $job.scm.excludedCommitMessages" ; println " includedRegions: $job.scm.includedRegions" ; println " ignoreDirPropChanges: $job.scm.ignoreDirPropChanges" ; println " filterChangelog: $job.scm.filterChangelog" ; println " additionalCredentials: $job.scm.additionalCredentials" ; } } Which aplies correctly the same credential to all svn locations, but still the actual changelog checks are failing because instead of relying on svnkit implementation it is delegating those to svn client installed in the account running the scm polling process, in Jenkins if polling from master is set, or from slaves otherwise.
            Hide
            danielbeck Daniel Beck added a comment - - edited

            I think I fixed the case of exceptions during post-commit notifications (notifyCommit):

            https://github.com/daniel-beck/subversion-plugin/tree/notify-commit-external-credentials
            https://github.com/daniel-beck/subversion-plugin/commit/aabd40a550461b08296ff3e971c80915ba22d9e0
            (not a PR because it's not nice enough; feel free to build on this)

            Have never seen the specific exception stack trace from the original report, so I don't know whether that is also resolved (but I doubt it).


            To be specific, this is the case I resolved with this change:

            1. Set up an SVN repo, anywhere. Can be locally file://...; no auth required.
            2. Add an external somewhere that required credentials for access (below I used a repo accessed via HTTPS)
            3. Check out the first repo
            4. Build once to get the 'WARNING: The following realms could not be authenticated'
            5. Configure additional credential for the realm it complains about, build again
            6. No warning this time, external gets checked out
            7. Script console:

            def p = Jenkins.instance.getItemByFullName('jobname')
            p.scm.getProjectLocations(p).findAll { it.remote.startsWith('https://') }.each { println it.getUUID(p) }

            Result

            org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/... failed
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148)
            at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2707)
            at (user script)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            ... 89 more 
            Show
            danielbeck Daniel Beck added a comment - - edited I think I fixed the case of exceptions during post-commit notifications ( notifyCommit ): https://github.com/daniel-beck/subversion-plugin/tree/notify-commit-external-credentials https://github.com/daniel-beck/subversion-plugin/commit/aabd40a550461b08296ff3e971c80915ba22d9e0 (not a PR because it's not nice enough; feel free to build on this) Have never seen the specific exception stack trace from the original report, so I don't know whether that is also resolved (but I doubt it). To be specific, this is the case I resolved with this change: 1. Set up an SVN repo, anywhere. Can be locally file:// ...; no auth required. 2. Add an external somewhere that required credentials for access (below I used a repo accessed via HTTPS) 3. Check out the first repo 4. Build once to get the 'WARNING: The following realms could not be authenticated' 5. Configure additional credential for the realm it complains about, build again 6. No warning this time, external gets checked out 7. Script console: def p = Jenkins.instance.getItemByFullName('jobname') p.scm.getProjectLocations(p).findAll { it.remote.startsWith('https: //') }.each { println it.getUUID(p) } Result org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/... failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148) at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2707) at (user script) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 89 more
            Hide
            joce jocelyn fournier added a comment - - edited

            Same issue here on linux debian, svn:externals on a local directory inside the same project (../../client/application/class class) , and it fails randomly.

            hudson.util.IOException2: revision check failed on http://****/client/application/class
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580)
            	at hudson.model.Run.execute(Run.java:1676)
            	at hudson.matrix.MatrixBuild.run(MatrixBuild.java:304)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:231)
            	at hudson.model.OneOffExecutor.run(OneOffExecutor.java:43)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /*****/client/application/class failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
            	... 12 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 30 more
            Finished: FAILURE
            
            Show
            joce jocelyn fournier added a comment - - edited Same issue here on linux debian, svn:externals on a local directory inside the same project (../../client/application/class class) , and it fails randomly. hudson.util.IOException2: revision check failed on http: //****/client/application/class at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899) at hudson.model.AbstractProject.checkout(AbstractProject.java:1414) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580) at hudson.model.Run.execute(Run.java:1676) at hudson.matrix.MatrixBuild.run(MatrixBuild.java:304) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) at hudson.model.OneOffExecutor.run(OneOffExecutor.java:43) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /*****/client/application/class failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177) ... 12 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 30 more Finished: FAILURE
            Hide
            danielbeck Daniel Beck added a comment -

            Jocelyn: That particular issue looks like you can resolve it by adding an "additional credentials" entry below the list of module locations with a valid credential.

            For realm, enter e.g.

            <https://server:443> Subversion Authentication

            It's the protocol, host, and port of the SVN service. The realm name (Subversion Authentication in my example is what your web browser shows in the password dialog when trying to access that URL.

            Show
            danielbeck Daniel Beck added a comment - Jocelyn: That particular issue looks like you can resolve it by adding an "additional credentials" entry below the list of module locations with a valid credential. For realm, enter e.g. <https: //server:443> Subversion Authentication It's the protocol, host, and port of the SVN service. The realm name ( Subversion Authentication in my example is what your web browser shows in the password dialog when trying to access that URL.
            Hide
            joce jocelyn fournier added a comment -

            Thanks Daniel, so far it seems it works perfectly

            Show
            joce jocelyn fournier added a comment - Thanks Daniel, so far it seems it works perfectly
            Hide
            eakraly Pavel Punsky added a comment -

            Same here - after upgrade to plugin 2.2

            Show
            eakraly Pavel Punsky added a comment - Same here - after upgrade to plugin 2.2
            Hide
            danielbeck Daniel Beck added a comment -

            Does anyone experiencing the problem "No credential to try. Authentication failed" not fall in either of the following categories:

            If so, please add a comment and be really specific about the circumstances the problem appears in, as well as what happens (full stack trace, Jenkins log, ...).

            Show
            danielbeck Daniel Beck added a comment - Does anyone experiencing the problem " No credential to try. Authentication failed " not fall in either of the following categories: External requires "additional credential" to be specified even though it's in the same repo as one of the configured module locations (click here for configuration instructions) External does not pick up credentials in post-commit hook (click here for detailed description and patched plugin that should resolve the issue) If so, please add a comment and be really specific about the circumstances the problem appears in, as well as what happens (full stack trace, Jenkins log, ...).
            Hide
            soukupmi michael soukup added a comment - - edited

            adding this to all the job config.xml files (copied from one job where I entered the realm and credentials through the config tab)

            <additionalCredentials>
               <hudson.scm.SubversionSCM_-AdditionalCredentials>
                 <realm>&lt;https://[ServerName]:8443&gt; VisualSVN Server</realm>
                 <credentialsId>....</credentialsId>
               </hudson.scm.SubversionSCM_-AdditionalCredentials>
            </additionalCredentials>
            

            and restarting the server worked for me
            thank you, Daniel


            note: this equals entering

            <https://[ServerName]:8443> VisualSVN Server
            

            in each job configuration as realm, but was much easier to do

            Show
            soukupmi michael soukup added a comment - - edited adding this to all the job config.xml files (copied from one job where I entered the realm and credentials through the config tab) <additionalCredentials> <hudson.scm.SubversionSCM_-AdditionalCredentials> <realm> &lt;https://[ServerName]:8443&gt; VisualSVN Server </realm> <credentialsId> .... </credentialsId> </hudson.scm.SubversionSCM_-AdditionalCredentials> </additionalCredentials> and restarting the server worked for me thank you, Daniel note: this equals entering <https: //[ServerName]:8443> VisualSVN Server in each job configuration as realm, but was much easier to do
            Hide
            chikigai chikigai added a comment -

            Daniel: I am still experiencing authentication failures even with the additional credentials set.
            My setup has Jenkins 1.552 and Subversion Plugin 2.2 (All Windows7 master/slaves).
            There are several jobs checking out repositories with SVN externals set. All fail randomly.
            One of the simpler jobs checks out a working directory from a repository with the following structure:

            RepoA
            ├── ProjectA
            │      └── trunk
            │            ├── FolderA
            │            └── FolderB
            └── ProjectB
                   └── trunk
                          ├── FolderA
                          └── FolderB <--- SVN External (^/ProjectA/trunk/FolderB)
            

            ProjectB/trunk is set to be checked out, and the authentication fails on the SVN external.
            I have added "Additional Credentials" with the realm set for RepoA, but still get "No credential to try. Authentication failed" as in the following stack trace:

            hudson.util.IOException2: revision check failed on http://xxxxx/svn/ProjectA/trunk/FolderB
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1411)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
            	at hudson.model.Run.execute(Run.java:1665)
            	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:246)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/xxxxx/svn/ProjectA/trunk/FolderB failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
            	... 11 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 29 more
            
            Show
            chikigai chikigai added a comment - Daniel: I am still experiencing authentication failures even with the additional credentials set. My setup has Jenkins 1.552 and Subversion Plugin 2.2 (All Windows7 master/slaves). There are several jobs checking out repositories with SVN externals set. All fail randomly. One of the simpler jobs checks out a working directory from a repository with the following structure: RepoA ├── ProjectA │ └── trunk │ ├── FolderA │ └── FolderB └── ProjectB └── trunk ├── FolderA └── FolderB <--- SVN External (^/ProjectA/trunk/FolderB) ProjectB/trunk is set to be checked out, and the authentication fails on the SVN external. I have added "Additional Credentials" with the realm set for RepoA, but still get "No credential to try. Authentication failed" as in the following stack trace: hudson.util.IOException2: revision check failed on http: //xxxxx/svn/ProjectA/trunk/FolderB at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899) at hudson.model.AbstractProject.checkout(AbstractProject.java:1411) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561) at hudson.model.Run.execute(Run.java:1665) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:246) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/xxxxx/svn/ProjectA/trunk/FolderB failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177) ... 11 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 29 more
            Hide
            soukupmi michael soukup added a comment -

            @chikigai:
            the mistake I at first made was to enter the complete url to the external subproject as realm.
            you have to enter it like in the screenshot I attached:

            make sure to include the pointy brackets and to enter the title the server responses when you access it through the web interface (as Daniel said in comment-196363)
            Our server provides this dialog
            so "VisualSVN Server" is what I entered after the host-url (which is the one under the white rectangle).

            This works for us and as we have a repository structure very similar to yours hopefully also works for you.

            Show
            soukupmi michael soukup added a comment - @ chikigai : the mistake I at first made was to enter the complete url to the external subproject as realm. you have to enter it like in the screenshot I attached: make sure to include the pointy brackets and to enter the title the server responses when you access it through the web interface (as Daniel said in comment-196363 ) Our server provides this dialog so "VisualSVN Server" is what I entered after the host-url (which is the one under the white rectangle). This works for us and as we have a repository structure very similar to yours hopefully also works for you.
            Hide
            zzymyn Ivan Neeson added a comment -

            Does anybody know how to find out what realm to enter if you're using the "svn://" protocol, not http?

            Show
            zzymyn Ivan Neeson added a comment - Does anybody know how to find out what realm to enter if you're using the "svn://" protocol, not http?
            Hide
            danielbeck Daniel Beck added a comment -

            Alternative ways to find out your auth realm:

            Command line SVN:

            svn --no-auth-cache --config-dir invalid info proto://host:port/path/to/repo will show the auth realm, possibly after asking you to accept the certificate temporarily.

            $ svn --no-auth-cache --config-dir invalid info proto://host:port/path/to/repo
            Authentication realm: <proto://host:port> VisualSVN Server
            Password for 'danielbeck': 

            (invalid is the name of the directory – --config-dir – to get SVN client config from; in this case, should be non-existing dir, resulting in ignoring existing preferences like saved credentials). The dir will likely be created, just delete it afterwards.

            Check the server config

            If you use svnserve to serve the repo, check the realm directive in the [general] section of /path/to/repo/conf/svnserve.conf.

            Patch the Subversion plugin

            Unfortunately, logging is lacking in the current version of the plugin. This patch adds logging of URL and realm to auth attempts (logger hudson.scm.CredentialsSVNAuthenticationProviderImpl, level FINE):
            https://github.com/daniel-beck/subversion-plugin/commit/e210707cef0dd419af4c0e4f409f0a16ef942156

            Ask your SVN admin

            Seriously. They'll know. (If you're the admin, well, maybe you shouldn't be.)

            Show
            danielbeck Daniel Beck added a comment - Alternative ways to find out your auth realm: Command line SVN: svn --no-auth-cache --config-dir invalid info proto://host:port/path/to/repo will show the auth realm, possibly after asking you to accept the certificate temporarily. $ svn --no-auth-cache --config-dir invalid info proto: //host:port/path/to/repo Authentication realm: <proto: //host:port> VisualSVN Server Password for 'danielbeck': ( invalid is the name of the directory – --config-dir – to get SVN client config from; in this case, should be non-existing dir, resulting in ignoring existing preferences like saved credentials). The dir will likely be created, just delete it afterwards. Check the server config If you use svnserve to serve the repo, check the realm directive in the [general] section of /path/to/repo/conf/svnserve.conf . Patch the Subversion plugin Unfortunately, logging is lacking in the current version of the plugin. This patch adds logging of URL and realm to auth attempts (logger hudson.scm.CredentialsSVNAuthenticationProviderImpl , level FINE ): https://github.com/daniel-beck/subversion-plugin/commit/e210707cef0dd419af4c0e4f409f0a16ef942156 Ask your SVN admin Seriously. They'll know. (If you're the admin, well, maybe you shouldn't be.)
            Hide
            chikigai chikigai added a comment -

            @michael soukup
            Thank you for the detailed description.
            However, I have already entered the realm as you have explained.
            As I have stated in my previous comments, the failures are very random.
            The authentication succeeds on some occasions, and fails on others.
            I've even had the authentication succeed on the external without any additional credentials on some occasions.
            Therefore, I am quite doubtful that the failures I am facing have anything to do with additional credentials.

            Show
            chikigai chikigai added a comment - @ michael soukup Thank you for the detailed description. However, I have already entered the realm as you have explained. As I have stated in my previous comments, the failures are very random. The authentication succeeds on some occasions, and fails on others. I've even had the authentication succeed on the external without any additional credentials on some occasions. Therefore, I am quite doubtful that the failures I am facing have anything to do with additional credentials.
            Hide
            danielbeck Daniel Beck added a comment -

            Chikigai: It's likely a specific set of circumstances you didn't determine yet.

            • Does it affect only certain projects?
            • Does it affect only builds executing on certain slaves?
            • Does it affect only certain actions (checkout, SVN post-commit hook, polling, ...)
            • Does it affect only builds using a clean (or pre-existing) workspace?
            • Does it affect only projects without existing builds?
            • ...

            if there's any variation in stack traces with the exception, posting those would be useful as well.

            For example, I didn't even notice this problem (affected were polling and post-commit hook; resolved by adding extra credentials and patching the plugin, respectively) at first, as manually started builds successfully checked out everything, including the external. It's just that no build was able to detect changes in the external location (+ tons of exceptions logged like this one).

            Show
            danielbeck Daniel Beck added a comment - Chikigai: It's likely a specific set of circumstances you didn't determine yet. Does it affect only certain projects? Does it affect only builds executing on certain slaves? Does it affect only certain actions (checkout, SVN post-commit hook, polling, ...) Does it affect only builds using a clean (or pre-existing) workspace? Does it affect only projects without existing builds? ... if there's any variation in stack traces with the exception, posting those would be useful as well. For example, I didn't even notice this problem (affected were polling and post-commit hook; resolved by adding extra credentials and patching the plugin, respectively) at first, as manually started builds successfully checked out everything, including the external. It's just that no build was able to detect changes in the external location (+ tons of exceptions logged like this one ).
            Hide
            chikigai chikigai added a comment -

            @Daniel Beck
            OK, here's some more info which hopefully would be of some use.
            Let me explain with some additions to the repository structure I used previously:

            RepoA
            ├── ProjectA
            │      └── trunk
            │            ├── FolderA
            │            └── FolderB
            │                    └── external.c
            └── ProjectB
                   └── trunk
                          ├── FolderA
                          │     └── internal.c
                          └── FolderB <--- SVN External (^/ProjectA/trunk/FolderB)
            

            I have two jobs where:
            [Job A]
            Checks out ProjectA/trunk and then triggers Job B. (I created this job since changes in "external.c" would not be picked and trigger Job B)

            [Job B]
            Checks out ProjectB/trunk and runs a build.
            Contains an additional credential as discussed in earlier comments.

            And now a list of build triggers I tried with results:
            [Job A + Manual trigger]
            Job A succeeds, Job B is triggered and succeeds.

            [Job B + Manual trigger]
            Job B succeeds.

            [Change/Commit "internal.c" + post-commit hook trigger]
            Job B succeeds.

            [Change/Commit "external.c" + post-commit hook trigger]
            Job A succeeds, Job B is triggered and fails with authentication failure on the SVN external.
            This failure occurs every single time via a post-commit hook trigger when "external.c" is commited.
            Stack trace is exactly the same as posted in comment-196434.

            Show
            chikigai chikigai added a comment - @ Daniel Beck OK, here's some more info which hopefully would be of some use. Let me explain with some additions to the repository structure I used previously: RepoA ├── ProjectA │ └── trunk │ ├── FolderA │ └── FolderB │ └── external.c └── ProjectB └── trunk ├── FolderA │ └── internal.c └── FolderB <--- SVN External (^/ProjectA/trunk/FolderB) I have two jobs where: [Job A] Checks out ProjectA/trunk and then triggers Job B. (I created this job since changes in "external.c" would not be picked and trigger Job B) [Job B] Checks out ProjectB/trunk and runs a build. Contains an additional credential as discussed in earlier comments. And now a list of build triggers I tried with results: [Job A + Manual trigger] Job A succeeds, Job B is triggered and succeeds. [Job B + Manual trigger] Job B succeeds. [Change/Commit "internal.c" + post-commit hook trigger] Job B succeeds. [Change/Commit "external.c" + post-commit hook trigger] Job A succeeds, Job B is triggered and fails with authentication failure on the SVN external. This failure occurs every single time via a post-commit hook trigger when "external.c" is commited. Stack trace is exactly the same as posted in comment-196434 .
            Hide
            alex_d_alex Alexander Alexeev added a comment -

            I've same problem after update to 1.554

            And I have workaround for this bug.
            I changed svn update option to
            "Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update'"

            Show
            alex_d_alex Alexander Alexeev added a comment - I've same problem after update to 1.554 And I have workaround for this bug. I changed svn update option to "Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update'"
            Hide
            soukupmi michael soukup added a comment -

            @Alexander: I tried that ("Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update'") today after updating to 1.554 - did not work.
            same response as usual:

            Started on 13.03.2014 08:41:58
            Received SCM poll call ...
            ERROR: Failed to check repository revision for https://[server]:8443/svn/IAB2.5/trunk/Library
            org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/IAB2.5/trunk/Library failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	...
            	at java.lang.Thread.run(Unknown Source)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            

            with the additional realm:

            Started on 13.03.2014 09:26:04
            Received SCM poll call on  for GATS on 13.03.2014 09:26:04
            https://[server]:8443/svn/IAB2.5/branches/...GATS is at revision 6.235
            https://[server]:8443/svn/IAB2.5/trunk/Library is at revision 7.106
            https://[server]:8443/svn/IAB2.5/Projekte/...GATS is at revision 6.935
            Done. Took 0,49 sec
            No changes
            
            Show
            soukupmi michael soukup added a comment - @Alexander: I tried that ( "Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update'" ) today after updating to 1.554 - did not work. same response as usual: Started on 13.03.2014 08:41:58 Received SCM poll call ... ERROR: Failed to check repository revision for https: //[server]:8443/svn/IAB2.5/trunk/Library org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/IAB2.5/trunk/Library failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) ... at java.lang. Thread .run(Unknown Source) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) with the additional realm: Started on 13.03.2014 09:26:04 Received SCM poll call on for GATS on 13.03.2014 09:26:04 https: //[server]:8443/svn/IAB2.5/branches/...GATS is at revision 6.235 https: //[server]:8443/svn/IAB2.5/trunk/Library is at revision 7.106 https: //[server]:8443/svn/IAB2.5/Projekte/...GATS is at revision 6.935 Done. Took 0,49 sec No changes
            Hide
            soukupmi michael soukup added a comment -

            @chikigai: you said

            I have two jobs where:
            [Job A]
            Checks out ProjectA/trunk and then triggers Job B. (I created this job since changes in "external.c" would not be picked and trigger Job B)

            [Job B]
            Checks out ProjectB/trunk and runs a build.
            Contains an additional credential as discussed in earlier comments.

            did you also try with entering the additional credentials for Job A, too?

            Show
            soukupmi michael soukup added a comment - @chikigai: you said I have two jobs where: [Job A] Checks out ProjectA/trunk and then triggers Job B. (I created this job since changes in "external.c" would not be picked and trigger Job B) [Job B] Checks out ProjectB/trunk and runs a build. Contains an additional credential as discussed in earlier comments. did you also try with entering the additional credentials for Job A, too?
            Hide
            chikigai chikigai added a comment -

            @michael soukup
            Yes, I tried with additional credentials for Job A and Job B still fails.
            If it worked however, I would be wondering how the credentials for one job would affect another.

            Show
            chikigai chikigai added a comment - @ michael soukup Yes, I tried with additional credentials for Job A and Job B still fails. If it worked however, I would be wondering how the credentials for one job would affect another.
            Hide
            danielbeck Daniel Beck added a comment -

            @~chikigai: Is the behavior independent of whether a workspace already exists, and independent of whether earlier builds exist? Please create new projects just with the SCM config if necessary. I'll try to take a look at this tomorrow or on the weekend if I know how to reliably reproduce the problem.

            Show
            danielbeck Daniel Beck added a comment - @~chikigai: Is the behavior independent of whether a workspace already exists, and independent of whether earlier builds exist? Please create new projects just with the SCM config if necessary. I'll try to take a look at this tomorrow or on the weekend if I know how to reliably reproduce the problem.
            Hide
            chikigai chikigai added a comment - - edited

            @Daniel Beck
            I created a repository exactly as posted in comment-196534.
            Also created fresh jobs for Job A & B which only perform a checkout. (Additional credentials added too)
            Here's what happened:

            [Change/Commit "external.c" + post-commit hook trigger]
            First time: Job A succeeds, Job B is triggered and succeeds.
            Second time and onwards: Job A succeeds, Job B is triggered and fails.

            I then deleted the workspace for Job B and tried again.
            Job B fails.

            I then deleted previous build related data and the workspace for job B and tried again.
            No problems first time and Job B fails from second time onwards.

            I then deleted previous build related data for job B and tried again. (left the workspace untouched)
            No problems first time and Job B fails from second time onwards.

            So with the fresh jobs and repository I used, it looks like previous build data of Job B is the failing factor.

            Show
            chikigai chikigai added a comment - - edited @ Daniel Beck I created a repository exactly as posted in comment-196534 . Also created fresh jobs for Job A & B which only perform a checkout. (Additional credentials added too) Here's what happened: [Change/Commit "external.c" + post-commit hook trigger] First time: Job A succeeds, Job B is triggered and succeeds. Second time and onwards: Job A succeeds, Job B is triggered and fails. I then deleted the workspace for Job B and tried again. Job B fails. I then deleted previous build related data and the workspace for job B and tried again. No problems first time and Job B fails from second time onwards. I then deleted previous build related data for job B and tried again. (left the workspace untouched) No problems first time and Job B fails from second time onwards. So with the fresh jobs and repository I used, it looks like previous build data of Job B is the failing factor.
            Hide
            soukupmi michael soukup added a comment -

            Our repository structure in the SVN looks like this:

            IAB2.5
              +-- trunk
              |     +-- Library
              |           +-- FolderA
              |           |     +-- externalA.c
              |           +-- FolderB
              |           |     +-- externalB.c
              |           +-- externalC.c
              |
              +-- branches
              |     +-- ProjectA
              |     |     +-- FolderA
              |     |     |     +-- external1.c
              |    	|     +-- FolderB
              |    	|     |     +-- external2.c
              |    ...    +-- external3.c
              |
              +-- Projects
                    +-- ProjectB       <--- Jenkins Job A - watched for svn changes
                    |     +-- FolderA  <--- SVN External (^/trunk/Library)
                    |     +-- FolderB  <--- SVN External (^/branches/ProjectA)
                    |     +-- FolderC
                    |           +-- internal.c
                    |
                    +-- ProjectB1      <--- Jenkins Job B - triggered by Job A
                    |     +-- FolderA  <--- SVN External (^/trunk/Library)
                    |     +-- FolderB  <--- SVN External (^/branches/ProjectA1)
                    |     +-- FolderC
                   ...          +-- internal.c
            

            Job A in Jenkins triggers on all SVN changes in the root Project, e.g.

            • externalA.c
            • externalB.c
            • external2.c
            • external3.c
            • internal.c

            --> they all trigger the checkout and rebuild of our ProjectB.
            So a change in your external.c should be able to trigger your Job B too, as there is a new revision number created for it on the commit.

            Also our ProjectB1 gets built by Job B which is started by Job A after it has finished.
            They all work well now (all Jobs with additional credentials set, though).

            Anyway, instead of post-commit hook trigger or any other hook we use svn polling (check repository every 1/4 hour). Could this be the reason why our setup works?

            Show
            soukupmi michael soukup added a comment - Our repository structure in the SVN looks like this: IAB2.5 +-- trunk | +-- Library | +-- FolderA | | +-- externalA.c | +-- FolderB | | +-- externalB.c | +-- externalC.c | +-- branches | +-- ProjectA | | +-- FolderA | | | +-- external1.c | | +-- FolderB | | | +-- external2.c | ... +-- external3.c | +-- Projects +-- ProjectB <--- Jenkins Job A - watched for svn changes | +-- FolderA <--- SVN External (^/trunk/Library) | +-- FolderB <--- SVN External (^/branches/ProjectA) | +-- FolderC | +-- internal.c | +-- ProjectB1 <--- Jenkins Job B - triggered by Job A | +-- FolderA <--- SVN External (^/trunk/Library) | +-- FolderB <--- SVN External (^/branches/ProjectA1) | +-- FolderC ... +-- internal.c Job A in Jenkins triggers on all SVN changes in the root Project, e.g. externalA.c externalB.c external2.c external3.c internal.c --> they all trigger the checkout and rebuild of our ProjectB. So a change in your external.c should be able to trigger your Job B too, as there is a new revision number created for it on the commit. Also our ProjectB1 gets built by Job B which is started by Job A after it has finished. They all work well now (all Jobs with additional credentials set, though). Anyway, instead of post-commit hook trigger or any other hook we use svn polling (check repository every 1/4 hour). Could this be the reason why our setup works?
            Hide
            danielbeck Daniel Beck added a comment -

            Chikigai: I may have fixed your issue. Completely untested (don't have a suitable test environment right now):
            Commit: https://github.com/daniel-beck/subversion-plugin/commit/bb33856de17663faf1a26eebe86ba00076053394
            Branch: https://github.com/daniel-beck/subversion-plugin/tree/notify-commit-external-credentials

            How to checkout and build:

            git clone https://github.com/daniel-beck/subversion-plugin.git . ; git checkout notify-commit-external-credentials ; mvn -DskipTests=true
            Show
            danielbeck Daniel Beck added a comment - Chikigai: I may have fixed your issue. Completely untested (don't have a suitable test environment right now): Commit: https://github.com/daniel-beck/subversion-plugin/commit/bb33856de17663faf1a26eebe86ba00076053394 Branch: https://github.com/daniel-beck/subversion-plugin/tree/notify-commit-external-credentials How to checkout and build: git clone https: //github.com/daniel-beck/subversion-plugin.git . ; git checkout notify-commit-external-credentials ; mvn -DskipTests= true
            Hide
            chikigai chikigai added a comment - - edited

            @Daniel Beck
            Forgive me for my lack of knowledge (this is the first time I'm building a Jenkins Plugin), but I'm unable to test your fix.
            Here's what I tried:

            1. Clone subversion-plugin
            2. Checkout notify-commit-external-credentials
            3. Build using maven
            4. Installed subversion.hpi created in the target directory

            The plugin is based on version 1.45 (shown in the installed plugins page) and does not recognize the credential related job settings.
            I will have to add the credential again using the older method, but surely this is not what's expected.
            I'm assuming I got something wrong here, so can you possibly point me in the right direction?

            Show
            chikigai chikigai added a comment - - edited @ Daniel Beck Forgive me for my lack of knowledge (this is the first time I'm building a Jenkins Plugin), but I'm unable to test your fix. Here's what I tried: 1. Clone subversion-plugin 2. Checkout notify-commit-external-credentials 3. Build using maven 4. Installed subversion.hpi created in the target directory The plugin is based on version 1.45 (shown in the installed plugins page) and does not recognize the credential related job settings. I will have to add the credential again using the older method, but surely this is not what's expected. I'm assuming I got something wrong here, so can you possibly point me in the right direction?
            Hide
            chikigai chikigai added a comment -

            @michael soukup


            So a change in your external.c should be able to trigger your Job B too, as there is a new revision number created for it on the commit.

            Yes, that's what I expect too.
            However, I have had some cases where the build would not start.
            (Bare in mind the repository structure and externals set are far more complex than the example I've used)
            I'm planning to look into this again once this issue with credentials is sorted out.

            Show
            chikigai chikigai added a comment - @ michael soukup So a change in your external.c should be able to trigger your Job B too, as there is a new revision number created for it on the commit. Yes, that's what I expect too. However, I have had some cases where the build would not start. (Bare in mind the repository structure and externals set are far more complex than the example I've used) I'm planning to look into this again once this issue with credentials is sorted out.
            Hide
            danielbeck Daniel Beck added a comment - - edited

            Chikigai: Subversion plugin 1.45 is bundled with Jenkins from 1.514-1.553, so it looks like you're back to the version bundled with your Jenkins.

            If you installed the plugin by first removing everything in the $JENKINS_HOME/plugins folder whose name starts with subversion, start over, but this time create (or keep) the empty file named subversion.jpi.pinnedit prevents override from bundled plugins. The safest way to install/update is by using the file upload in Manage Jenkins » Manage Plugins » Advanced (if you're on 1.512 or later).

            If my assumption is wrong, explain in detail how you installed the plugin.

            Show
            danielbeck Daniel Beck added a comment - - edited Chikigai: Subversion plugin 1.45 is bundled with Jenkins from 1.514-1.553, so it looks like you're back to the version bundled with your Jenkins. If you installed the plugin by first removing everything in the $JENKINS_HOME/plugins folder whose name starts with subversion , start over, but this time create (or keep) the empty file named subversion.jpi.pinned – it prevents override from bundled plugins . The safest way to install/update is by using the file upload in Manage Jenkins » Manage Plugins » Advanced (if you're on 1.512 or later). If my assumption is wrong, explain in detail how you installed the plugin.
            Hide
            chikigai chikigai added a comment -

            @Daniel Beck
            Thank you very much for the pointer.
            I was manually removing the plugin from the plugins folder including the pin.
            This time, I left the pin following your instructions and the plugin installed fine.
            (Can't use the plugin upload feature since I always get a "Failed to dynamically deploy this plugin" error)

            Unfortunately, I got the exact same authentication failure from the second time onwards:
            1. Deleted previous build related data for job B. (left the workspace untouched)
            2. Change/Commit "external.c" + post-commit hook trigger
            3. Jobs A & B both succeed
            4. Change/Commit "external.c" + post-commit hook trigger
            5. Job B fails (stack trace is the same as before)

            However, while trying out some other things, I noticed something with the settings of Job B.
            I had the hostname of the server set in the repository URL for the checkout, and the ip address set in the realm of the additional credentionals.
            I set the hostname in the realm and Job B no longer failed.
            Then I set the ip address for both the repository URL and realm. Job B did not fail.
            So it looks like you have to specify the same host format (name or ip address) for both the repository URL and realm of additional credentials.
            This does not really make sense to me, since the credential I selected is associated with a domain containing both hostname and ip address.
            Bare in mind, deleting the previous build data results in a job success even if the host format is different.

            One final note, I tried the above with both the patched version and unmodified version 2.2.
            Job B succeeds as long as the host format for the repository URL and realm are the same.

            Show
            chikigai chikigai added a comment - @ Daniel Beck Thank you very much for the pointer. I was manually removing the plugin from the plugins folder including the pin. This time, I left the pin following your instructions and the plugin installed fine. (Can't use the plugin upload feature since I always get a "Failed to dynamically deploy this plugin" error) Unfortunately, I got the exact same authentication failure from the second time onwards: 1. Deleted previous build related data for job B. (left the workspace untouched) 2. Change/Commit "external.c" + post-commit hook trigger 3. Jobs A & B both succeed 4. Change/Commit "external.c" + post-commit hook trigger 5. Job B fails (stack trace is the same as before) However, while trying out some other things, I noticed something with the settings of Job B. I had the hostname of the server set in the repository URL for the checkout, and the ip address set in the realm of the additional credentionals. I set the hostname in the realm and Job B no longer failed. Then I set the ip address for both the repository URL and realm. Job B did not fail. So it looks like you have to specify the same host format (name or ip address) for both the repository URL and realm of additional credentials. This does not really make sense to me, since the credential I selected is associated with a domain containing both hostname and ip address. Bare in mind, deleting the previous build data results in a job success even if the host format is different. One final note, I tried the above with both the patched version and unmodified version 2.2. Job B succeeds as long as the host format for the repository URL and realm are the same.
            Hide
            mikepenz Mike Penz added a comment -

            @Daniel Beck

            i just tried to build and install your changes, but they did not change anything for us.

            We still get the following error:
            hudson.util.IOException2: revision check failed on http://10.28.201.18/svn/xxx/Website/Config/trunk
            at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:226)
            at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:169)
            at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:739)
            at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:900)
            at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
            at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671)
            at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580)
            at hudson.model.Run.execute(Run.java:1676)
            at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
            at hudson.model.ResourceController.execute(ResourceController.java:88)
            at hudson.model.Executor.run(Executor.java:231)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/xxx/Website/Config/trunk failed
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:214)
            ... 11 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            ... 29 more

            Our repository A is on our svn server.
            On the build it checks out all externals (from different repositories, all with the same credentials on the same svn server)
            It fails to fetch the changelog for an external which is in the same repository A as the main project.

            The issue ONLY happens if there was a change in repository B.

            I tried it without additional credentials. i tried it with additional credentials and the realm set with the ip (http://ip/)
            i tried it with additional credentials and the realm set to the svn subpath (http://ip/svn/)

            Show
            mikepenz Mike Penz added a comment - @Daniel Beck i just tried to build and install your changes, but they did not change anything for us. We still get the following error: hudson.util.IOException2: revision check failed on http://10.28.201.18/svn/xxx/Website/Config/trunk at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:226) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:169) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:739) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:900) at hudson.model.AbstractProject.checkout(AbstractProject.java:1414) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580) at hudson.model.Run.execute(Run.java:1676) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/xxx/Website/Config/trunk failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:214) ... 11 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 29 more Our repository A is on our svn server. On the build it checks out all externals (from different repositories, all with the same credentials on the same svn server) It fails to fetch the changelog for an external which is in the same repository A as the main project. The issue ONLY happens if there was a change in repository B. I tried it without additional credentials. i tried it with additional credentials and the realm set with the ip ( http://ip/ ) i tried it with additional credentials and the realm set to the svn subpath ( http://ip/svn/ )
            Hide
            danielbeck Daniel Beck added a comment -

            Chikigai:

            So it looks like you have to specify the same host format (name or ip address) for both the repository URL and realm of additional credentials.

            Yes. The realm appears to be created from the host/port the client connects to, not from something the server reports. Which makes sense considering reverse proxies etc.

            This does not really make sense to me, since the credential I selected is associated with a domain containing both hostname and ip address.

            The realm string you specify is used as the key in a map, and the realm string SVNKit builds is used for the lookup of the credential to use in said map. (At least that's how it works for my first patch which I still believe to use correct)

            Bare in mind, deleting the previous build data results in a job success even if the host format is different.

            I found out after I asked for it that this is quite obvious in the code.

            One final note, I tried the above with both the patched version and unmodified version 2.2.

            Thanks for letting me know, now I can revert the change.

            It really appears to me that any failures with this particular exception are user error (wrong realm names).

            Show
            danielbeck Daniel Beck added a comment - Chikigai: So it looks like you have to specify the same host format (name or ip address) for both the repository URL and realm of additional credentials. Yes. The realm appears to be created from the host/port the client connects to, not from something the server reports. Which makes sense considering reverse proxies etc. This does not really make sense to me, since the credential I selected is associated with a domain containing both hostname and ip address. The realm string you specify is used as the key in a map, and the realm string SVNKit builds is used for the lookup of the credential to use in said map. (At least that's how it works for my first patch which I still believe to use correct) Bare in mind, deleting the previous build data results in a job success even if the host format is different. I found out after I asked for it that this is quite obvious in the code. One final note, I tried the above with both the patched version and unmodified version 2.2. Thanks for letting me know, now I can revert the change. It really appears to me that any failures with this particular exception are user error (wrong realm names).
            Hide
            danielbeck Daniel Beck added a comment -

            Mike Penz:

            i tried it with additional credentials and the realm set with the ip (http://ip/)
            i tried it with additional credentials and the realm set to the svn subpath (http://ip/svn/)

            If you mean that you specified "http://ip/" and "http://ip/svn/" as realm strings: I'm pretty sure these are never valid realm strings and none of the methods I described above to find out the realm string returned these. It appears that you're simply guessing.

            If you know how to read some Java: This is how they're created in the client library; and what you enter must be the exact same string:

            https://github.com/jenkinsci/svnkit/blob/1.7.6-jenkins-2/svnkit/src/main/java/org/tmatesoft/svn/core/internal/io/svn/sasl/SVNSaslAuthenticator.java#L336
            https://github.com/jenkinsci/svnkit/blob/1.7.6-jenkins-2/svnkit/src/main/java/org/tmatesoft/svn/core/internal/io/svn/SVNPlainAuthenticator.java#L60
            https://github.com/jenkinsci/svnkit/blob/1.7.6-jenkins-2/svnkit/src/main/java/org/tmatesoft/svn/core/internal/io/svn/SVNSSHConnector.java#L76


            Another way to find out the realm string if you use SVN from the command line (if you're on Linux or OS X; something similar should works on Windows as well):

            find ~/.subversion/auth/svn.simple/ -type f -exec cat {} + | grep -A 2 realmstring

            This will print all realm strings for which password credentials are saved by your SVN client.

            Show
            danielbeck Daniel Beck added a comment - Mike Penz: i tried it with additional credentials and the realm set with the ip ( http://ip/ ) i tried it with additional credentials and the realm set to the svn subpath ( http://ip/svn/ ) If you mean that you specified " http://ip/ " and " http://ip/svn/ " as realm strings: I'm pretty sure these are never valid realm strings and none of the methods I described above to find out the realm string returned these. It appears that you're simply guessing. If you know how to read some Java: This is how they're created in the client library; and what you enter must be the exact same string: https://github.com/jenkinsci/svnkit/blob/1.7.6-jenkins-2/svnkit/src/main/java/org/tmatesoft/svn/core/internal/io/svn/sasl/SVNSaslAuthenticator.java#L336 https://github.com/jenkinsci/svnkit/blob/1.7.6-jenkins-2/svnkit/src/main/java/org/tmatesoft/svn/core/internal/io/svn/SVNPlainAuthenticator.java#L60 https://github.com/jenkinsci/svnkit/blob/1.7.6-jenkins-2/svnkit/src/main/java/org/tmatesoft/svn/core/internal/io/svn/SVNSSHConnector.java#L76 Another way to find out the realm string if you use SVN from the command line (if you're on Linux or OS X; something similar should works on Windows as well): find ~/.subversion/auth/svn.simple/ -type f -exec cat {} + | grep -A 2 realmstring This will print all realm strings for which password credentials are saved by your SVN client.
            Hide
            soukupmi michael soukup added a comment -

            Under Windows you can use findstr

            findstr "<" %appdata%\Subversion\auth\svn.simple\*
            

            unfortunately findstr is way not as flexible as grep, so you cannot print the lines following realmstring but only the line that contains it. This is why I chose to look for the "<" instead.

            Show
            soukupmi michael soukup added a comment - Under Windows you can use findstr findstr "<" %appdata%\Subversion\auth\svn.simple\* unfortunately findstr is way not as flexible as grep , so you cannot print the lines following realmstring but only the line that contains it. This is why I chose to look for the " < " instead.
            Hide
            gordin Christoph Vogtländer added a comment -

            I was able to work around the issue by adding "additional credentials" with realm "<https://server:443> VisualSVN Server" and the same credentials that is used for the module itself.

            Show
            gordin Christoph Vogtländer added a comment - I was able to work around the issue by adding "additional credentials" with realm "< https://server:443 > VisualSVN Server" and the same credentials that is used for the module itself.
            Hide
            cbos Cees Bos added a comment - - edited

            We are facing the same issue as soon as there is an update in the svn:external linked folder.
            At that moment we don't face the issue in the checkout or update, but we face this issue in the log determination.

            When there is no change in the svn:external linked folder, then there is no issue.

            Show
            cbos Cees Bos added a comment - - edited We are facing the same issue as soon as there is an update in the svn:external linked folder. At that moment we don't face the issue in the checkout or update, but we face this issue in the log determination. When there is no change in the svn:external linked folder, then there is no issue.
            Hide
            chikigai chikigai added a comment -

            Although I thought I had everything fixed, it looks like I'm still facing issues with commit notifications.
            I no longer get authentication errors with the actual checkout, but the commit notifications via hook scripts are randomly failing.
            The log shows "Failed to handle Subversion commit notification" followed by the same authentication error details as posted before.
            I've run out of ideas of where to look for possible causes.

            Show
            chikigai chikigai added a comment - Although I thought I had everything fixed, it looks like I'm still facing issues with commit notifications. I no longer get authentication errors with the actual checkout, but the commit notifications via hook scripts are randomly failing. The log shows "Failed to handle Subversion commit notification" followed by the same authentication error details as posted before. I've run out of ideas of where to look for possible causes.
            Hide
            gordin Christoph Vogtländer added a comment -

            I can confirm that commit notifications via hook scripts are randomly failing for svn:externals as reported by chikigai. Without svn:externals everything seems to work as expected. In my case svn:externals point to other repositories on the same server and and the access rights do not differ from the main repository. So using the same credentials for svn:externals should work.

            Show
            gordin Christoph Vogtländer added a comment - I can confirm that commit notifications via hook scripts are randomly failing for svn:externals as reported by chikigai. Without svn:externals everything seems to work as expected. In my case svn:externals point to other repositories on the same server and and the access rights do not differ from the main repository. So using the same credentials for svn:externals should work.
            Hide
            danielbeck Daniel Beck added a comment -

            FYI my earlier fix has become PR 70 and was merged today, so using a snapshot build should resolve commit hook and subversion tagging plugin related issues.

            Show
            danielbeck Daniel Beck added a comment - FYI my earlier fix has become PR 70 and was merged today, so using a snapshot build should resolve commit hook and subversion tagging plugin related issues.
            Hide
            davida2009 davida2009 added a comment -

            I am randomly getting exceptions for svn projects that include external references:

            At revision 1219
            At revision 5564
            no change for https://<snip>/subversion/<snip>/trunk since the previous build
            13:03:36 hudson.util.IOException2: revision check failed on https://<snip>

            Re-running the job usually fixes the error.

            I have specified the 'Additional credential' as is required. The failures occur on both Linux and Windows slaves.

            I think the error cases I am experiencing are similar to some of those discussed in this thread. Please will someone summarise the issue status and tell me if there is any fix I can apply?

            Show
            davida2009 davida2009 added a comment - I am randomly getting exceptions for svn projects that include external references: At revision 1219 At revision 5564 no change for https://<snip>/subversion/<snip>/trunk since the previous build 13:03:36 hudson.util.IOException2: revision check failed on https://<snip> Re-running the job usually fixes the error. I have specified the 'Additional credential' as is required. The failures occur on both Linux and Windows slaves. I think the error cases I am experiencing are similar to some of those discussed in this thread. Please will someone summarise the issue status and tell me if there is any fix I can apply?
            Hide
            kenji Richard Bergoin added a comment -

            Facing the same issue, and installed the latest github version with #70 pull request merged (https://github.com/jenkinsci/subversion-plugin/commit/ed6e43e04ddd15ce302b23740625ca4e69d1fead) which allows to log credentials used. The credentials are OK, so this bug might be linked to a svnkit one :
            http://issues.tmatesoft.com/issue/SVNKIT-345

            Show
            kenji Richard Bergoin added a comment - Facing the same issue, and installed the latest github version with #70 pull request merged ( https://github.com/jenkinsci/subversion-plugin/commit/ed6e43e04ddd15ce302b23740625ca4e69d1fead ) which allows to log credentials used. The credentials are OK, so this bug might be linked to a svnkit one : http://issues.tmatesoft.com/issue/SVNKIT-345
            Hide
            kenji Richard Bergoin added a comment -

            Update : installing current svnkit (https://github.com/jenkinsci/svnkit/releases/tag/1.7.10) cli tools, and making a "jsvn info $REPO" and saving credentials from there make post-commits working again.
            Not a good way, but it could help solving this issue temporaly waiting the 2.3 plugin version that correct it.

            Show
            kenji Richard Bergoin added a comment - Update : installing current svnkit ( https://github.com/jenkinsci/svnkit/releases/tag/1.7.10 ) cli tools, and making a "jsvn info $REPO" and saving credentials from there make post-commits working again. Not a good way, but it could help solving this issue temporaly waiting the 2.3 plugin version that correct it.
            Hide
            gordin Christoph Vogtländer added a comment -

            @Daniel: using the snapshot build gives me:

            Mar 31, 2014 10:09:07 AM WARNING winstone.Logger logInternal
            Called getReader after getParameter ... error
            Mar 31, 2014 10:09:07 AM WARNING hudson.scm.SubversionRepositoryStatus doNotifyCommit
            Listener hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl threw an uncaught exception
            java.lang.NullPointerException
                    at com.cloudbees.plugins.credentials.matchers.IdMatcher.<init>(IdMatcher.java:49)
                    at com.cloudbees.plugins.credentials.CredentialsMatchers.withId(CredentialsMatchers.java:112)
                    at hudson.scm.SubversionSCM$ModuleLocation.openRepository(SubversionSCM.java:2736)
                    at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2711)
                    at hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl.onNotify(SubversionRepositoryStatus.java:202)
                    at hudson.scm.SubversionRepositoryStatus.doNotifyCommit(SubversionRepositoryStatus.java:136)
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                    at java.lang.reflect.Method.invoke(Unknown Source)
                    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
                    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
                    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
                    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120)
                    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
                    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
                    at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
                    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
                    at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
                    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
                    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
                    at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
                    at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
                    at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
                    at com.marvelution.jenkins.plugins.jira.filter.OAuthServletFilter.doFilter(OAuthServletFilter.java:70)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at com.marvelution.jenkins.plugins.jira.filter.StreamsServletFilter.doFilter(StreamsServletFilter.java:84)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at com.marvelution.jenkins.plugins.jira.filter.ApplinksServletFilter.doFilter(ApplinksServletFilter.java:90)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at com.marvelution.jenkins.plugins.jira.oauth.OAuthFilter.doFilter(OAuthFilter.java:82)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
                    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
                    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
                    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
                    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
                    at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
                    at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
                    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
                    at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
                    at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227)
                    at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
                    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
                    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
                    at java.util.concurrent.FutureTask.run(Unknown Source)
                    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
                    at java.lang.Thread.run(Unknown Source)
             
            Mar 31, 2014 10:09:07 AM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify
            Received post-commit hook from 9ac4290d-b8dc-5d40-a2b8-e322e6355784 for revision -1 on paths [trunk/BuildCfg/doxyfile.versioninfo, trunk/BuildCfg/doxyfile]
            Mar 31, 2014 10:09:07 AM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify
            No subversion consumers for UUID 9ac4290d-b8dc-5d40-a2b8-e322e6355784
            Mar 31, 2014 10:09:07 AM WARNING hudson.scm.SubversionRepositoryStatus doNotifyCommit
            No interest in change to repository UUID 9ac4290d-b8dc-5d40-a2b8-e322e6355784 found
            

            SVN commit hook change notifcation does not work at all for me using the snapshot build. Even if the change is not in the externals.

            Show
            gordin Christoph Vogtländer added a comment - @Daniel: using the snapshot build gives me: Mar 31, 2014 10:09:07 AM WARNING winstone.Logger logInternal Called getReader after getParameter ... error Mar 31, 2014 10:09:07 AM WARNING hudson.scm.SubversionRepositoryStatus doNotifyCommit Listener hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl threw an uncaught exception java.lang.NullPointerException at com.cloudbees.plugins.credentials.matchers.IdMatcher.<init>(IdMatcher.java:49) at com.cloudbees.plugins.credentials.CredentialsMatchers.withId(CredentialsMatchers.java:112) at hudson.scm.SubversionSCM$ModuleLocation.openRepository(SubversionSCM.java:2736) at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2711) at hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl.onNotify(SubversionRepositoryStatus.java:202) at hudson.scm.SubversionRepositoryStatus.doNotifyCommit(SubversionRepositoryStatus.java:136) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) at org.kohsuke.stapler.Stapler.service(Stapler.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) at winstone.ServletConfiguration.execute(ServletConfiguration.java:248) at winstone.RequestDispatcher.forward(RequestDispatcher.java:333) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at com.marvelution.jenkins.plugins.jira.filter.OAuthServletFilter.doFilter(OAuthServletFilter.java:70) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at com.marvelution.jenkins.plugins.jira.filter.StreamsServletFilter.doFilter(StreamsServletFilter.java:84) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at com.marvelution.jenkins.plugins.jira.filter.ApplinksServletFilter.doFilter(ApplinksServletFilter.java:90) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at com.marvelution.jenkins.plugins.jira.oauth.OAuthFilter.doFilter(OAuthFilter.java:82) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at winstone.RequestDispatcher.forward(RequestDispatcher.java:331) at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227) at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang. Thread .run(Unknown Source) Mar 31, 2014 10:09:07 AM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify Received post-commit hook from 9ac4290d-b8dc-5d40-a2b8-e322e6355784 for revision -1 on paths [trunk/BuildCfg/doxyfile.versioninfo, trunk/BuildCfg/doxyfile] Mar 31, 2014 10:09:07 AM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify No subversion consumers for UUID 9ac4290d-b8dc-5d40-a2b8-e322e6355784 Mar 31, 2014 10:09:07 AM WARNING hudson.scm.SubversionRepositoryStatus doNotifyCommit No interest in change to repository UUID 9ac4290d-b8dc-5d40-a2b8-e322e6355784 found SVN commit hook change notifcation does not work at all for me using the snapshot build. Even if the change is not in the externals.
            Hide
            danielbeck Daniel Beck added a comment - - edited

            Christoph Vogtländer:

            Issue appears for me when running the following:

            def p = Jenkins.instance.getItemByFullName('job-with-svn-with-externals');
            
            p.scm.with {
              it.getProjectLocations(p).each { loc ->
                    println loc
              	println loc.getUUID(p)
              }
            }
            

            This mirrors the behavior of Jenkins during the post-commit hook.

            Proposed patch that resolves the issue for me (on top of PR 70):

            $ git diff
            diff --git a/src/main/java/hudson/scm/SubversionSCM.java b/src/main/java/hudson/scm/SubversionSCM.java
            index 938b39b..75db1e1 100755
            --- a/src/main/java/hudson/scm/SubversionSCM.java
            +++ b/src/main/java/hudson/scm/SubversionSCM.java
            @@ -2736,7 +2736,7 @@ public class SubversionSCM extends SCM implements Serializable {
                                     StandardCredentials cred = CredentialsMatchers
                                             .firstOrNull(CredentialsProvider.lookupCredentials(StandardCredentials.class, context,
                                                     ACL.SYSTEM, Collections.<DomainRequirement>emptyList()),
            -                                        CredentialsMatchers.allOf(CredentialsMatchers.withId(credentialsId),
            +                                        CredentialsMatchers.allOf(CredentialsMatchers.withId(c.getCredentialsId()),
                                                             CredentialsMatchers.anyOf(CredentialsMatchers.instanceOf(
                                                                     StandardCredentials.class), CredentialsMatchers.instanceOf(
                                                                     SSHUserPrivateKey.class))));
            

            Will probably open the PR tomorrow.

            Show
            danielbeck Daniel Beck added a comment - - edited Christoph Vogtländer: Issue appears for me when running the following: def p = Jenkins.instance.getItemByFullName('job-with-svn-with-externals'); p.scm.with { it.getProjectLocations(p).each { loc -> println loc println loc.getUUID(p) } } This mirrors the behavior of Jenkins during the post-commit hook. Proposed patch that resolves the issue for me (on top of PR 70): $ git diff diff --git a/src/main/java/hudson/scm/SubversionSCM.java b/src/main/java/hudson/scm/SubversionSCM.java index 938b39b..75db1e1 100755 --- a/src/main/java/hudson/scm/SubversionSCM.java +++ b/src/main/java/hudson/scm/SubversionSCM.java @@ -2736,7 +2736,7 @@ public class SubversionSCM extends SCM implements Serializable { StandardCredentials cred = CredentialsMatchers .firstOrNull(CredentialsProvider.lookupCredentials(StandardCredentials.class, context, ACL.SYSTEM, Collections.<DomainRequirement>emptyList()), - CredentialsMatchers.allOf(CredentialsMatchers.withId(credentialsId), + CredentialsMatchers.allOf(CredentialsMatchers.withId(c.getCredentialsId()), CredentialsMatchers.anyOf(CredentialsMatchers.instanceOf( StandardCredentials.class), CredentialsMatchers.instanceOf( SSHUserPrivateKey.class)))); Will probably open the PR tomorrow.
            Hide
            danielbeck Daniel Beck added a comment -

            Christoph Vogtländer (or anyone interested in a fix):

            I'd appreciate if you could test this – as my original change failed to fix my original description how to reproduce the problem I'd like to get independent confirmation.

            PR: https://github.com/jenkinsci/subversion-plugin/pull/74
            CI build for it: https://jenkins.ci.cloudbees.com/job/plugins/job/subversion-plugin/336/

            Show
            danielbeck Daniel Beck added a comment - Christoph Vogtländer (or anyone interested in a fix): I'd appreciate if you could test this – as my original change failed to fix my original description how to reproduce the problem I'd like to get independent confirmation. PR: https://github.com/jenkinsci/subversion-plugin/pull/74 CI build for it: https://jenkins.ci.cloudbees.com/job/plugins/job/subversion-plugin/336/
            Hide
            gordin Christoph Vogtländer added a comment - - edited

            Daniel Beck:

            Using the new snapshot (PR74/Build 336) fixed the problem for me. At least using your script test code posted in 1 and 2. Tested the scripts with the snapshot from PR70 to confirm failure. The test with PR74 now succeedes.
            Also successfully tested with "real" commit hook notification. There are no trace messages left in the log and jobs are triggered correctly. Thanks a lot for your help.

            Show
            gordin Christoph Vogtländer added a comment - - edited Daniel Beck: Using the new snapshot (PR74/Build 336) fixed the problem for me. At least using your script test code posted in 1 and 2 . Tested the scripts with the snapshot from PR70 to confirm failure. The test with PR74 now succeedes. Also successfully tested with "real" commit hook notification. There are no trace messages left in the log and jobs are triggered correctly. Thanks a lot for your help.
            Hide
            kenji Richard Bergoin added a comment -

            @Daniel Just installed https://jenkins.ci.cloudbees.com/job/plugins/job/subversion-plugin/336/org.jenkins-ci.plugins$subversion/ and removed ~/.subversion that contains "static credentials" added by using jsvn. And got the issue again on externals :

            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed

            Re-added credentials by doing a "jsvn info $REPO", and then post-commit works again.

            Show
            kenji Richard Bergoin added a comment - @Daniel Just installed https://jenkins.ci.cloudbees.com/job/plugins/job/subversion-plugin/336/org.jenkins-ci.plugins$subversion/ and removed ~/.subversion that contains "static credentials" added by using jsvn. And got the issue again on externals : Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed Re-added credentials by doing a "jsvn info $REPO", and then post-commit works again.
            Hide
            danielbeck Daniel Beck added a comment -

            Richard Bergoin: Not sure how many of the preceding comments you read, but please note that this fix simply adds support for "additional credentials" in some code paths that used no credentials at all. You'll still need to define credentials for the explicitly defined modules, you'll still need to add "additional credentials" in case of externals, even within the same repos as your other modules , and you need to specify the correct realm for those so they are considered at all during authentication.

            If you read and understood all of the previous comments to this issue, and followed the instructions, but the problem still occurs, please post the entire stack trace, including all the "Caused by" sections. The error message alone is useless.

            Show
            danielbeck Daniel Beck added a comment - Richard Bergoin: Not sure how many of the preceding comments you read, but please note that this fix simply adds support for "additional credentials" in some code paths that used no credentials at all. You'll still need to define credentials for the explicitly defined modules, you'll still need to add "additional credentials" in case of externals, even within the same repos as your other modules , and you need to specify the correct realm for those so they are considered at all during authentication. If you read and understood all of the previous comments to this issue, and followed the instructions, but the problem still occurs, please post the entire stack trace, including all the "Caused by" sections. The error message alone is useless.
            Hide
            kenji Richard Bergoin added a comment -

            @Daniel, thanks for reply, here is the log, and the CredentialsSVNAuthenticationProviderImpl logger output make me think that the credentials used for the externals are the one used for the main module (no additional module configured, as you said) :

             
            Apr 01, 2014 9:24:45 AM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl
            Attempting auth for URL: https://svn.company.com/repo/tags/project-1.0; Realm: <https://svn.company.com:443> SVN repository
            Apr 01, 2014 9:24:45 AM WARNING hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl onNotify
            Failed to handle Subversion commit notification
            org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /repo/tags/project-1.0 failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148)
            	at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2712)
            	at hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl.onNotify(SubversionRepositoryStatus.java:202)
            	at hudson.scm.SubversionRepositoryStatus.doNotifyCommit(SubversionRepositoryStatus.java:136)
            	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            	at java.lang.reflect.Method.invoke(Method.java:606)
            	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
            	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
            	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
            	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120)
            	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
            	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            	at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
            	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            	at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
            	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
            	at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
            	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
            	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
            	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:74)
            	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:164)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
            	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
            	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
            	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
            	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
            	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
            	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
            	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
            	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
            	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
            	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
            	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            	at org.eclipse.jetty.server.Server.handle(Server.java:370)
            	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
            	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
            	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
            	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
            	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
            	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
            	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
            	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
            	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            	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:744)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 85 more
            
            Show
            kenji Richard Bergoin added a comment - @Daniel, thanks for reply, here is the log, and the CredentialsSVNAuthenticationProviderImpl logger output make me think that the credentials used for the externals are the one used for the main module (no additional module configured, as you said) : Apr 01, 2014 9:24:45 AM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl Attempting auth for URL: https://svn.company.com/repo/tags/project-1.0; Realm: <https://svn.company.com:443> SVN repository Apr 01, 2014 9:24:45 AM WARNING hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl onNotify Failed to handle Subversion commit notification org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /repo/tags/project-1.0 failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148) at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2712) at hudson.scm.SubversionRepositoryStatus$JobTriggerListenerImpl.onNotify(SubversionRepositoryStatus.java:202) at hudson.scm.SubversionRepositoryStatus.doNotifyCommit(SubversionRepositoryStatus.java:136) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) at org.kohsuke.stapler.Stapler.service(Stapler.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:74) 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:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 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:744) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 85 more
            Hide
            danielbeck Daniel Beck added a comment - - edited

            Richard: To clarify, you have one module configured, and no additional credentials? If so, you simply need to do that; externals only have "additional credentials" to work with, even when in the same repo! That log message I added to assist in determining the "realm" to enter, as some users expressed confusion about how that works.

            Just add an "additional credential", use

            <https://svn.company.com:443> SVN repository

            for the realm, and choose whatever credential is appropriate for that repo, could be the same as for the configured module.

            Show
            danielbeck Daniel Beck added a comment - - edited Richard: To clarify, you have one module configured, and no additional credentials? If so, you simply need to do that; externals only have "additional credentials" to work with, even when in the same repo! That log message I added to assist in determining the "realm" to enter, as some users expressed confusion about how that works. Just add an "additional credential", use <https: //svn.company.com:443> SVN repository for the realm, and choose whatever credential is appropriate for that repo, could be the same as for the configured module.
            Hide
            kenji Richard Bergoin added a comment -

            To clarify, you have one module configured, and no additional credentials? : yes.

            The realm for the external is (I think) the same that the realm of the "main" module, for exemple, an app have an external to a library tag :
            https://svn.company.com/app/trunk
            have
            https://svn.company.com/lib/tags/project-1.0
            as externals

            Shouldn't main module credentials be applied, as both realms are "<https://svn.company.com:443> SVN repository" ?

            Show
            kenji Richard Bergoin added a comment - To clarify, you have one module configured, and no additional credentials? : yes. The realm for the external is (I think) the same that the realm of the "main" module, for exemple, an app have an external to a library tag : https://svn.company.com/app/trunk have https://svn.company.com/lib/tags/project-1.0 as externals Shouldn't main module credentials be applied, as both realms are "< https://svn.company.com:443 > SVN repository" ?
            Hide
            soukupmi michael soukup added a comment -

            Shouldn't main module credentials be applied, as both realms are "<https://svn.company.com:443> SVN repository" ?

            should
            But ain't: comment-195699
            this is why there exists this bug entry after all...

            Show
            soukupmi michael soukup added a comment - Shouldn't main module credentials be applied, as both realms are "< https://svn.company.com:443 > SVN repository" ? should But ain't: comment-195699 this is why there exists this bug entry after all...
            Hide
            danielbeck Daniel Beck added a comment -

            Richard:

            Should it? Possibly.
            Does it? No.

            Which many of the preceding comments mention (e.g. 1 2 3 4).

            Show
            danielbeck Daniel Beck added a comment - Richard: Should it? Possibly. Does it? No. Which many of the preceding comments mention (e.g. 1 2 3 4 ).
            Hide
            kenji Richard Bergoin added a comment -

            I was thinking the PR 70 will solve this issue (I misundertood the log and think that it inform the "realm" which will be used to the connection). I can test this issue (as previously with PR 74), if the "possibly" can be assume to be "yes" (but who can decide of this...). From my point of view, credentials are "server based" for continuous, but it could be "repository based" (subpath of a server).
            Maybe a "FINE" logging of username used to connect to a repository can be interesting (for debugging purpose).

            Show
            kenji Richard Bergoin added a comment - I was thinking the PR 70 will solve this issue (I misundertood the log and think that it inform the "realm" which will be used to the connection). I can test this issue (as previously with PR 74), if the "possibly" can be assume to be "yes" (but who can decide of this...). From my point of view, credentials are "server based" for continuous, but it could be "repository based" (subpath of a server). Maybe a "FINE" logging of username used to connect to a repository can be interesting (for debugging purpose).
            Hide
            compcom_de Jens Rosenthal added a comment -

            @Richard: I believe that the credentials have to be "repository based"... Just think of a huge company with many project teams and a fine grained access control for all the repositories hosted on one (or more) SVN server(s).

            Matching the URL (of the external) - e.g. https://svn.server.company:443/reporoot/repo/my/external - against a realm string - e.g. https://svn.server.company:443/reporoot/repo - might well suffice for this to work.

            Show
            compcom_de Jens Rosenthal added a comment - @Richard: I believe that the credentials have to be "repository based"... Just think of a huge company with many project teams and a fine grained access control for all the repositories hosted on one (or more) SVN server(s). Matching the URL (of the external) - e.g. https://svn.server.company:443/reporoot/repo/my/external - against a realm string - e.g. https://svn.server.company:443/reporoot/repo - might well suffice for this to work.
            Hide
            davida2009 davida2009 added a comment -

            I am running Jenkins 1.552 on a Linux master. I have installed svn plugin '2.3-SNAPSHOT(private-03/31/2-14 18:05-jenkins'.
            I have a job that runs on a Windows slave that polls a svn repo and does a Visual Studio C++ build if a change is detected. The svn repo has an external link to another svn repo. I have specified an 'additional credential' for the external (I believe correctly). Jenkins gives the following exception when I commit a change to the external repo and run the Jenkins job:

            Apr 01, 2014 1:36:42 PM WARNING hudson.ExpressionFactory2$JexlExpression evaluateCaught exception evaluating: it.transientActions in /jenkins/job/Zodiac_VS2010_Osiris_TI/110/. Reason: java.lang.reflect.InvocationTargetException
            java.lang.reflect.InvocationTargetException
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
            at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
            at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
            at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
            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.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:58)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
            at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            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)
            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)
            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.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
            at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
            at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:717)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
            at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
            at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:117)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202)
            at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180)
            at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
            at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:90)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
            at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.server.Server.handle(Server.java:370)
            at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
            at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
            at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
            at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
            at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
            at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
            at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
            Caused by: java.lang.NullPointerException
            at com.chikli.hudson.plugin.naginator.NaginatorActionFactory.createFor(NaginatorActionFactory.java:20)
            at hudson.model.Run.getTransientActions(Run.java:357)
            ... 129 more

            Apr 01, 2014 1:36:44 PM WARNING hudson.ExpressionFactory2$JexlExpression evaluateCaught exception evaluating: it.transientActions in /jenkins/job/Zodiac_VS2010_Osiris_TI/110/console. Reason: java.lang.reflect.InvocationTargetException
            java.lang.reflect.InvocationTargetException
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
            at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
            at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
            at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
            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.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:58)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
            at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            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)
            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)
            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.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
            at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
            at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
            at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:117)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202)
            at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180)
            at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
            at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:90)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
            at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.server.Server.handle(Server.java:370)
            at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
            at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
            at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
            at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
            at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
            at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
            at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
            Caused by: java.lang.NullPointerException
            at com.chikli.hudson.plugin.naginator.NaginatorActionFactory.createFor(NaginatorActionFactory.java:20)
            at hudson.model.Run.getTransientActions(Run.java:357)
            ... 129 more

            Show
            davida2009 davida2009 added a comment - I am running Jenkins 1.552 on a Linux master. I have installed svn plugin '2.3-SNAPSHOT(private-03/31/2-14 18:05-jenkins'. I have a job that runs on a Windows slave that polls a svn repo and does a Visual Studio C++ build if a change is detected. The svn repo has an external link to another svn repo. I have specified an 'additional credential' for the external (I believe correctly). Jenkins gives the following exception when I commit a change to the external repo and run the Jenkins job: Apr 01, 2014 1:36:42 PM WARNING hudson.ExpressionFactory2$JexlExpression evaluateCaught exception evaluating: it.transientActions in /jenkins/job/Zodiac_VS2010_Osiris_TI/110/. Reason: java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314) at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185) at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75) 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.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:58) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81) at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) 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) 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) 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.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53) at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112) at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:717) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) at org.kohsuke.stapler.Stapler.service(Stapler.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:117) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180) at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85) at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:90) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.chikli.hudson.plugin.naginator.NaginatorActionFactory.createFor(NaginatorActionFactory.java:20) at hudson.model.Run.getTransientActions(Run.java:357) ... 129 more Apr 01, 2014 1:36:44 PM WARNING hudson.ExpressionFactory2$JexlExpression evaluateCaught exception evaluating: it.transientActions in /jenkins/job/Zodiac_VS2010_Osiris_TI/110/console. Reason: java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314) at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185) at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75) 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.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:58) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81) at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) 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) 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) 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.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53) at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) at org.kohsuke.stapler.Stapler.service(Stapler.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:117) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180) at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85) at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:90) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.chikli.hudson.plugin.naginator.NaginatorActionFactory.createFor(NaginatorActionFactory.java:20) at hudson.model.Run.getTransientActions(Run.java:357) ... 129 more
            Hide
            kenji Richard Bergoin added a comment -

            @Jens, Ok for repo base credentials, in fact this is also that we have, I would add a "global credentials" to not have to reconfigure each jobs using this external (more than 30), but the global credentials is domain based (e.g. hostname, so only one global credential for svn.company.com)

            Note that we also have CI for our internal libraries, so the credentials are already entered in another job.

            Show
            kenji Richard Bergoin added a comment - @Jens, Ok for repo base credentials, in fact this is also that we have, I would add a "global credentials" to not have to reconfigure each jobs using this external (more than 30), but the global credentials is domain based (e.g. hostname, so only one global credential for svn.company.com) Note that we also have CI for our internal libraries, so the credentials are already entered in another job.
            Hide
            danielbeck Daniel Beck added a comment -

            Richard: It may be possible, but it's not currently implemented this way (admittedly, the current solution seems a bit weird). If PR70+PR74 work, then only an issue of convenience / redundancy in configuration is left.

            David: The error seems to be completely unrelated. I suggest you open a new issue for that.


            Anyone able to confirm that PR74 works?

            Show
            danielbeck Daniel Beck added a comment - Richard: It may be possible, but it's not currently implemented this way (admittedly, the current solution seems a bit weird). If PR70+PR74 work, then only an issue of convenience / redundancy in configuration is left. David: The error seems to be completely unrelated. I suggest you open a new issue for that. Anyone able to confirm that PR74 works?
            Hide
            soukupmi michael soukup added a comment -

            @Richard:
            you can use the same method that I used to reconfigure our 20+ jobs:
            edit the xml files directly and restart the server as described in comment-196380

            Show
            soukupmi michael soukup added a comment - @Richard: you can use the same method that I used to reconfigure our 20+ jobs: edit the xml files directly and restart the server as described in comment-196380
            Hide
            mikepenz Mike Penz added a comment - - edited

            I've also installed the snapshot plugin, i've also set the additional credentials, without any luck. As soon as there's a change in one of the externals it fails.

             
            hudson.util.IOException2: revision check failed on http://server/svn/repo/...
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:739)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:900)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1320)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518)
            	at hudson.model.Run.execute(Run.java:1688)
            	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:231)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/repo/... failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
            	... 11 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 29 more
            

            we checkout two modules each with their own credentials
            http://server/svn/repo/folder1... with credentials1
            http://server/svn/repo/folder2... with credentials1

            and i add additional credentials with realm
            http://server/svn/repo with credentials1

            i've also tried additional credentials with realm
            http://server/ with credentials1

            (the credentials1 are all the same)

            Show
            mikepenz Mike Penz added a comment - - edited I've also installed the snapshot plugin, i've also set the additional credentials, without any luck. As soon as there's a change in one of the externals it fails. hudson.util.IOException2: revision check failed on http://server/svn/repo/... at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:739) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:900) at hudson.model.AbstractProject.checkout(AbstractProject.java:1320) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518) at hudson.model.Run.execute(Run.java:1688) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/repo/... failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177) ... 11 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 29 more we checkout two modules each with their own credentials http://server/svn/repo/folder1 ... with credentials1 http://server/svn/repo/folder2 ... with credentials1 and i add additional credentials with realm http://server/svn/repo with credentials1 i've also tried additional credentials with realm http://server/ with credentials1 (the credentials1 are all the same)
            Hide
            soukupmi michael soukup added a comment - - edited

            @Mike Penz
            make sure you entered the realm as described in comment-197898 and comment-196458, not only the url of the repository - it should work for you, too.

            <https://svn.company.com:443> SVN repository
            Show
            soukupmi michael soukup added a comment - - edited @ Mike Penz make sure you entered the realm as described in comment-197898 and comment-196458 , not only the url of the repository - it should work for you, too. <https: //svn.company.com:443> SVN repository
            Hide
            mikepenz Mike Penz added a comment - - edited

            @michael soukup

            Ok i was now able to solve it too. You were right that you have to define the realm including the brackets and the name. i always thought it should work if you just define https://svn.company.com:443
            Thanks for the help

            any solution how to define this as default? we have 100+ builds and almost each of those has externals.

            Show
            mikepenz Mike Penz added a comment - - edited @ michael soukup Ok i was now able to solve it too. You were right that you have to define the realm including the brackets and the name. i always thought it should work if you just define https://svn.company.com:443 Thanks for the help any solution how to define this as default? we have 100+ builds and almost each of those has externals.
            Hide
            davida2009 davida2009 added a comment -

            Hi Daniel

            Sorry, I pasted in the wrong exception. I really am getting one relevant to this issue (see below). I am running your snapshot. The exception is random - sometimes the update succeeds, sometimes it doesn't. This time I used a clean workspace, to clear any cached credentials.

            David

            At revision 1231
            At revision 5573
            no change for https://172.29.68.12/subversion/zodiac/trunk since the previous build
            hudson.util.IOException2: revision check failed on https://172.29.68.12/subversion/Osiris/trunk/Source/Osiris/include
            at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
            at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:739)
            at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:900)
            at hudson.model.AbstractProject.checkout(AbstractProject.java:1320)
            at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
            at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518)
            at hudson.model.Run.execute(Run.java:1688)
            at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
            at hudson.model.ResourceController.execute(ResourceController.java:88)
            at hudson.model.Executor.run(Executor.java:231)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /subversion/Osiris/trunk/Source/Osiris/include failed
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
            ... 11 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            ... 29 more

            Show
            davida2009 davida2009 added a comment - Hi Daniel Sorry, I pasted in the wrong exception. I really am getting one relevant to this issue (see below). I am running your snapshot. The exception is random - sometimes the update succeeds, sometimes it doesn't. This time I used a clean workspace, to clear any cached credentials. David At revision 1231 At revision 5573 no change for https://172.29.68.12/subversion/zodiac/trunk since the previous build hudson.util.IOException2: revision check failed on https://172.29.68.12/subversion/Osiris/trunk/Source/Osiris/include at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:739) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:900) at hudson.model.AbstractProject.checkout(AbstractProject.java:1320) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518) at hudson.model.Run.execute(Run.java:1688) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /subversion/Osiris/trunk/Source/Osiris/include failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177) ... 11 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 29 more
            Hide
            mikepenz Mike Penz added a comment -

            davida2009 ok it seems you have the exact same issue we had.

            Try to add additinal credentials. It's really important that you use
            the correct realm.

            The realm in our case is "<http://server:port> SVN Server Name" <-- without "
            After migrating to the new subversion plugin the name of the old credentials
            was automatically set to the realm of the svn server try to using this one.
            our automatically upgraded credentials had a name like
            "buildmaster/****** (<http://server:port> SVN Server Name)" just remove the
            stuff before and the brackets.

            Show
            mikepenz Mike Penz added a comment - davida2009 ok it seems you have the exact same issue we had. Try to add additinal credentials. It's really important that you use the correct realm. The realm in our case is "< http://server:port > SVN Server Name" <-- without " After migrating to the new subversion plugin the name of the old credentials was automatically set to the realm of the svn server try to using this one. our automatically upgraded credentials had a name like "buildmaster/****** (< http://server:port > SVN Server Name)" just remove the stuff before and the brackets.
            Hide
            davida2009 davida2009 added a comment -

            Mike, thanks for your help. I have specified 'additional credentials'. However, until today I had specified a realm of:

            CollabNet Subversion Repository

            which we got from our server configuration. Today I added the url:

            <https://<snip>/subversion:443> CollabNet Subversion Repository

            but that made no difference. I still get the exception.

            Unfortunately there seems to be no documentation in Jenkins about this. Until recently I was completely unaware of the concept of 'realm' in Subversion.

            Show
            davida2009 davida2009 added a comment - Mike, thanks for your help. I have specified 'additional credentials'. However, until today I had specified a realm of: CollabNet Subversion Repository which we got from our server configuration. Today I added the url: <https://<snip>/subversion:443> CollabNet Subversion Repository but that made no difference. I still get the exception. Unfortunately there seems to be no documentation in Jenkins about this. Until recently I was completely unaware of the concept of 'realm' in Subversion.
            Hide
            danielbeck Daniel Beck added a comment -

            davida: Skip the local path /subversion. Search through my older comments, there's several ways described how you can find out the realm.

            Show
            danielbeck Daniel Beck added a comment - davida: Skip the local path /subversion . Search through my older comments, there's several ways described how you can find out the realm.
            Hide
            mikepenz Mike Penz added a comment - - edited

            @davida2009 i've wrote a small description for others who create builds. perhaps it's useful for someone else too. (the part 4.1. is the important one for you)

            how to set additional credentials
            1. open the build configuration
            2. scroll down to the source-code-management section
            3. click on the "Add additional credentials..." button
            4. define as realm the specific identifier for our svn server -> (<http://ip:port> Company Subversion Repository) <- without the "(", ")" brackets
            4.1. if it should work for a different svn you need to use the realm of this server
            4.2. checkout a repo on this server via the command-line --> svn --username

            {username}

            --password

            {password}

            checkout http://ip:port/svn/repo <-- you can cancel this after it has started the checkout
            4.3. read all realms available on your mac with this cmd --> "find ~/.subversion/auth/svn.simple/ -type f -exec cat {} + | grep -A 2 realmstring"
            4.3.1. other solutions to get the realmstring: comment-196510, comment-196730, comment-196903
            4.3.2. there's also another option to get the realmstring. on a pc which was not connected to the svn before, do the following in the therminal:
            "svn info http://ip:port/pathtorepo" --> this will output something like "Authentication realm: <http://ip:port> Company Subversion Repository"
            5. select the credentials --> "buildmaster/****** (<http://ip:port> Company Subversion Repository)"
            6. save and be happy!

            Show
            mikepenz Mike Penz added a comment - - edited @ davida2009 i've wrote a small description for others who create builds. perhaps it's useful for someone else too. (the part 4.1. is the important one for you) how to set additional credentials 1. open the build configuration 2. scroll down to the source-code-management section 3. click on the "Add additional credentials..." button 4. define as realm the specific identifier for our svn server - > (< http://ip:port > Company Subversion Repository) < - without the "(", ")" brackets 4.1. if it should work for a different svn you need to use the realm of this server 4.2. checkout a repo on this server via the command-line --> svn --username {username} --password {password} checkout http://ip:port/svn/repo <-- you can cancel this after it has started the checkout 4.3. read all realms available on your mac with this cmd --> "find ~/.subversion/auth/svn.simple/ -type f -exec cat {} + | grep -A 2 realmstring" 4.3.1. other solutions to get the realmstring: comment-196510 , comment-196730 , comment-196903 4.3.2. there's also another option to get the realmstring. on a pc which was not connected to the svn before, do the following in the therminal: "svn info http://ip:port/pathtorepo " --> this will output something like "Authentication realm: < http://ip:port > Company Subversion Repository" 5. select the credentials --> "buildmaster/****** (< http://ip:port > Company Subversion Repository)" 6. save and be happy!
            Hide
            davida2009 davida2009 added a comment -

            Hi Daniel and Mike

            Thank you both for your help. Mike's instructions of how to get the realm string were useful and, as Daniel suggested, omitting '/subversion' seems to have worked for me. In summary, I use:

            <https://ip:443> CollabNet Subversion Repository

            with ip substituted by the actual ip address.

            (We use Collabnet's SVN Edge distro, and 'CollabNet Subversion Repository' seems to be the default name).

            I'll leave it for a while and see if it is stable.

            Best regards

            David

            Show
            davida2009 davida2009 added a comment - Hi Daniel and Mike Thank you both for your help. Mike's instructions of how to get the realm string were useful and, as Daniel suggested, omitting '/subversion' seems to have worked for me. In summary, I use: < https://ip:443 > CollabNet Subversion Repository with ip substituted by the actual ip address. (We use Collabnet's SVN Edge distro, and 'CollabNet Subversion Repository' seems to be the default name). I'll leave it for a while and see if it is stable. Best regards David
            Hide
            davida2009 davida2009 added a comment -

            Just one more comment: I think it would help diagnosis if the Jenkins svn plugin exception showed which job is failing, not just the svn url that is failing. What it be possible to should the job in the exception listing?

            Show
            davida2009 davida2009 added a comment - Just one more comment: I think it would help diagnosis if the Jenkins svn plugin exception showed which job is failing, not just the svn url that is failing. What it be possible to should the job in the exception listing?
            Hide
            josesa Jose Sa added a comment -

            Seems like a big hassle to get authentication done. I would like to keep this as simple as possible by just identifying the hosts domain using wildcards ie: "*.svn-repos.org" no differences in protocol (https, http, svn+ssl...) or authentication realms.

            If I have the same account with username/password that has access to multiple repositories in multiple servers, why should I have to enter it a thousand times in many different ways because of variations of protocols and realm strings ??

            Show
            josesa Jose Sa added a comment - Seems like a big hassle to get authentication done. I would like to keep this as simple as possible by just identifying the hosts domain using wildcards ie: "*.svn-repos.org" no differences in protocol (https, http, svn+ssl...) or authentication realms. If I have the same account with username/password that has access to multiple repositories in multiple servers, why should I have to enter it a thousand times in many different ways because of variations of protocols and realm strings ??
            Hide
            joce jocelyn fournier added a comment -

            Hi,

            With the latest jenkins 1.557 I'm getting a new issue and a new stack when trying to get the externals :

            hudson.util.IOException2: revision check failed on http://....
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1320)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518)
            	at hudson.model.Run.execute(Run.java:1688)
            	at hudson.matrix.MatrixBuild.run(MatrixBuild.java:304)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:231)
            	at hudson.model.OneOffExecutor.run(OneOffExecutor.java:43)
            Caused by: org.tmatesoft.svn.core.SVNException: svn: E175002: REPORT /svn/.... failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:386)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doReport(DAVConnection.java:334)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doReport(DAVConnection.java:324)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.logImpl(DAVRepository.java:995)
            	at org.tmatesoft.svn.core.io.SVNRepository.log(SVNRepository.java:1035)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:181)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
            	... 12 more
            Caused by: svn: E175002: REPORT /svn/.... failed
            	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)
            	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:154)
            	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:97)
            	... 28 more
            Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -4
            	at java.lang.String.substring(String.java:1875)
            	at hudson.scm.DirAwareSVNXMLLogHandler.handleLogEntry(DirAwareSVNXMLLogHandler.java:90)
            	at org.tmatesoft.svn.core.internal.wc2.compat.SvnCodec$7.receive(SvnCodec.java:167)
            	at org.tmatesoft.svn.core.internal.wc2.compat.SvnCodec$7.receive(SvnCodec.java:164)
            	at org.tmatesoft.svn.core.wc2.SvnReceivingOperation.receive(SvnReceivingOperation.java:78)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.handleLogEntry(SvnRemoteLog.java:199)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository$1.handleLogEntry(DAVRepository.java:950)
            	at org.tmatesoft.svn.core.internal.io.dav.handlers.DAVLogHandler.endElement(DAVLogHandler.java:226)
            	at org.tmatesoft.svn.core.internal.io.dav.handlers.BasicDAVHandler.endElement(BasicDAVHandler.java:103)
            	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
            	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742)
            	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)
            	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
            	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
            	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
            	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
            	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
            	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
            	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
            	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:911)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:876)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.dispatch(HTTPRequest.java:220)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:480)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 27 more
            Finished: FAILURE
            

            Once again, this one is completely random

            Thanks,
            Jocelyn

            Show
            joce jocelyn fournier added a comment - Hi, With the latest jenkins 1.557 I'm getting a new issue and a new stack when trying to get the externals : hudson.util.IOException2: revision check failed on http: //.... at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899) at hudson.model.AbstractProject.checkout(AbstractProject.java:1320) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518) at hudson.model.Run.execute(Run.java:1688) at hudson.matrix.MatrixBuild.run(MatrixBuild.java:304) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) at hudson.model.OneOffExecutor.run(OneOffExecutor.java:43) Caused by: org.tmatesoft.svn.core.SVNException: svn: E175002: REPORT /svn/.... failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:386) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doReport(DAVConnection.java:334) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doReport(DAVConnection.java:324) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.logImpl(DAVRepository.java:995) at org.tmatesoft.svn.core.io.SVNRepository.log(SVNRepository.java:1035) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:181) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177) ... 12 more Caused by: svn: E175002: REPORT /svn/.... failed at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208) at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:154) at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:97) ... 28 more Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -4 at java.lang. String .substring( String .java:1875) at hudson.scm.DirAwareSVNXMLLogHandler.handleLogEntry(DirAwareSVNXMLLogHandler.java:90) at org.tmatesoft.svn.core.internal.wc2.compat.SvnCodec$7.receive(SvnCodec.java:167) at org.tmatesoft.svn.core.internal.wc2.compat.SvnCodec$7.receive(SvnCodec.java:164) at org.tmatesoft.svn.core.wc2.SvnReceivingOperation.receive(SvnReceivingOperation.java:78) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.handleLogEntry(SvnRemoteLog.java:199) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository$1.handleLogEntry(DAVRepository.java:950) at org.tmatesoft.svn.core.internal.io.dav.handlers.DAVLogHandler.endElement(DAVLogHandler.java:226) at org.tmatesoft.svn.core.internal.io.dav.handlers.BasicDAVHandler.endElement(BasicDAVHandler.java:103) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:911) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:876) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.dispatch(HTTPRequest.java:220) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:480) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 27 more Finished: FAILURE Once again, this one is completely random Thanks, Jocelyn
            Hide
            omar Martin Olsson added a comment -

            Jocelyn, this last error message looks like #JENKINS-22199

            Show
            omar Martin Olsson added a comment - Jocelyn, this last error message looks like # JENKINS-22199
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Daniel Beck
            Path:
            src/main/java/hudson/scm/SubversionSCM.java
            http://jenkins-ci.org/commit/subversion-plugin/69ef77b2957b8f4f5bc9b284baf82aa71269ea98
            Log:
            JENKINS-21785 Fix for PR 70 / aabd40a

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: src/main/java/hudson/scm/SubversionSCM.java http://jenkins-ci.org/commit/subversion-plugin/69ef77b2957b8f4f5bc9b284baf82aa71269ea98 Log: JENKINS-21785 Fix for PR 70 / aabd40a
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Stephen Connolly
            Path:
            src/main/java/hudson/scm/SubversionSCM.java
            http://jenkins-ci.org/commit/subversion-plugin/a923c5011464bce84772137475df36fb99cd643f
            Log:
            Merge pull request #74 from daniel-beck/notify-commit-external-credentials

            [FIXED JENKINS-21785] Check for changes in folders linked via svn:externals fails due to missing credentials

            • Typo in original code and externals credentials were not being resolved correctly. Good catch by @daniel-beck

            Compare: https://github.com/jenkinsci/subversion-plugin/compare/0a17b9302a1b...a923c5011464

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/java/hudson/scm/SubversionSCM.java http://jenkins-ci.org/commit/subversion-plugin/a923c5011464bce84772137475df36fb99cd643f Log: Merge pull request #74 from daniel-beck/notify-commit-external-credentials [FIXED JENKINS-21785] Check for changes in folders linked via svn:externals fails due to missing credentials Typo in original code and externals credentials were not being resolved correctly. Good catch by @daniel-beck Compare: https://github.com/jenkinsci/subversion-plugin/compare/0a17b9302a1b...a923c5011464
            Hide
            awbeck87 andrew beck added a comment - - edited

            How do I apply this fix instead of waiting for a new jenkins war version to included this?

            Thanks
            Andrew.

            Show
            awbeck87 andrew beck added a comment - - edited How do I apply this fix instead of waiting for a new jenkins war version to included this? Thanks Andrew.
            Hide
            gordin Christoph Vogtländer added a comment -

            Unfortunately the issue is still present in multi-configuration projects:

            org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/aaa/trunk failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148)
            	at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2712)
            	at hudson.scm.SubversionSCM$ModuleLocation$getUUID.call(Unknown Source)
            	at Script1$_run_closure1_closure2.doCall(Script1.groovy:6)
            	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            	at java.lang.reflect.Method.invoke(Unknown Source)
            	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
            	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
            	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
            	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:903)
            	at groovy.lang.Closure.call(Closure.java:415)
            	at groovy.lang.Closure.call(Closure.java:428)
            	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1379)
            	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1351)
            	at org.codehaus.groovy.runtime.dgm$170.invoke(Unknown Source)
            	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
            	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
            	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
            	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
            	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
            	at Script1$_run_closure1.doCall(Script1.groovy:4)
            	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            	at java.lang.reflect.Method.invoke(Unknown Source)
            	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
            	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
            	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
            	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:903)
            	at groovy.lang.Closure.call(Closure.java:415)
            	at groovy.lang.Closure.call(Closure.java:428)
            	at org.codehaus.groovy.runtime.DefaultGroovyMethods.with(DefaultGroovyMethods.java:196)
            	at org.codehaus.groovy.runtime.dgm$926.invoke(Unknown Source)
            	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
            	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
            	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
            	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
            	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
            	at Script1.run(Script1.groovy:3)
            	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)
            	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618)
            	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)
            	at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:150)
            	at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:122)
            	at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
            	at hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java:119)
            	at jenkins.model.Jenkins._doScript(Jenkins.java:3386)
            	at jenkins.model.Jenkins.doScript(Jenkins.java:3363)
            	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            	at java.lang.reflect.Method.invoke(Unknown Source)
            	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
            	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
            	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
            	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120)
            	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
            	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
            	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
            	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
            	at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
            	at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
            	at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
            	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
            	at com.marvelution.jenkins.plugins.jira.filter.OAuthServletFilter.doFilter(OAuthServletFilter.java:70)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            	at com.marvelution.jenkins.plugins.jira.filter.StreamsServletFilter.doFilter(StreamsServletFilter.java:84)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            	at com.marvelution.jenkins.plugins.jira.filter.ApplinksServletFilter.doFilter(ApplinksServletFilter.java:91)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            	at com.marvelution.jenkins.plugins.jira.oauth.OAuthFilter.doFilter(OAuthFilter.java:77)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
            	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
            	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
            	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
            	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
            	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
            	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
            	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
            	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
            	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            	at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164)
            	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
            	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
            	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
            	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
            	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
            	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
            	at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
            	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
            	at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
            	at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227)
            	at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
            	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
            	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
            	at java.util.concurrent.FutureTask.run(Unknown Source)
            	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            	at java.lang.Thread.run(Unknown Source)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 128 more
            

            I'm using Jenkins Subversion Plug-In version "2.3-SNAPSHOT (private-03/31/2014 18:05-jenkins)"

            Show
            gordin Christoph Vogtländer added a comment - Unfortunately the issue is still present in multi-configuration projects: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/aaa/trunk failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:148) at hudson.scm.SubversionSCM$ModuleLocation.getUUID(SubversionSCM.java:2712) at hudson.scm.SubversionSCM$ModuleLocation$getUUID.call(Unknown Source) at Script1$_run_closure1_closure2.doCall(Script1.groovy:6) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:903) at groovy.lang.Closure.call(Closure.java:415) at groovy.lang.Closure.call(Closure.java:428) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1379) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1351) at org.codehaus.groovy.runtime.dgm$170.invoke(Unknown Source) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at Script1$_run_closure1.doCall(Script1.groovy:4) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:903) at groovy.lang.Closure.call(Closure.java:415) at groovy.lang.Closure.call(Closure.java:428) at org.codehaus.groovy.runtime.DefaultGroovyMethods.with(DefaultGroovyMethods.java:196) at org.codehaus.groovy.runtime.dgm$926.invoke(Unknown Source) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at Script1.run(Script1.groovy:3) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589) at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:150) at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:122) at hudson.remoting.LocalChannel.call(LocalChannel.java:45) at hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java:119) at jenkins.model.Jenkins._doScript(Jenkins.java:3386) at jenkins.model.Jenkins.doScript(Jenkins.java:3363) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) at org.kohsuke.stapler.Stapler.service(Stapler.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) at winstone.ServletConfiguration.execute(ServletConfiguration.java:248) at winstone.RequestDispatcher.forward(RequestDispatcher.java:333) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at com.marvelution.jenkins.plugins.jira.filter.OAuthServletFilter.doFilter(OAuthServletFilter.java:70) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at com.marvelution.jenkins.plugins.jira.filter.StreamsServletFilter.doFilter(StreamsServletFilter.java:84) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at com.marvelution.jenkins.plugins.jira.filter.ApplinksServletFilter.doFilter(ApplinksServletFilter.java:91) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at com.marvelution.jenkins.plugins.jira.oauth.OAuthFilter.doFilter(OAuthFilter.java:77) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.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:164) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at winstone.RequestDispatcher.forward(RequestDispatcher.java:331) at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227) at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang. Thread .run(Unknown Source) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at hudson.scm.FilterSVNAuthenticationManager.getFirstAuthentication(FilterSVNAuthenticationManager.java:35) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 128 more I'm using Jenkins Subversion Plug-In version "2.3-SNAPSHOT (private-03/31/2014 18:05-jenkins)"
            Hide
            soukupmi michael soukup added a comment -

            Daniel Beck added a comment - 01/Apr/14 8:18 AM
            Richard Bergoin: Not sure how many of the preceding comments you read, but please note that this fix simply adds support for "additional credentials" in some code paths that used no credentials at all. You'll still need to define credentials for the explicitly defined modules, you'll still need to add "additional credentials" in case of externals, even within the same repos as your other modules , and you need to specify the correct realm for those so they are considered at all during authentication.
            If you read and understood all of the previous comments to this issue, and followed the instructions, but the problem still occurs, please post the entire stack trace, including all the "Caused by" sections. The error message alone is useless.

            so if I understood correctly the fix Daniel Beck made fixes only the hook call and not the "use the specified credentials on all paths" issue and you still have to add the additional credentials (I still have this credential issue, too)

            Show
            soukupmi michael soukup added a comment - Daniel Beck added a comment - 01/Apr/14 8:18 AM Richard Bergoin: Not sure how many of the preceding comments you read, but please note that this fix simply adds support for "additional credentials" in some code paths that used no credentials at all. You'll still need to define credentials for the explicitly defined modules, you'll still need to add "additional credentials" in case of externals, even within the same repos as your other modules , and you need to specify the correct realm for those so they are considered at all during authentication. If you read and understood all of the previous comments to this issue, and followed the instructions, but the problem still occurs, please post the entire stack trace, including all the "Caused by" sections. The error message alone is useless. so if I understood correctly the fix Daniel Beck made fixes only the hook call and not the "use the specified credentials on all paths" issue and you still have to add the additional credentials (I still have this credential issue, too)
            Hide
            danielbeck Daniel Beck added a comment -

            Christoph Vogtländer: What's the script you're executing? What are you passing as parameter to getUUID?

            Show
            danielbeck Daniel Beck added a comment - Christoph Vogtländer : What's the script you're executing? What are you passing as parameter to getUUID ?
            Hide
            gordin Christoph Vogtländer added a comment -

            Daniel Beck: I'm using the script you provided in a comment above

            def p = Jenkins.instance.getItemByFullName('multi_configuration_project');
            
            p.scm.with {
              it.getProjectLocations(p).each { loc ->
                    println loc
              	println loc.getUUID(p)
              }
            }
            
            Show
            gordin Christoph Vogtländer added a comment - Daniel Beck: I'm using the script you provided in a comment above def p = Jenkins.instance.getItemByFullName('multi_configuration_project'); p.scm.with { it.getProjectLocations(p).each { loc -> println loc println loc.getUUID(p) } }
            Hide
            gordin Christoph Vogtländer added a comment -

            Daniel Beck: sorry, all-clear. Adding "additional credentials" including a port number solved the problem. Don't know why. In all other projects I defined:

            <https://server> VisualSVN Server

            in this project i need:

            <https://server:443> VisualSVN Server

            Only difference is that this is a multi-configuration project with the sub-configurations running on Linux slaves. All other projects are free-style-projects (running on Windows master or Linux slave)

            Show
            gordin Christoph Vogtländer added a comment - Daniel Beck: sorry, all-clear. Adding "additional credentials" including a port number solved the problem. Don't know why. In all other projects I defined: <https: //server> VisualSVN Server in this project i need: <https: //server:443> VisualSVN Server Only difference is that this is a multi-configuration project with the sub-configurations running on Linux slaves. All other projects are free-style-projects (running on Windows master or Linux slave)
            Hide
            gordin Christoph Vogtländer added a comment -

            michael soukup: yes, you need to define additional credentials

            Show
            gordin Christoph Vogtländer added a comment - michael soukup : yes, you need to define additional credentials
            Hide
            danielbeck Daniel Beck added a comment -

            michael soukup: Exactly. I fixed only the "bug" part of this issue, not the "weird behavior by design" part. I suggest you open a new issue as an improvement/feature request that e.g. a specific job's normal credentials should also be considered for externals authentication.

            Christoph Vogtländer: The plugin seems to have some support for legacy credentials, so it's possible jobs predating the upgrade from 1.x to 2.x don't fail in all the ways newer jobs do. See this comment for references to the code building the reference realm strings that are compared to what you enter (exact string match required).

            andrew beck: Build the Subversion plugin yourself, or download a snapshot build including the changes, e.g. the HPI from here.

            Show
            danielbeck Daniel Beck added a comment - michael soukup : Exactly. I fixed only the "bug" part of this issue, not the "weird behavior by design" part. I suggest you open a new issue as an improvement/feature request that e.g. a specific job's normal credentials should also be considered for externals authentication. Christoph Vogtländer : The plugin seems to have some support for legacy credentials, so it's possible jobs predating the upgrade from 1.x to 2.x don't fail in all the ways newer jobs do. See this comment for references to the code building the reference realm strings that are compared to what you enter (exact string match required). andrew beck : Build the Subversion plugin yourself, or download a snapshot build including the changes, e.g. the HPI from here .
            Hide
            soukupmi michael soukup added a comment -

            @Daniel Beck - might be that this issue is a "weird behavior by design", but up to the latest release it was working with no additional credentials.
            The last update (Subversion-Plugin from 1.54 to 2.2.) broke that so now I have to define the additional credentials for every job.
            This was the reason I opened my bug entry (duplicate) and contributed to this one.
            I still think this is a bug as it was a major change in how the credentials are treated, but as the "workaround" with additional credentials works for me I'll leave it at that.

            Show
            soukupmi michael soukup added a comment - @ Daniel Beck - might be that this issue is a "weird behavior by design", but up to the latest release it was working with no additional credentials. The last update (Subversion-Plugin from 1.54 to 2.2.) broke that so now I have to define the additional credentials for every job. This was the reason I opened my bug entry (duplicate) and contributed to this one. I still think this is a bug as it was a major change in how the credentials are treated, but as the "workaround" with additional credentials works for me I'll leave it at that.
            Hide
            simabeis Marcel Beister added a comment -

            The final 2.3 version of subversion plugin did NOT fix this issue for me, so I would like to reopen this issue. I still get the same error that is reported in the initial bug report.

            The "version check fail" seems to be only reported for externals that do have a change. All others are reported "no change for ... since the previous build".

            Show
            simabeis Marcel Beister added a comment - The final 2.3 version of subversion plugin did NOT fix this issue for me, so I would like to reopen this issue. I still get the same error that is reported in the initial bug report. The "version check fail" seems to be only reported for externals that do have a change. All others are reported "no change for ... since the previous build".
            Hide
            simabeis Marcel Beister added a comment -

            I reopened the issue because the problems are still not resolved for me.

            Situation:

            • the credentials are "<https://server:443) ..."
            • all externals are within the same repository (starting with "^/...")
            • version checks are failing with the "missing credentials" error
            • only version checks of externals that have in fact changes seem to fail

            Plattform:

            • Windows 7 x64 for master and clients
            • Subversion 1.7 working copies
            • Subversion plugin 2.3 final was tested
            • Jenkins 1.559 was used for the test
            Show
            simabeis Marcel Beister added a comment - I reopened the issue because the problems are still not resolved for me. Situation: the credentials are "< https://server:443 ) ..." all externals are within the same repository (starting with "^/...") version checks are failing with the "missing credentials" error only version checks of externals that have in fact changes seem to fail Plattform: Windows 7 x64 for master and clients Subversion 1.7 working copies Subversion plugin 2.3 final was tested Jenkins 1.559 was used for the test
            Hide
            gordin Christoph Vogtländer added a comment -

            Marcel Beister: have you defined "additional credentials"? This is needed even if the credentials for the local repository and externals are the same.

            Show
            gordin Christoph Vogtländer added a comment - Marcel Beister : have you defined "additional credentials"? This is needed even if the credentials for the local repository and externals are the same.
            Hide
            simabeis Marcel Beister added a comment -

            I'm not sure what you mean by "additional credentials". I added the credentials "<https://server:443) ..." once to the configuration and choose this entry in all my projects (which was very annoying btw).

            Show
            simabeis Marcel Beister added a comment - I'm not sure what you mean by "additional credentials". I added the credentials "< https://server:443 ) ..." once to the configuration and choose this entry in all my projects (which was very annoying btw).
            Hide
            danielbeck Daniel Beck added a comment -

            Marcel: Please post the full realm entered for any 'additional credentials' (the close parenthesis looks wrong already). If there's a realm name of server name you don't want to post. Verify using any of the above mentioned methods that you actually specify the correct realm. Make sure you didn't enter a leading or trailing space into the text field.

            Show
            danielbeck Daniel Beck added a comment - Marcel: Please post the full realm entered for any 'additional credentials' (the close parenthesis looks wrong already). If there's a realm name of server name you don't want to post. Verify using any of the above mentioned methods that you actually specify the correct realm. Make sure you didn't enter a leading or trailing space into the text field.
            Hide
            danielbeck Daniel Beck added a comment -

            Resolving this again, user didn't bother to read the comments for this issue.

            Show
            danielbeck Daniel Beck added a comment - Resolving this again, user didn't bother to read the comments for this issue.
            Hide
            gordin Christoph Vogtländer added a comment -

            Marcel Beister: in every job in section "Source Code Management" below the definition of the Subversion "Modules" you must add "Additional credentials" (there is a button reading "Add additional credentials...") in case there are svn:external definitions (even if the credentials for the externals do not differ from the credentials entered under "Modules").

            Show
            gordin Christoph Vogtländer added a comment - Marcel Beister : in every job in section "Source Code Management" below the definition of the Subversion "Modules" you must add "Additional credentials" (there is a button reading "Add additional credentials...") in case there are svn:external definitions (even if the credentials for the externals do not differ from the credentials entered under "Modules").
            Hide
            soukupmi michael soukup added a comment -

            @Marcel Beister: it is less annoying for you if you edit the config.xml files directly and restart the server as I described in comment-196380
            and less annoying for us if you read all comments (especially if there are a lot of explanations and how-tos in these)

            Show
            soukupmi michael soukup added a comment - @ Marcel Beister : it is less annoying for you if you edit the config.xml files directly and restart the server as I described in comment-196380 and less annoying for us if you read all comments (especially if there are a lot of explanations and how-tos in these)
            Hide
            mikepenz Mike Penz added a comment -

            @Marcel Beister

            I've had the same problem. Perhaps this description helps with solving your problem:
            http://stackoverflow.com/a/22812642/325479

            Show
            mikepenz Mike Penz added a comment - @Marcel Beister I've had the same problem. Perhaps this description helps with solving your problem: http://stackoverflow.com/a/22812642/325479
            Hide
            simabeis Marcel Beister added a comment -

            Thx for your help, I will try your suggestions this asap. And you are right, I did not read all comments of this thread, sorry for that.

            @michael: You should also be aware that other users might run into this problem as well because they do not read the comments from this bug report either

            Show
            simabeis Marcel Beister added a comment - Thx for your help, I will try your suggestions this asap. And you are right, I did not read all comments of this thread, sorry for that. @michael: You should also be aware that other users might run into this problem as well because they do not read the comments from this bug report either
            Hide
            danielbeck Daniel Beck added a comment -

            Edited issue description to mention that this has been resolved. Hopefully future visitors read it

            Show
            danielbeck Daniel Beck added a comment - Edited issue description to mention that this has been resolved. Hopefully future visitors read it
            Hide
            binary binary added a comment -

            I'd still call this "No credentials to try" an unresolved bug (if you open a window to be able to get into a house, it does not fix the broken door, does it?). If specifying additional credentials was a requirement, then every checkout with svn:externals would fail unless additional credentials are added. Instead, these checkouts succeed with and without additional credentials. Even logs with "No credential to try" exception show that all externals were successfully fetched before printing "no change for ..." messages.

            Show
            binary binary added a comment - I'd still call this "No credentials to try" an unresolved bug (if you open a window to be able to get into a house, it does not fix the broken door, does it?). If specifying additional credentials was a requirement, then every checkout with svn:externals would fail unless additional credentials are added. Instead, these checkouts succeed with and without additional credentials. Even logs with "No credential to try" exception show that all externals were successfully fetched before printing "no change for ..." messages.
            Hide
            dotsev dotsev added a comment -

            Hi,
            binary is right. The current solution is only a workaround. A final solution is not available yet.
            Reopen?

            Show
            dotsev dotsev added a comment - Hi, binary is right. The current solution is only a workaround. A final solution is not available yet. Reopen?
            Hide
            danielbeck Daniel Beck added a comment -

            I'd prefer that a new issue (type Improvement) was opened for anyone disagreeing with the 2.3+ state of the plugin in this regard. As I see it, there were two different, related problems in 2.0:

            1. Additional Credentials are required for externals (a deliberate design decision by Stephen Connolly), requiring job config changes.
            2. Even that didn't work in some situations due to bugs in the implementation (post-commit hook, polling, ...).

            I resolved all occurrences of "2" I could find referencing this issue, as this issue is of type Bug. These are the ones without workaround of changing job configuration.

            Requests to change "1" I'd consider to be an "Improvement", unrelated to the existing fixes – so tracking these independently would be best. We can always link to that new issue from the message at the top to direct people there.

            Show
            danielbeck Daniel Beck added a comment - I'd prefer that a new issue (type Improvement ) was opened for anyone disagreeing with the 2.3+ state of the plugin in this regard. As I see it, there were two different , related problems in 2.0: 1. Additional Credentials are required for externals (a deliberate design decision by Stephen Connolly), requiring job config changes. 2. Even that didn't work in some situations due to bugs in the implementation (post-commit hook, polling, ...). I resolved all occurrences of "2" I could find referencing this issue, as this issue is of type Bug. These are the ones without workaround of changing job configuration. Requests to change "1" I'd consider to be an "Improvement", unrelated to the existing fixes – so tracking these independently would be best. We can always link to that new issue from the message at the top to direct people there.
            Hide
            binary binary added a comment -

            Try deleting workspace and running the build, it will succeed without additional credentials, all externals will be checked out. This means that additional credentials are not required. This also means that fixing exception "No credentials to try", when sources in externals are changed, would be a bugfix, not an improvement (those changes are still checked out before an exception).

            Show
            binary binary added a comment - Try deleting workspace and running the build, it will succeed without additional credentials, all externals will be checked out. This means that additional credentials are not required. This also means that fixing exception "No credentials to try", when sources in externals are changed, would be a bugfix, not an improvement (those changes are still checked out before an exception).
            Hide
            danielbeck Daniel Beck added a comment -

            binary: Please provide some references (i.e. code) for your claims. Because that's not how the plugin works AFAICT.

            Externals that are checked out inherit the credential defined for the location which is explicitly being checked out (e.g. SVNUpdateClient.doCheckout() call). Only if these don't work, Additional Credentials are needed.

            No such "inheritance" or association to an explicitly configured location exists for externals when polling for changes, they're just another location (automatically, by the plugin) defined in the project – but one without explicitly specified credentials, requiring fallback to Additional Credentials immediately.

            Adding this association, or just adding all credentials already used in the project for any external being checked out, would be an improvement. And these are the only options I see right now for the 'Improvement' to go.

            Show
            danielbeck Daniel Beck added a comment - binary : Please provide some references (i.e. code) for your claims. Because that's not how the plugin works AFAICT. Externals that are checked out inherit the credential defined for the location which is explicitly being checked out (e.g. SVNUpdateClient.doCheckout() call). Only if these don't work, Additional Credentials are needed. No such "inheritance" or association to an explicitly configured location exists for externals when polling for changes, they're just another location (automatically, by the plugin) defined in the project – but one without explicitly specified credentials, requiring fallback to Additional Credentials immediately. Adding this association, or just adding all credentials already used in the project for any external being checked out, would be an improvement. And these are the only options I see right now for the 'Improvement' to go.
            Hide
            soukupmi michael soukup added a comment - - edited

            Daniel Beck: as I wrote a few comments ago I too see this as a workaround as the plugin upgrade broke the behaviour (it was working without additional credentials before 2.0) - but I can live with the workaround and I also can follow your explanation (check out vs. change detection)

            Maybe you could rephrase your entry in the bug description anyway to make it clearer as your bugfixes do not match the description of the bug entry and thus the bug is not fixed but the behaviour still intended.
            Maybe something like

            "Since version 2.0 you have to add additional credits to your jobs with externals. You need to reconfigure them as described in the comments below. This behaviour is intended and not a bug."

            would be clearer.

            Show
            soukupmi michael soukup added a comment - - edited Daniel Beck : as I wrote a few comments ago I too see this as a workaround as the plugin upgrade broke the behaviour (it was working without additional credentials before 2.0) - but I can live with the workaround and I also can follow your explanation (check out vs. change detection) Maybe you could rephrase your entry in the bug description anyway to make it clearer as your bugfixes do not match the description of the bug entry and thus the bug is not fixed but the behaviour still intended. Maybe something like "Since version 2.0 you have to add additional credits to your jobs with externals. You need to reconfigure them as described in the comments below. This behaviour is intended and not a bug." would be clearer.
            Hide
            wh WH added a comment -

            I hope I understood it right.

            The problem is:
            "No such "inheritance" or association to an explicitly configured location exists for externals when polling for changes [...]"

            The solution is:
            "Adding this association, or just adding all credentials already used in the project for any external [...]"

            Why not implementing this solution? It would solve the orginal error of this issue.

            Show
            wh WH added a comment - I hope I understood it right. The problem is: "No such "inheritance" or association to an explicitly configured location exists for externals when polling for changes [...] " The solution is: "Adding this association, or just adding all credentials already used in the project for any external [...] " Why not implementing this solution? It would solve the orginal error of this issue.
            Hide
            stephenconnolly Stephen Connolly added a comment -

            Just to clarify why externals need their own credentials.

            There is a security risk in using Jenkins' credentials to checkout an external even if the external is the exact same repo as the module you are checking out.

            Consider the case where a developer has commit access to /trunk/publicproject in the repo but does not have read access to /trunk/secretproject

            The Jenkins admin has locked down Jenkins so that the developer cannot modify the Jenkins jobs.

            With the old behaviour, the developer could just commit to /trunk/publicproject adding an svn:external to checkout /trunk/secretproject and modify the build script to tar up the external checkout and email it to themselves... ok they have left a track of what they did, but now the secret project code is no-longer secret... now consider the case where it was that the developer's computer was stolen or hacked.

            You could argue that the correct way to handle that would be to give Jenkins two credentials, the first that is scoped to /trunk/publicproject and the second scoped to /trunk/secretproject... well with the old 1.x way Jenkins would just try all credentials until it found one that works... so still lost there

            With 2.x you could do that but now you have to remember to use the correct credentials for the correct paths (ok, so credential domains can help there, but it does get a lot more complex... and there are cases where you cannot)

            So given that most people just give Jenkins a credential that has read access everywhere, the only safe way to handle externals is to require configuring the credentials to use when checking out the external.

            A valid enhancement request would be to give a checkbox (default to off) to use matching module credentials when doing a checkout of externals. That would at least make things easier for the 80% who don't need the gaping security hole fixed because of their permissive SVN server security model.

            Show
            stephenconnolly Stephen Connolly added a comment - Just to clarify why externals need their own credentials. There is a security risk in using Jenkins' credentials to checkout an external even if the external is the exact same repo as the module you are checking out. Consider the case where a developer has commit access to /trunk/publicproject in the repo but does not have read access to /trunk/secretproject The Jenkins admin has locked down Jenkins so that the developer cannot modify the Jenkins jobs. With the old behaviour, the developer could just commit to /trunk/publicproject adding an svn:external to checkout /trunk/secretproject and modify the build script to tar up the external checkout and email it to themselves... ok they have left a track of what they did, but now the secret project code is no-longer secret... now consider the case where it was that the developer's computer was stolen or hacked. You could argue that the correct way to handle that would be to give Jenkins two credentials, the first that is scoped to /trunk/publicproject and the second scoped to /trunk/secretproject... well with the old 1.x way Jenkins would just try all credentials until it found one that works... so still lost there With 2.x you could do that but now you have to remember to use the correct credentials for the correct paths (ok, so credential domains can help there, but it does get a lot more complex... and there are cases where you cannot) So given that most people just give Jenkins a credential that has read access everywhere, the only safe way to handle externals is to require configuring the credentials to use when checking out the external. A valid enhancement request would be to give a checkbox (default to off) to use matching module credentials when doing a checkout of externals. That would at least make things easier for the 80% who don't need the gaping security hole fixed because of their permissive SVN server security model.
            Hide
            soukupmi michael soukup added a comment -

            Stephen Connolly: thank you for the clarification.
            What I still don't understand regarding this is: the checkout does not always fail (it uses the credentials from the parent project in some cases as e.g. a manual build request or clean checkout as binary mentioned). This would be the security issue you mentioned.

            What does fail is the revision check on the external project.

            Show
            soukupmi michael soukup added a comment - Stephen Connolly : thank you for the clarification. What I still don't understand regarding this is: the checkout does not always fail (it uses the credentials from the parent project in some cases as e.g. a manual build request or clean checkout as binary mentioned). This would be the security issue you mentioned. What does fail is the revision check on the external project.
            Hide
            gordin Christoph Vogtländer added a comment - - edited

            Stephen Connolly: consider /trunk/publicproject needs an (svn:externals) to /trunk/sharedlib. The user can then still just add the external definition to /trunk/secretproject and will be able to get the code. You are right where you started before the changes. There is nothing you can do here. IMHO the current behaviour is not adding security but only complexity/obscurity, which is always bad. If you run a public Jenkins instance using a subversion repository with non public code you have to know what you are doing. I think this scenario should be documented on the plug-in page to make sysadmins aware. But I don't think that this is solvable in the plug-in without adding even more complexity.
            Maybe it would be better to default "Ignore externals" to "on" and in case the user switches this off notify the user about the possible pitfalls. He can then easily decide to just configure the external explicitly as an additional module.

            Show
            gordin Christoph Vogtländer added a comment - - edited Stephen Connolly : consider /trunk/publicproject needs an (svn:externals) to /trunk/sharedlib. The user can then still just add the external definition to /trunk/secretproject and will be able to get the code. You are right where you started before the changes. There is nothing you can do here. IMHO the current behaviour is not adding security but only complexity/obscurity, which is always bad. If you run a public Jenkins instance using a subversion repository with non public code you have to know what you are doing. I think this scenario should be documented on the plug-in page to make sysadmins aware. But I don't think that this is solvable in the plug-in without adding even more complexity. Maybe it would be better to default "Ignore externals" to "on" and in case the user switches this off notify the user about the possible pitfalls. He can then easily decide to just configure the external explicitly as an additional module.
            Hide
            stephenconnolly Stephen Connolly added a comment -

            the svnkit library has been known to leak some credentials anyway...

            Show
            stephenconnolly Stephen Connolly added a comment - the svnkit library has been known to leak some credentials anyway...
            Hide
            stephenconnolly Stephen Connolly added a comment -

            @Christoph: that would be another approach that is equally valid... I suspect the pair of both defaulting ignoreExternals to on and providing an option to reuse module credentials where matching would be the best of breed solution

            Show
            stephenconnolly Stephen Connolly added a comment - @Christoph: that would be another approach that is equally valid... I suspect the pair of both defaulting ignoreExternals to on and providing an option to reuse module credentials where matching would be the best of breed solution
            Hide
            wh WH added a comment -

            @stephenconnolly:
            Thanks for the background informations. How about a list of "allowed URLs of externals"?

            Show
            wh WH added a comment - @stephenconnolly: Thanks for the background informations. How about a list of "allowed URLs of externals"?
            Hide
            stephenconnolly Stephen Connolly added a comment -

            @WH sadly svnkit does not give you that ability. The only thing it lets you have access to is the realm

            Show
            stephenconnolly Stephen Connolly added a comment - @WH sadly svnkit does not give you that ability. The only thing it lets you have access to is the realm
            Hide
            danielbeck Daniel Beck added a comment -

            WH

            Why not implementing this solution? It would solve the orginal error of this issue.

            I'm sure a pull request by anyone wishing to provide this would be appreciated by many.


            Stephen Connolly How does that work given that regular checkout simply reuses the same credential for checking out any externals? If the job configurer provides a sufficiently powerful credential, then any externals will also be checked out. It's only when an external cannot be checked out using the configured credential that it falls back to Additional Credentials.

            Therefore I consider it a viable solution to annotate any external location in the project with the module location that introduced it to reuse its credential – at least that's not brute-forcing credentials like in 1.x.

            Show
            danielbeck Daniel Beck added a comment - WH Why not implementing this solution? It would solve the orginal error of this issue. I'm sure a pull request by anyone wishing to provide this would be appreciated by many. Stephen Connolly How does that work given that regular checkout simply reuses the same credential for checking out any externals? If the job configurer provides a sufficiently powerful credential, then any externals will also be checked out. It's only when an external cannot be checked out using the configured credential that it falls back to Additional Credentials. Therefore I consider it a viable solution to annotate any external location in the project with the module location that introduced it to reuse its credential – at least that's not brute-forcing credentials like in 1.x.
            Hide
            stephenconnolly Stephen Connolly added a comment -

            @Daniel Beck

            Ha! it only seems that way. What happens is that SVNKit caches the realms/connections it has used already and reuses the existing connection from the connection pool. So it is the SVNKit library pulling the security rug out from under us

            Show
            stephenconnolly Stephen Connolly added a comment - @Daniel Beck Ha! it only seems that way. What happens is that SVNKit caches the realms/connections it has used already and reuses the existing connection from the connection pool. So it is the SVNKit library pulling the security rug out from under us
            Hide
            danielbeck Daniel Beck added a comment -

            A valid enhancement request would be to give a checkbox (default to off) to use matching module credentials when doing a checkout of externals. That would at least make things easier for the 80% who don't need the gaping security hole fixed because of their permissive SVN server security model.

            Not sure how that would work. In checkout, it's already effectively this way, and for polling etc. you have no idea which module introduced which external (AFAIK – is there a field I am missing?).


            Alternative approach:

            The current implementation allows to leave the per-module credentials empty and only specify Additional Credentials (just ignore the scary form validation errors) which are then used for all locations.

            We could go one step further and add a 'Default Credentials' field (or reinterpret an Additional Credential with empty realm?). Leave that field empty/don't define such an Additional Credential, and you get the current behavior. Select a credential as Default Credential/define such an Additional Credential and you can skip configuring any others.

            This way, users conscious about the security issue prevented by the credentials implementation can continue to specify individual credentials and curse SVNKit for its behavior while the rest can configure one credential, and don't have to care about externals or realms.

            WDYT?

            Show
            danielbeck Daniel Beck added a comment - A valid enhancement request would be to give a checkbox (default to off) to use matching module credentials when doing a checkout of externals. That would at least make things easier for the 80% who don't need the gaping security hole fixed because of their permissive SVN server security model. Not sure how that would work. In checkout, it's already effectively this way, and for polling etc. you have no idea which module introduced which external (AFAIK – is there a field I am missing?). Alternative approach: The current implementation allows to leave the per-module credentials empty and only specify Additional Credentials (just ignore the scary form validation errors) which are then used for all locations. We could go one step further and add a 'Default Credentials' field (or reinterpret an Additional Credential with empty realm?). Leave that field empty/don't define such an Additional Credential, and you get the current behavior. Select a credential as Default Credential/define such an Additional Credential and you can skip configuring any others. This way, users conscious about the security issue prevented by the credentials implementation can continue to specify individual credentials and curse SVNKit for its behavior while the rest can configure one credential, and don't have to care about externals or realms. WDYT?
            Hide
            gordin Christoph Vogtländer added a comment -

            Daniel Beck: alternative approach sounds good. I would go for a explicit "Default credentials" field instead of implicit behaviour when leaving realm empty.

            Show
            gordin Christoph Vogtländer added a comment - Daniel Beck : alternative approach sounds good. I would go for a explicit "Default credentials" field instead of implicit behaviour when leaving realm empty.
            Hide
            bsawyer ben s added a comment -

            We just ran into this issue. Glad to see there's already a solution, but it's really not ideal, having to walk through dozens of jobs and adding the same "Additional Credentials" field. It feels extremely redundant given it's all the same realm/credentials as each project's modules, and it looks sorta ugly (which is a nitpick, I guess).

            Forgive me as it's tough to determine from the above conversation - has it been decided that a "global" setting for this will be added at some point in a future version of the plugin? Is that what JENKINS-17103 is now addressing?

            Thanks

            Show
            bsawyer ben s added a comment - We just ran into this issue. Glad to see there's already a solution, but it's really not ideal, having to walk through dozens of jobs and adding the same "Additional Credentials" field. It feels extremely redundant given it's all the same realm/credentials as each project's modules, and it looks sorta ugly (which is a nitpick, I guess). Forgive me as it's tough to determine from the above conversation - has it been decided that a "global" setting for this will be added at some point in a future version of the plugin? Is that what JENKINS-17103 is now addressing? Thanks
            Hide
            danielbeck Daniel Beck added a comment - - edited

            The following would be a rough outline of a script to run in Script Console that adds an Additional Credential (by copying the first location's credential) to all projects with known externals:

            Jenkins.instance.getAllItems(AbstractProject).each { p ->
              if (p.scm instanceof hudson.scm.SubversionSCM) {
                if (p.scm.locations.size() < p.scm.getProjectLocations(p).size()) {
                  // known externals
                  println p.fullDisplayName
                  if (p.scm.locations.size() == 0) {
                    println "... no configured locations!?"
                    return
                  }
                  def auth = p.scm.locations[0].@credentialsId
                  if (auth == null) {
                    println "... no auth for first location"
                    return
                  }
                  if (p.scm.@additionalCredentials == null) {
                  	p.scm.@additionalCredentials = []
                  }
                  p.scm.@additionalCredentials.add(new hudson.scm.SubversionSCM.AdditionalCredentials('<https://svnserver:443> Subversion Authentication', auth))
                  println "... adding additional credential"
                  p.save()
                }
              }
            }
            return

            Just replace the domain "<https://svnserver:443> Subversion Authentication" with whatever's correct for you. It's a bit rough around the edges (e.g. doesn't check whether there's already an Additional Credential for the specified realm, only reuses the first location's credential ID, doesn't check whether the credential domain matches the auth realm, ...), but it should be a start.

            Show
            danielbeck Daniel Beck added a comment - - edited The following would be a rough outline of a script to run in Script Console that adds an Additional Credential (by copying the first location's credential) to all projects with known externals: Jenkins.instance.getAllItems(AbstractProject).each { p -> if (p.scm instanceof hudson.scm.SubversionSCM) { if (p.scm.locations.size() < p.scm.getProjectLocations(p).size()) { // known externals println p.fullDisplayName if (p.scm.locations.size() == 0) { println "... no configured locations!?" return } def auth = p.scm.locations[0].@credentialsId if (auth == null ) { println "... no auth for first location" return } if (p.scm.@additionalCredentials == null ) { p.scm.@additionalCredentials = [] } p.scm.@additionalCredentials.add( new hudson.scm.SubversionSCM.AdditionalCredentials('<https: //svnserver:443> Subversion Authentication', auth)) println "... adding additional credential" p.save() } } } return Just replace the domain "< https://svnserver:443 > Subversion Authentication" with whatever's correct for you. It's a bit rough around the edges (e.g. doesn't check whether there's already an Additional Credential for the specified realm, only reuses the first location's credential ID, doesn't check whether the credential domain matches the auth realm, ...), but it should be a start.
            Hide
            bsawyer ben s added a comment -

            Fantastic. Your script did the trick with only a few small changes (to suit our specific needs) and saved me time and groaning.

            Show
            bsawyer ben s added a comment - Fantastic. Your script did the trick with only a few small changes (to suit our specific needs) and saved me time and groaning.
            Hide
            electrawn Jason Potkanski added a comment -

            I spent the morning brute forcing adding an external credential to over 300 jobs, if this helps anyone, enjoy:

            find . -name config.xml -exec sed -i '|</locations>| a <additionalCredentials>\n<hudson.scm.SubversionSCM_-AdditionalCredentials>\n<realm>http://YOURSUBVERSIONSERVER</realm>\n<credentialsId></credentialsId>\n</hudson.scm.SubversionSCM_-AdditionalCredentials>\n</additionalCredentials>' {} \;

            Show
            electrawn Jason Potkanski added a comment - I spent the morning brute forcing adding an external credential to over 300 jobs, if this helps anyone, enjoy: find . -name config.xml -exec sed -i '|</locations>| a <additionalCredentials>\n<hudson.scm.SubversionSCM_-AdditionalCredentials>\n<realm> http://YOURSUBVERSIONSERVER </realm>\n<credentialsId></credentialsId>\n</hudson.scm.SubversionSCM_-AdditionalCredentials>\n</additionalCredentials>' {} \;
            Hide
            pawelgrz Pawel Grzegrzolka added a comment -

            I'm using externals. Few of them point to one host others to a different host. For each host I have separated creditation. Unfortunately mentioned workaround doesn't work for me, I still have an error:

            hudson.util.IOException2: revision check failed on https://host2/svn/repo/trunk
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            

            My job config.xml looks like that:

              <scm class="hudson.scm.SubversionSCM" plugin="subversion@2.4">
                <locations>
                  <hudson.scm.SubversionSCM_-ModuleLocation>
                    <remote>https://hostname1/svn/repo/trunk</remote>
                    <credentialsId>xxx</credentialsId>
                    <local>.</local>
                    <depthOption>infinity</depthOption>
                    <ignoreExternalsOption>false</ignoreExternalsOption>
                  </hudson.scm.SubversionSCM_-ModuleLocation>
                </locations>
                <additionalCredentials>
                  <hudson.scm.SubversionSCM_-AdditionalCredentials>
                    <realm>&lt;https://hostname2:443&gt; Authorization Realm</realm>
                    <credentialsId>yyy</credentialsId>
                  </hudson.scm.SubversionSCM_-AdditionalCredentials>
                  <hudson.scm.SubversionSCM_-AdditionalCredentials>
                    <realm>&lt;https://hostname1:443&gt; Authorization Realm</realm>
                    <credentialsId>xxx</credentialsId>
                  </hudson.scm.SubversionSCM_-AdditionalCredentials>
                </additionalCredentials>
            ...
            

            Is it something wrong with my configuration?

            Show
            pawelgrz Pawel Grzegrzolka added a comment - I'm using externals. Few of them point to one host others to a different host. For each host I have separated creditation. Unfortunately mentioned workaround doesn't work for me, I still have an error: hudson.util.IOException2: revision check failed on https://host2/svn/repo/trunk at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) My job config.xml looks like that: <scm class="hudson.scm.SubversionSCM" plugin="subversion@2.4"> <locations> <hudson.scm.SubversionSCM_-ModuleLocation> <remote>https://hostname1/svn/repo/trunk</remote> <credentialsId>xxx</credentialsId> <local>.</local> <depthOption>infinity</depthOption> <ignoreExternalsOption>false</ignoreExternalsOption> </hudson.scm.SubversionSCM_-ModuleLocation> </locations> <additionalCredentials> <hudson.scm.SubversionSCM_-AdditionalCredentials> <realm>&lt;https://hostname2:443&gt; Authorization Realm</realm> <credentialsId>yyy</credentialsId> </hudson.scm.SubversionSCM_-AdditionalCredentials> <hudson.scm.SubversionSCM_-AdditionalCredentials> <realm>&lt;https://hostname1:443&gt; Authorization Realm</realm> <credentialsId>xxx</credentialsId> </hudson.scm.SubversionSCM_-AdditionalCredentials> </additionalCredentials> ... Is it something wrong with my configuration?
            Hide
            danielbeck Daniel Beck added a comment -

            Pawel Grzegrzolka: Please post the full stack trace. The relevant parts seem to be missing.

            Show
            danielbeck Daniel Beck added a comment - Pawel Grzegrzolka : Please post the full stack trace. The relevant parts seem to be missing.
            Hide
            pawelgrz Pawel Grzegrzolka added a comment - - edited

            Here you go:

            hudson.util.IOException2: revision check failed on https://host/svn/repo/trunk
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:735)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:873)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580)
            	at hudson.model.Run.execute(Run.java:1684)
            	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:231)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/repo/trunk failed
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
            	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:179)
            	... 11 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
            	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
            	... 29 more
            
            Show
            pawelgrz Pawel Grzegrzolka added a comment - - edited Here you go: hudson.util.IOException2: revision check failed on https://host/svn/repo/trunk at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:735) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:873) at hudson.model.AbstractProject.checkout(AbstractProject.java:1414) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580) at hudson.model.Run.execute(Run.java:1684) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/repo/trunk failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:179) ... 11 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 29 more
            Hide
            justjim Jim . added a comment - - edited

            EDIT:
            Ooops. Found the reason:
            As soon as repo address and realm have both IP or both hostname (not when one has the name and another has IP) - it works OK. Sorry for reopening. My bad.


            Still happens every time some module is changed. Despite additional credentials with proper realm are set and "Emulate clean checkout ..." is choosen...
            If I manually remove all contents of job directory on the node (including .svn dir) - this node checkouts and builds absolutely OK, without this error. Until next time the module is changed - then this error appears again, and nothing helps, even setting "Check-out Strategy" to "Always check out a fresh copy". And I'm forced to manually run the ugly hack - groovy-script which totally cleans all job-directories on all nodes again (about 35 jobs on 5 different OS servers - Windows, Linux and OSX)...

            Jenkins version 1.574, svn plugin 2.4.1


            no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/boost/bin since the previous build
            no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/curl/bin since the previous build
            no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/freeimage/bin since the previous build
            no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/freetype/bin since the previous build
            no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/glew/bin since the previous build
            hudson.util.IOException2: revision check failed on svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/juce/src/modules
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:735)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:873)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1254)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:624)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:530)
            	at hudson.model.Run.execute(Run.java:1740)
            	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:234)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.createSaslClient(SVNSaslAuthenticator.java:306)
            	at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.authenticate(SVNSaslAuthenticator.java:92)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.authenticate(SVNConnection.java:194)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.authenticate(SVNRepositoryImpl.java:1275)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1253)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:179)
            	... 11 more
            Show
            justjim Jim . added a comment - - edited EDIT: Ooops. Found the reason: As soon as repo address and realm have both IP or both hostname (not when one has the name and another has IP) - it works OK. Sorry for reopening. My bad. Still happens every time some module is changed. Despite additional credentials with proper realm are set and " Emulate clean checkout ... " is choosen... If I manually remove all contents of job directory on the node (including .svn dir) - this node checkouts and builds absolutely OK, without this error. Until next time the module is changed - then this error appears again, and nothing helps, even setting " Check-out Strategy " to " Always check out a fresh copy ". And I'm forced to manually run the ugly hack - groovy-script which totally cleans all job-directories on all nodes again (about 35 jobs on 5 different OS servers - Windows, Linux and OSX)... Jenkins version 1.574 , svn plugin 2.4.1 no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/boost/bin since the previous build no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/curl/bin since the previous build no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/freeimage/bin since the previous build no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/freetype/bin since the previous build no change for svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/glew/bin since the previous build hudson.util.IOException2: revision check failed on svn://10.0.0.10/volumes/VOL_1/svnhome/repo/Thirdparty/trunk/juce/src/modules at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:735) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:873) at hudson.model.AbstractProject.checkout(AbstractProject.java:1254) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:624) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:530) at hudson.model.Run.execute(Run.java:1740) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:234) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.createSaslClient(SVNSaslAuthenticator.java:306) at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.authenticate(SVNSaslAuthenticator.java:92) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.authenticate(SVNConnection.java:194) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.authenticate(SVNRepositoryImpl.java:1275) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1253) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:179) ... 11 more
            Hide
            justjim Jim . added a comment -

            As soon as repo address and realm have both IP or both hostname (not when one has the name and another has IP) - it works OK.

            Show
            justjim Jim . added a comment - As soon as repo address and realm have both IP or both hostname (not when one has the name and another has IP) - it works OK.
            Hide
            derfunk Andreas Katzig added a comment - - edited

            We still encounter this issue, although I read through all comments and have configured everything accordingly and correct (in my opinion).

            We use Jenkins ver. 1.565.1 with Subversion plugin 2.4.1. We're using externals, build servers nodes, I added additional credentials for them, took care of the correct naming with its correct realm and brackets.

            Every random build does fail with the following exception, and this issue is really getting very very frustrating because the next build is working fine then. The Subversion plugin should be updated to improve the user experience (and functionality).

            no change for svn://xxx:3688/user/yyy/aaa since the previous build
            hudson.util.IOException2: revision check failed on svn://xxx:3688/zzz/code/trunk
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191)
            	at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
            	at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:735)
            	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:873)
            	at hudson.model.AbstractProject.checkout(AbstractProject.java:1252)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:615)
            	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
            	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:524)
            	at hudson.model.Run.execute(Run.java:1706)
            	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
            	at hudson.model.ResourceController.execute(ResourceController.java:88)
            	at hudson.model.Executor.run(Executor.java:232)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
            	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
            	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
            	at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.createSaslClient(SVNSaslAuthenticator.java:306)
            	at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.authenticate(SVNSaslAuthenticator.java:92)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.authenticate(SVNConnection.java:194)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.authenticate(SVNRepositoryImpl.java:1275)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1253)
            	at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
            	at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
            	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            	at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
            	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
            	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
            	at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
            	at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:179)
            	... 11 more
            Finished: FAILURE
            
            Show
            derfunk Andreas Katzig added a comment - - edited We still encounter this issue, although I read through all comments and have configured everything accordingly and correct (in my opinion). We use Jenkins ver. 1.565.1 with Subversion plugin 2.4.1. We're using externals, build servers nodes, I added additional credentials for them, took care of the correct naming with its correct realm and brackets. Every random build does fail with the following exception, and this issue is really getting very very frustrating because the next build is working fine then. The Subversion plugin should be updated to improve the user experience (and functionality). no change for svn: //xxx:3688/user/yyy/aaa since the previous build hudson.util.IOException2: revision check failed on svn: //xxx:3688/zzz/code/trunk at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:191) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:735) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:873) at hudson.model.AbstractProject.checkout(AbstractProject.java:1252) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:615) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:524) at hudson.model.Run.execute(Run.java:1706) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:232) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try . Authentication failed at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185) at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.createSaslClient(SVNSaslAuthenticator.java:306) at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.authenticate(SVNSaslAuthenticator.java:92) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.authenticate(SVNConnection.java:194) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.authenticate(SVNRepositoryImpl.java:1275) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1253) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:179) ... 11 more Finished: FAILURE
            Hide
            danielbeck Daniel Beck added a comment -

            Andreas: Try the following: Create a new log recorder at Manage Jenkins » System Log and add the logger hudson.scm.CredentialsSVNAuthenticationProviderImpl at level FINE. Retry. Check the log output. Anything interesting?

            Show
            danielbeck Daniel Beck added a comment - Andreas: Try the following: Create a new log recorder at Manage Jenkins » System Log and add the logger hudson.scm.CredentialsSVNAuthenticationProviderImpl at level FINE . Retry. Check the log output. Anything interesting?
            Hide
            derfunk Andreas Katzig added a comment - - edited

            Thanks for getting back Daniel.

            I did what you recommended, but the log doesn't tell me anything interesting:

            Aug 19, 2014 2:05:19 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication
            Attempting auth for URL: svn://svnserver:3688/user/xxx/__USER; Realm: <svn://svnserver:3688> REALMNAME
            
            Aug 19, 2014 2:05:19 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication
            Attempting auth for URL: svn://svnserver:3688/user/xxx/__USER; Realm: <svn://svnserver:3688> REALMNAME
            
            Aug 19, 2014 2:05:20 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication
            Attempting auth for URL: svn://svnserver:3698/Library/branches/yyy-0.1/Tools/Tool1; Realm: <svn://svnserver:3698> REALMNAME
            
            Aug 19, 2014 2:05:21 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication
            Attempting auth for URL: svn://svnserver:3688/xxx/code/trunk; Realm: <svn://svnserver:3688> REALMNAME
            

            The build to which the log above belongs failed again.
            I figured out that the build always fails the first time some changes are checked in to SVN (still funny that the next checkout/build will succeed).

            To explain our SVN infrastructure a bit:

            • We use initial checkout paths which contain only svn:externals, which are pointing to different source paths and also different repositories (as you can see with the port number).
            • The error "hudson.util.IOException2: revision check failed on ..."always happens on the first external - in case of the above log it's "svn://xxx:3688/zzz/code/trunk".
            • The external property pointing to the same repo is defined like this: "^/zzz/code/trunk localpath"
            • External properties pointing to different repositories are defined like this: "svn://svnserver:3698/remotepath localpath"

            Screenshot from the SVN settings within the build job:

            What I saw in the SCM logs was that some repositories are trying to connect to the SVN server via IP, which would not work when the realm is defined with the hostname.
            This doesn't affect the current build I'm talking about though, or at least not in a way I'm able to comprehend.

            Unfortunately the SCM log does not show which build job was triggering SVN activity - I'll try to set the log level to "finer", maybe I'll find something that helps.

            I will also try to replace the circumflex "^" in the external definition with the absolute hostname. Will give feedback if that helped, but I would hate to change that for our 20+ repositories with 5 externals checkout paths each (would > 100 changes)

            After checking the next build, which succeeds, I'm also sure that SVN is not trying to connect to the server via IP instead of the hostname.

            Any more clues?

            Show
            derfunk Andreas Katzig added a comment - - edited Thanks for getting back Daniel. I did what you recommended, but the log doesn't tell me anything interesting: Aug 19, 2014 2:05:19 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication Attempting auth for URL: svn: //svnserver:3688/user/xxx/__USER; Realm: <svn://svnserver:3688> REALMNAME Aug 19, 2014 2:05:19 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication Attempting auth for URL: svn: //svnserver:3688/user/xxx/__USER; Realm: <svn://svnserver:3688> REALMNAME Aug 19, 2014 2:05:20 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication Attempting auth for URL: svn: //svnserver:3698/Library/branches/yyy-0.1/Tools/Tool1; Realm: <svn://svnserver:3698> REALMNAME Aug 19, 2014 2:05:21 PM FINE hudson.scm.CredentialsSVNAuthenticationProviderImpl requestClientAuthentication Attempting auth for URL: svn: //svnserver:3688/xxx/code/trunk; Realm: <svn://svnserver:3688> REALMNAME The build to which the log above belongs failed again. I figured out that the build always fails the first time some changes are checked in to SVN (still funny that the next checkout/build will succeed). To explain our SVN infrastructure a bit: We use initial checkout paths which contain only svn:externals, which are pointing to different source paths and also different repositories (as you can see with the port number). The error "hudson.util.IOException2: revision check failed on ..."always happens on the first external - in case of the above log it's "svn://xxx:3688/zzz/code/trunk". The external property pointing to the same repo is defined like this: "^/zzz/code/trunk localpath" External properties pointing to different repositories are defined like this: "svn://svnserver:3698/remotepath localpath" Screenshot from the SVN settings within the build job: What I saw in the SCM logs was that some repositories are trying to connect to the SVN server via IP, which would not work when the realm is defined with the hostname. This doesn't affect the current build I'm talking about though, or at least not in a way I'm able to comprehend. Unfortunately the SCM log does not show which build job was triggering SVN activity - I'll try to set the log level to "finer", maybe I'll find something that helps. I will also try to replace the circumflex "^" in the external definition with the absolute hostname. Will give feedback if that helped, but I would hate to change that for our 20+ repositories with 5 externals checkout paths each (would > 100 changes) After checking the next build, which succeeds, I'm also sure that SVN is not trying to connect to the server via IP instead of the hostname. Any more clues?
            Hide
            soukupmi michael soukup added a comment -

            if this is your screenshot then you have a typo in the port:
            3688 <-> 3698

            try with the same port and see if that solves your problem

            Show
            soukupmi michael soukup added a comment - if this is your screenshot then you have a typo in the port: 3688 <-> 3698 try with the same port and see if that solves your problem
            Hide
            derfunk Andreas Katzig added a comment -

            It's not a typo, it's a different repository. Repo on port #3688 is the main repositories with externals pointing to the repo on port #3698.

            Show
            derfunk Andreas Katzig added a comment - It's not a typo, it's a different repository. Repo on port #3688 is the main repositories with externals pointing to the repo on port #3698.
            Hide
            soukupmi michael soukup added a comment - - edited

            yes - understood, but you have no additional credits for the 3688 port defined.
            I thought that you would have to add additional credentials for both ports / repositories.

            Show
            soukupmi michael soukup added a comment - - edited yes - understood, but you have no additional credits for the 3688 port defined. I thought that you would have to add additional credentials for both ports / repositories.
            Hide
            derfunk Andreas Katzig added a comment -

            Yes, didn't add them because I thought it would be enough to have them defined above (As this is also the place were an error message is displayed if credentials are invalid or missing).

            So I'd have to define the main repositorie's credentials twice? What the actual #$+

            Will try and give feedback.

            We should really put some conclusion in big letters below this thread about what one have to pay attention to until the plugin's functionality is improved. It's already too many trial+error comments which may mislead the readers in here.

            Show
            derfunk Andreas Katzig added a comment - Yes, didn't add them because I thought it would be enough to have them defined above (As this is also the place were an error message is displayed if credentials are invalid or missing). So I'd have to define the main repositorie's credentials twice? What the actual #$+ Will try and give feedback. We should really put some conclusion in big letters below this thread about what one have to pay attention to until the plugin's functionality is improved. It's already too many trial+error comments which may mislead the readers in here.
            Hide
            danielbeck Daniel Beck added a comment -

            We should really put some conclusion in big letters below this thread about what one have to pay attention to until the plugin's functionality is improved. It's already too many trial+error comments which may mislead the readers in here.

            Tried that for a few issues, people kept on posting comments and those that came after didn't bother reading everything. So doesn't work. Edit the issue description again.

            But seriously, there's no magic going on. It's a straightforward key lookup. If it looks for a string that you don't supply exactly, it won't work.

            Show
            danielbeck Daniel Beck added a comment - We should really put some conclusion in big letters below this thread about what one have to pay attention to until the plugin's functionality is improved. It's already too many trial+error comments which may mislead the readers in here. Tried that for a few issues, people kept on posting comments and those that came after didn't bother reading everything. So doesn't work. Edit the issue description again. But seriously, there's no magic going on. It's a straightforward key lookup. If it looks for a string that you don't supply exactly, it won't work.
            Hide
            stephenconnolly Stephen Connolly added a comment -

            @Andreas, I agree it is a bit of a pain... any suggestions as to how to not permit drive-by credential scraping and at the same time make this easier to use are welcome.

            FYI the drive-by credential scraping is not theoretical, I know of at least one incident (of which I cannot say more)

            Show
            stephenconnolly Stephen Connolly added a comment - @Andreas, I agree it is a bit of a pain... any suggestions as to how to not permit drive-by credential scraping and at the same time make this easier to use are welcome. FYI the drive-by credential scraping is not theoretical, I know of at least one incident (of which I cannot say more)
            Hide
            derfunk Andreas Katzig added a comment -

            @Daniel I read your note, but (at least to me) it wasn't clear enough as it didn't cover that we have to put ALL credentials in as "additional credentials". I'm still asking myself why the non-additional credentials field exists at all

            @Stephen I'm not aware of the drive-by credential scraping issue, but I'm honestly happy that you and others are taking care of it to increase security.

            I'm sure you guys are able to come up with some kicking UX update for the plugin to reduce the pain

            Show
            derfunk Andreas Katzig added a comment - @Daniel I read your note, but (at least to me) it wasn't clear enough as it didn't cover that we have to put ALL credentials in as "additional credentials". I'm still asking myself why the non-additional credentials field exists at all @Stephen I'm not aware of the drive-by credential scraping issue, but I'm honestly happy that you and others are taking care of it to increase security. I'm sure you guys are able to come up with some kicking UX update for the plugin to reduce the pain
            Hide
            bartm Bart M added a comment -

            I also seem to have the same problem, but my SVN externals are all on the same SVN server, accessible with the same credentials.

            It's strange though, when the CI build triggered by the change fails, and you just force it to build again, it works fine. It only seems to happen the first time svn had to update something (in the main checked out repo, not in one of the externals), if nothing changed in the checked out repository, everything continues as expected. If something updated - it fails with the "hudson.util.IOException2: revision check failed on http://svnserver/path/to/external" exception.

            We also use the '^' everywhere in our externals btw...

            I'm running Jenkins ver. 1.575 with SVN plugin ver. 2.4.3.

            Show
            bartm Bart M added a comment - I also seem to have the same problem, but my SVN externals are all on the same SVN server, accessible with the same credentials. It's strange though, when the CI build triggered by the change fails, and you just force it to build again, it works fine. It only seems to happen the first time svn had to update something (in the main checked out repo, not in one of the externals), if nothing changed in the checked out repository, everything continues as expected. If something updated - it fails with the "hudson.util.IOException2: revision check failed on http://svnserver/path/to/external " exception. We also use the '^' everywhere in our externals btw... I'm running Jenkins ver. 1.575 with SVN plugin ver. 2.4.3.
            Hide
            ctobey Chris Tobey added a comment -

            @stephenconnolly Is the option of adding a checkbox to "Use these credentials for all externals" out of the question?

            Show
            ctobey Chris Tobey added a comment - @stephenconnolly Is the option of adding a checkbox to "Use these credentials for all externals" out of the question?
            Hide
            sgannon200 Shane Gannon added a comment - - edited

            I'm hitting this issue even though it is marked as resolved. Or potentially another problem with the same symptoms.

            The Subversion Plugin on our Jenkins is version 2.4.3 and "installed" 2.3. We have all our jobs configured with additional credentials like so

            Repository URL: https://mysvn.com/trunk@$SVN_REVISION
            Credentials: MyCreds

            Additional Credentials

            Realm: https://mysvn.com
            Credentials: MyCreds

            The problem occurs every time one of our svn externals change. e.g.

            Old SVN External: ^/sibling_of_trunk/path/to/code@191319 nativeapp
            New SVN External: ^/sibling_of_trunk/path/to/code@191325 nativeapp

            The next build will be fine.

            But these symptoms have been reported above. Yet the problem persists for me. What did I miss?

            PS: Apologies if I'm asking a question that's been posted. The thread above is difficult to follow.

            Show
            sgannon200 Shane Gannon added a comment - - edited I'm hitting this issue even though it is marked as resolved. Or potentially another problem with the same symptoms. The Subversion Plugin on our Jenkins is version 2.4.3 and "installed" 2.3. We have all our jobs configured with additional credentials like so Repository URL: https://mysvn.com/trunk@$SVN_REVISION Credentials: MyCreds Additional Credentials Realm: https://mysvn.com Credentials: MyCreds The problem occurs every time one of our svn externals change. e.g. Old SVN External: ^/sibling_of_trunk/path/to/code@191319 nativeapp New SVN External: ^/sibling_of_trunk/path/to/code@191325 nativeapp The next build will be fine. But these symptoms have been reported above. Yet the problem persists for me. What did I miss? PS: Apologies if I'm asking a question that's been posted. The thread above is difficult to follow.
            Hide
            danielbeck Daniel Beck added a comment -

            Shane: Seems to be unrelated AFAICT. Could you file a new issue?

            Show
            danielbeck Daniel Beck added a comment - Shane: Seems to be unrelated AFAICT. Could you file a new issue?
            Hide
            sgannon200 Shane Gannon added a comment -

            Can do Daniel - sorry about the confusion

            Show
            sgannon200 Shane Gannon added a comment - Can do Daniel - sorry about the confusion
            Hide
            becky12yy becky yy added a comment -

            Daniel,

            Recently we used VisualSVN Server to set up the repositories. And the credentials method is Integrated Windows Authentication. So it's controlled by Active Directory.
            In the jenkins project configuration, I entered my login id as the credentials. And also for the "Additional Credential", I have put "<https://svnserver:443> VisualSVN Server" and also used the same credentials as the repositories.

            However there are always an error "Unable to access https://library.mea.adinternal.com/svn/YYTest : svn: E200015:". I am not sure what's wrong. Do you have any idea?

            Thank you.

            Show
            becky12yy becky yy added a comment - Daniel, Recently we used VisualSVN Server to set up the repositories. And the credentials method is Integrated Windows Authentication. So it's controlled by Active Directory. In the jenkins project configuration, I entered my login id as the credentials. And also for the "Additional Credential", I have put "< https://svnserver:443 > VisualSVN Server" and also used the same credentials as the repositories. However there are always an error "Unable to access https://library.mea.adinternal.com/svn/YYTest : svn: E200015:". I am not sure what's wrong. Do you have any idea? Thank you.
            Hide
            danielbeck Daniel Beck added a comment -

            becky yy: Please don't ask for assistance in JIRA. It's irrelevant to the 60 people watching this. Use e.g. the jenkinsci-users mailing list for that instead.

            Show
            danielbeck Daniel Beck added a comment - becky yy : Please don't ask for assistance in JIRA. It's irrelevant to the 60 people watching this. Use e.g. the jenkinsci-users mailing list for that instead.
            Hide
            schnaaf Patrick Savelberg added a comment -

            If you use svn+ssh://SERVER/REPOSITORY_LOCATION for your external then use

            svn+ssh://SERVER

            as realm

            Show
            schnaaf Patrick Savelberg added a comment - If you use svn+ssh://SERVER/REPOSITORY_LOCATION for your external then use svn+ssh://SERVER as realm
            Hide
            borzh Borzh Borzhovich added a comment - - edited

            STEPS TO RESOLVE THIS ISSUE ON LINUX

            ====================================

            REMOVE ALL SAVED CREDENTIALS ON YOUR LOCAL COMPUTER (NOT SERVER):
                rm -rf ~/.subversion/auth
            
            ON YOUR LOCAL COMPUTER CHECKOUT REMOTE TRUNK:
                svn checkout https://your_svn_server:your_port/your_trunk
            
            SVN WILL ASK FOR CREDENTIALS, SAVE THEM LOCALLY. THEY WILL APPEAR IN NEW FILE UNDER ~/.subversion/auth/svn.simple:
                ls ~/.subversion/auth/svn.simple
            
            OPEN THIS FILE TO GET YOUR SERVER REALM:
                cat ~/.subversion/auth/svn.simple/ce8afc0996c10bf115408332b027d724
            
            COPY YOUR SERVER REALM 2 LINES BELOW svn:realmstring, FOR EXAMPLE:
                svn:realmstring
                V 56
                <https://your_svn_server:your_port/your_trunk> Subversion Repositories            <--- THIS ONE IS YOUR SERVER REALM
            
            CONFIGURE YOU JENKINS JOB -> PRESS "ADD ADDITIONAL CREDENTIALS":
                SET "Realm" TO COPIED STRING, I.E: <https://your_svn_server:your_port/your_trunk> Subversion Repositories
                PROVIDE VALID "Credentials"
            
            VOILA! 
            HOPE THIS HELPS.
            
            Show
            borzh Borzh Borzhovich added a comment - - edited STEPS TO RESOLVE THIS ISSUE ON LINUX ==================================== REMOVE ALL SAVED CREDENTIALS ON YOUR LOCAL COMPUTER (NOT SERVER): rm -rf ~/.subversion/auth ON YOUR LOCAL COMPUTER CHECKOUT REMOTE TRUNK: svn checkout https://your_svn_server:your_port/your_trunk SVN WILL ASK FOR CREDENTIALS, SAVE THEM LOCALLY. THEY WILL APPEAR IN NEW FILE UNDER ~/.subversion/auth/svn.simple: ls ~/.subversion/auth/svn.simple OPEN THIS FILE TO GET YOUR SERVER REALM: cat ~/.subversion/auth/svn.simple/ce8afc0996c10bf115408332b027d724 COPY YOUR SERVER REALM 2 LINES BELOW svn:realmstring, FOR EXAMPLE: svn:realmstring V 56 <https://your_svn_server:your_port/your_trunk> Subversion Repositories <--- THIS ONE IS YOUR SERVER REALM CONFIGURE YOU JENKINS JOB -> PRESS "ADD ADDITIONAL CREDENTIALS": SET "Realm" TO COPIED STRING, I.E: <https://your_svn_server:your_port/your_trunk> Subversion Repositories PROVIDE VALID "Credentials" VOILA! HOPE THIS HELPS.
            Hide
            demonick Nick Brown added a comment - - edited

            Updated to latest of everything yesterday (Jenkins 1.616 and SVN 2.5), added additional credentials and now have polling without errors. However I have a strange side effect when using relative external paths and polling a branch.

            I have a job that works fine on trunk including with externals but when I replicate that job and tweak the URLs to a branch the external polling still reports it is comparing the revisions from trunk even though the externals are defined with relative paths '../../../etc.' When the job runs it of course does the correct thing getting the relative externals from the branch but the polling log shows it is looking at them in trunk. Any ideas?

            Also I still can't use 'Prepare an environment for the run' to define 'Properties Content' variables that can then be used in the module URLs for polling. They do work fine when the job runs but polling fails and results in the job triggered every cycle. Last time I tried, if I use job parameters rather than variables defined as I mentioned they do work...

            Show
            demonick Nick Brown added a comment - - edited Updated to latest of everything yesterday (Jenkins 1.616 and SVN 2.5), added additional credentials and now have polling without errors. However I have a strange side effect when using relative external paths and polling a branch. I have a job that works fine on trunk including with externals but when I replicate that job and tweak the URLs to a branch the external polling still reports it is comparing the revisions from trunk even though the externals are defined with relative paths '../../../etc.' When the job runs it of course does the correct thing getting the relative externals from the branch but the polling log shows it is looking at them in trunk. Any ideas? Also I still can't use 'Prepare an environment for the run' to define 'Properties Content' variables that can then be used in the module URLs for polling. They do work fine when the job runs but polling fails and results in the job triggered every cycle. Last time I tried, if I use job parameters rather than variables defined as I mentioned they do work...
            Hide
            recena Manuel Recena Soto added a comment -

            Nick Brown, if you are using EnvInject Plugin + Subversion Plugin and you have problems with polling, please take a look to this issue JENKINS-29340.

            Show
            recena Manuel Recena Soto added a comment - Nick Brown , if you are using EnvInject Plugin + Subversion Plugin and you have problems with polling, please take a look to this issue JENKINS-29340 .
            Hide
            dan_smartstream dan russell added a comment - - edited

            Seems a pretty clunky fix to have to put credentials in for each job that requires externals, shouldn't the plugin at least try the given credentials before failing?

            Also does anybody know why this is only an intermittent failure?

            Show
            dan_smartstream dan russell added a comment - - edited Seems a pretty clunky fix to have to put credentials in for each job that requires externals, shouldn't the plugin at least try the given credentials before failing? Also does anybody know why this is only an intermittent failure?
            Hide
            recena Manuel Recena Soto added a comment -

            dan russell

            If you have ideas to improve this, it would be helpful if you send an email (dev mailing list) with your proposal.

            Show
            recena Manuel Recena Soto added a comment - dan russell If you have ideas to improve this, it would be helpful if you send an email (dev mailing list) with your proposal.
            Hide
            demonick Nick Brown added a comment - - edited

            Manuel, I apologise, my realm string had an error and it is in fact working fine with additional credentials.

            Show
            demonick Nick Brown added a comment - - edited Manuel, I apologise, my realm string had an error and it is in fact working fine with additional credentials.
            Hide
            recena Manuel Recena Soto added a comment -

            Nick Brown, thanks so much for your feedback. Definitely, this issue is solved.

            Show
            recena Manuel Recena Soto added a comment - Nick Brown , thanks so much for your feedback. Definitely, this issue is solved.
            Hide
            nutmix john little added a comment -

            in 15 years of using SVN, I have never had to use the realm, nor even known it existed. We have not found a way to get this yet. We are using assembla.com, and have raised a ticket with them to ask them to check their svnserve.conf files, as obviously we dont have access to this. It would a lot of someone could include some real exmaples of what these realms can be, and the entire string which must be pasted into the "Realm" box of the "additional credentials".

            Show
            nutmix john little added a comment - in 15 years of using SVN, I have never had to use the realm, nor even known it existed. We have not found a way to get this yet. We are using assembla.com, and have raised a ticket with them to ask them to check their svnserve.conf files, as obviously we dont have access to this. It would a lot of someone could include some real exmaples of what these realms can be, and the entire string which must be pasted into the "Realm" box of the "additional credentials".
            Hide
            danielbeck Daniel Beck added a comment -

            We have not found a way to get this yet.

            john little What about the dozens and dozens of comments on this issue explaining exactly this? Or the actual issue description that contains one possible way to determine the realm name directly below the giant red test?

            Show
            danielbeck Daniel Beck added a comment - We have not found a way to get this yet. john little What about the dozens and dozens of comments on this issue explaining exactly this? Or the actual issue description that contains one possible way to determine the realm name directly below the giant red test?
            Hide
            recena Manuel Recena Soto added a comment -

            Daniel Beck, I've decided don't add more comment here. There is enough information about this.

            Show
            recena Manuel Recena Soto added a comment - Daniel Beck , I've decided don't add more comment here. There is enough information about this.
            Hide
            nutmix john little added a comment -

            For us, svn --no-auth-cache --config-dir invalid info proto://host:port/path/to/repo does not return any realm info. It returns:

            Path: ourproject
            URL: https://subversion.assembla.com/svn/ourrepo
            Relative URL: ^/
            Repository Root: https://subversion.assembla.com/svn/ourrepo
            Repository UUID: 26850efa-2baa-4381-9140-fb0xxxxxxxxx
            Revision: 1755
            Node Kind: directory
            Last Changed Author: me
            Last Changed Rev: 1755
            Last Changed Date: 2015-12-10 15:23:10 +0100 (Thu, 10 Dec 2015)

            Show
            nutmix john little added a comment - For us, svn --no-auth-cache --config-dir invalid info proto://host:port/path/to/repo does not return any realm info. It returns: Path: ourproject URL: https://subversion.assembla.com/svn/ourrepo Relative URL: ^/ Repository Root: https://subversion.assembla.com/svn/ourrepo Repository UUID: 26850efa-2baa-4381-9140-fb0xxxxxxxxx Revision: 1755 Node Kind: directory Last Changed Author: me Last Changed Rev: 1755 Last Changed Date: 2015-12-10 15:23:10 +0100 (Thu, 10 Dec 2015)
            Hide
            nutmix john little added a comment -

            I just realized that jira "hid" 155 comments. I just read them all. we were seeing the following:

            <https://subversion.assembla.com:443> Assembla Restricted

            Several times, but assumed that the realm could not possible be " Assembla Restricted" as it has spaces in it. We have tried the following under realms:

            "<https://subversion.assembla.com:443> Assembla Restricted"

            "<https://subversion.assembla.com:443>"

            "Assembla Restricted"

            and "https://subversion.assembla.com:443"

            Not knowing which of these is the right way to go.

            Show
            nutmix john little added a comment - I just realized that jira "hid" 155 comments. I just read them all. we were seeing the following: < https://subversion.assembla.com:443 > Assembla Restricted Several times, but assumed that the realm could not possible be " Assembla Restricted" as it has spaces in it. We have tried the following under realms: "< https://subversion.assembla.com:443 > Assembla Restricted" "< https://subversion.assembla.com:443 >" "Assembla Restricted" and "https://subversion.assembla.com:443" Not knowing which of these is the right way to go.
            Hide
            soukupmi michael soukup added a comment -

            @all: if you encounter this issue, before commenting

            • check that you followed the steps in the issue description at the top of this page
            • start reading at least comment-196458 to find out how your realm string should look like
            • if this does not work keep on reading the comments (including the linked comments)
            • if all this still does not get your installation working --> file a new issue with your stacktrace included

            hope this helps and the links make finding what you are looking for easier.

            Show
            soukupmi michael soukup added a comment - @all: if you encounter this issue, before commenting check that you followed the steps in the issue description at the top of this page start reading at least comment-196458 to find out how your realm string should look like if this does not work keep on reading the comments (including the linked comments) if all this still does not get your installation working --> file a new issue with your stacktrace included hope this helps and the links make finding what you are looking for easier.
            Hide
            fabienc Fabien Carmagnac added a comment -

            "Reposiroty URL" : https://212.227.XXX.YYY:8443/svn/A/trunk/B
            Credentials : "user/***"
            In "Additional Credentials Realm ", I set : <https://212.227.XXX.YYY:8443> VisualSVN Server
            In "Additional Credentials Credentials" , I set "user/***"

            Still not work.

            Show
            fabienc Fabien Carmagnac added a comment - "Reposiroty URL" : https://212.227.XXX.YYY:8443/svn/A/trunk/B Credentials : "user/***" In "Additional Credentials Realm ", I set : < https://212.227.XXX.YYY:8443 > VisualSVN Server In "Additional Credentials Credentials" , I set "user/***" Still not work.
            Hide
            fabienc Fabien Carmagnac added a comment -

            ps :
            Jenkins ver. 1.647
            svn plugin : 2.5.7

            Show
            fabienc Fabien Carmagnac added a comment - ps : Jenkins ver. 1.647 svn plugin : 2.5.7
            Hide
            bpetto35 Bruno Pettorelli added a comment -

            We can find the realm using curl -I <url_external>

            curl will prompt:
            HTTP/1.1 401 Authorization Required
            Date: <current_date>
            Server: Apache/2.2.15 (CentOS)
            WWW-Authenticate: Basic realm=<SVN_REALM>
            Content-Type: text/html; charset=iso-8859-1

            I added the <SVN_REALM> realm value of WWW-Authenticate: Basic realm in the field Additional Credentials/Realm. That do not solve the problem, still have the job failed when it exists change in one of the externals. All externals are on the same SVN project.

            Show
            bpetto35 Bruno Pettorelli added a comment - We can find the realm using curl -I <url_external> curl will prompt: HTTP/1.1 401 Authorization Required Date: <current_date> Server: Apache/2.2.15 (CentOS) WWW-Authenticate: Basic realm=<SVN_REALM> Content-Type: text/html; charset=iso-8859-1 I added the <SVN_REALM> realm value of WWW-Authenticate: Basic realm in the field Additional Credentials/Realm. That do not solve the problem, still have the job failed when it exists change in one of the externals. All externals are on the same SVN project.
            Hide
            recena Manuel Recena Soto added a comment -

            Bruno Pettorelli, Could you send the config.xml of your job?

            Show
            recena Manuel Recena Soto added a comment - Bruno Pettorelli , Could you send the config.xml of your job?
            Show
            bpetto35 Bruno Pettorelli added a comment - Manuel, config files for 2 jobs among many failing jobs. https://drive.google.com/open?id=0B3ZI9767SO40cW1DV1BYOTA3RDBwV3hUcmd3WVZsa0d4TURZ https://drive.google.com/open?id=0B3ZI9767SO40VjlHdF9tUTB1VGlxQjJJZFh4TXNON2h4bS1B
            Hide
            4wire Channy Tremblay added a comment -

            I just went through this whole thing on my install. None of the ways to find the realm worked for me as I'm using svn+ssh.

            Finally enabling the logs in Jenkins on FINE with hudson.scm.CredentialsSVNAuthenticationProviderImpl helped me find the string which was in the "svn+ssh://server-name" format. No port, no pointy brackets, no extra realm name.

            I would suggest we add the svn+ssh info to the howto above.

            That was painful learning experience.

            Show
            4wire Channy Tremblay added a comment - I just went through this whole thing on my install. None of the ways to find the realm worked for me as I'm using svn+ssh. Finally enabling the logs in Jenkins on FINE with hudson.scm.CredentialsSVNAuthenticationProviderImpl helped me find the string which was in the "svn+ssh://server-name" format. No port, no pointy brackets, no extra realm name. I would suggest we add the svn+ssh info to the howto above. That was painful learning experience.
            Hide
            _markus_franke_ Markus Franke added a comment -

            Dear Channy,

            you saved my day! At least after changing the Realm of the "Additional Credentials" to the simplified form "svn+ssh://server-name" which you provided, it looks quite promising that it finally works for me.

            Best regards and thanks for the thorough analysis.

            Show
            _markus_franke_ Markus Franke added a comment - Dear Channy, you saved my day! At least after changing the Realm of the "Additional Credentials" to the simplified form "svn+ssh://server-name" which you provided, it looks quite promising that it finally works for me. Best regards and thanks for the thorough analysis.
            Hide
            dufgui Guillaume Dufour added a comment -

            Hello,

            for me it's works with svn+ssh but not with https.
            I try to add :
            {{additionalCredentials: [
            [realm: 'My Realm SVN',
            credentialsId: 'myId'],
            [realm: 'https://192.168.XX.YY:443',
            credentialsId: 'myId'],
            [realm: 'https://192.168.XX.YY',
            credentialsId: 'myId']
            ]}}
            And i still have:
            {{hudson.util.IOException2: revision check failed on https://192.168.XX.YY/repos/svnflow/project/trunk/server/com.project.server.webapp
            at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:208)
            at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:138)
            at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:725)
            at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:860)
            at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:109)
            at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:83)
            at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:73)
            at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:52)
            at hudson.security.ACL.impersonate(ACL.java:213)
            at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:49)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            at java.lang.Thread.run(Thread.java:745)
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
            svn: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:66)
            at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:57)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:798)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:391)
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:379)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:862)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:698)
            at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049)
            at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:189)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:119)
            at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:195)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:46)
            at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
            at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
            at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)
            at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
            at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:968)
            at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:873)
            at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:194)
            ... 14 more
            Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
            at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:728)
            ... 32 more
            Finished: FAILURE}}

            My versions are:

            • Jenkins 2.7.3
            • SVN plugin 2.7.1

            So how, i can help you better? (Maybe I can try to do PR, if i can restart the production jenkins in java remot debug....)

            Show
            dufgui Guillaume Dufour added a comment - Hello, for me it's works with svn+ssh but not with https. I try to add : {{additionalCredentials: [ [realm: 'My Realm SVN', credentialsId: 'myId'], [realm: 'https://192.168.XX.YY:443', credentialsId: 'myId'], [realm: 'https://192.168.XX.YY', credentialsId: 'myId'] ]}} And i still have: {{hudson.util.IOException2: revision check failed on https://192.168.XX.YY/repos/svnflow/project/trunk/server/com.project.server.webapp at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:208) at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:138) at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:725) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:860) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:109) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:83) at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:73) at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:52) at hudson.security.ACL.impersonate(ACL.java:213) at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:49) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled. svn: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled. at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:66) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:57) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:798) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:391) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:379) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:862) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:698) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:189) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:119) at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:195) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:46) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160) at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:968) at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:873) at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:194) ... 14 more Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled. at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:728) ... 32 more Finished: FAILURE}} My versions are: Jenkins 2.7.3 SVN plugin 2.7.1 So how, i can help you better? (Maybe I can try to do PR, if i can restart the production jenkins in java remot debug....)
            Hide
            dufgui Guillaume Dufour added a comment - - edited

            Hello, I try to reproduce with a unit test directly on my svn server. com.myapp.server contains 2 externals : com.myapp.server.webapp and another one. But the error not occured.
            The changelog file is always empty (<log/>) maybe i must do another previous call to feed it.
            How this following test is different as a checkout directly by jenkins 2 ? :

            {{
            @Test(timeout = 0L)
            public void testCheckoutHttpsWithExternalsAndAuthentification() throws Exception {
            SystemCredentialsProvider.getInstance().setDomainCredentialsMap(Collections.singletonMap(Domain.global(),
            Arrays.<Credentials>asList(
            new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "1-login", null, "mylogin", "mypassword")
            )
            ));

            List<SubversionSCM.ModuleLocation> locations = Arrays.asList(
            new SubversionSCM.ModuleLocation("https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server", "1-login",".", SVNDepth.INFINITY.getName(), false)
            );
            List<SubversionSCM.AdditionalCredentials> additionalCredentials = Arrays.asList(
            new SubversionSCM.AdditionalCredentials("Realm of SVN","1-login"),
            new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY:443","1-login"),
            new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY","1-login"),
            new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY/repos/svnflow","1-login"),
            new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server.webapp","1-login")
            );
            SCM scm = new SubversionSCM(locations, new UpdateUpdater(), null, null, "", "", "", "", false, false, additionalCredentials);
            SCMSource source = new SingleSCMSource(null, "https://192.168..XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server", scm);
            TaskListener listener = StreamTaskListener.fromStdout();
            // First check fetching of all heads. SCMHeadObserver.Collector.result is a TreeMap so order is predictable:
            assertEquals("[SCMHead

            {'https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server'}

            ]", source.fetch(listener).toString());
            // SCM.checkout does not permit a null build argument, unfortunately.
            Run<?,?> run = r.buildAndAssertSuccess(r.createFreeStyleProject());
            // Retrieval of heads:
            FilePath ws = new FilePath(new File("C:\\Users\\gdufour\\AppData\\Local\\Temp\\hudsonFixedtest\\jobs\\test0\\builds
            1")).child("tmp");
            Launcher launcher = new Launcher.LocalLauncher(listener);
            SCMRevisionState scmRevisionState = scm.calcRevisionsFromBuild(run , ws, launcher, listener);
            assertRevision2(source.fetch(new SCMHead("https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server"), listener), "null", source, run, listener, launcher, scmRevisionState);
            }

            private void assertRevision2(@CheckForNull SCMRevision rev, @CheckForNull String expectedFile, @NonNull SCMSource source, @NonNull Run<?,?> run, @NonNull TaskListener listener, Launcher launcher, SCMRevisionState scmRevisionState) throws Exception {
            if (rev == null)

            { assertNull(expectedFile); return; }

            FilePath ws = new FilePath(new File("C:\\Users\\gdufour\\AppData\\Local\\Temp\\hudsonFixedtest\\jobs\\test0\\builds
            1")).child("tmp");
            File changelog = new File("C:\\Users\\gdufour\\AppData\\Local\\Temp\\hudsonFixedtest\\jobs\\test0\\builds\\1
            changelog");
            source.build(rev.getHead(), rev).checkout(run, launcher, ws, listener, changelog, scmRevisionState);
            FilePath file = ws.child("file");
            assertEquals(expectedFile, file.exists() ? file.readToString() : null);
            }}}

            Show
            dufgui Guillaume Dufour added a comment - - edited Hello, I try to reproduce with a unit test directly on my svn server. com.myapp.server contains 2 externals : com.myapp.server.webapp and another one. But the error not occured. The changelog file is always empty (<log/>) maybe i must do another previous call to feed it. How this following test is different as a checkout directly by jenkins 2 ? : {{ @Test(timeout = 0L) public void testCheckoutHttpsWithExternalsAndAuthentification() throws Exception { SystemCredentialsProvider.getInstance().setDomainCredentialsMap(Collections.singletonMap(Domain.global(), Arrays.<Credentials>asList( new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "1-login", null, "mylogin", "mypassword") ) )); List<SubversionSCM.ModuleLocation> locations = Arrays.asList( new SubversionSCM.ModuleLocation("https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server", "1-login",".", SVNDepth.INFINITY.getName(), false) ); List<SubversionSCM.AdditionalCredentials> additionalCredentials = Arrays.asList( new SubversionSCM.AdditionalCredentials("Realm of SVN","1-login"), new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY:443","1-login"), new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY","1-login"), new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY/repos/svnflow","1-login"), new SubversionSCM.AdditionalCredentials("https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server.webapp","1-login") ); SCM scm = new SubversionSCM(locations, new UpdateUpdater(), null, null, "", "", "", "", false, false, additionalCredentials); SCMSource source = new SingleSCMSource(null, "https://192.168..XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server", scm); TaskListener listener = StreamTaskListener.fromStdout(); // First check fetching of all heads. SCMHeadObserver.Collector.result is a TreeMap so order is predictable: assertEquals("[SCMHead {'https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server'} ]", source.fetch(listener).toString()); // SCM.checkout does not permit a null build argument, unfortunately. Run<?,?> run = r.buildAndAssertSuccess(r.createFreeStyleProject()); // Retrieval of heads: FilePath ws = new FilePath(new File("C:\\Users\\gdufour\\AppData\\Local\\Temp\\hudsonFixedtest\\jobs\\test0\\builds 1")).child("tmp"); Launcher launcher = new Launcher.LocalLauncher(listener); SCMRevisionState scmRevisionState = scm.calcRevisionsFromBuild(run , ws, launcher, listener); assertRevision2(source.fetch(new SCMHead("https://192.168.XX.YY/repos/svnflow/myproject/trunk/server/com.myapp.server"), listener), "null", source, run, listener, launcher, scmRevisionState); } private void assertRevision2(@CheckForNull SCMRevision rev, @CheckForNull String expectedFile, @NonNull SCMSource source, @NonNull Run<?,?> run, @NonNull TaskListener listener, Launcher launcher, SCMRevisionState scmRevisionState) throws Exception { if (rev == null) { assertNull(expectedFile); return; } FilePath ws = new FilePath(new File("C:\\Users\\gdufour\\AppData\\Local\\Temp\\hudsonFixedtest\\jobs\\test0\\builds 1")).child("tmp"); File changelog = new File("C:\\Users\\gdufour\\AppData\\Local\\Temp\\hudsonFixedtest\\jobs\\test0\\builds\\1 changelog"); source.build(rev.getHead(), rev).checkout(run, launcher, ws, listener, changelog, scmRevisionState); FilePath file = ws.child("file"); assertEquals(expectedFile, file.exists() ? file.readToString() : null); }}}
            Hide
            dufgui Guillaume Dufour added a comment -

            So i debug the plugin and i found why. It's because the format of the realm is not just the realm name but the full name with uri like:
            <https://XX.YY.WW.ZZ:PORT> My Realm Name
            So it's my fault. sorry

            Show
            dufgui Guillaume Dufour added a comment - So i debug the plugin and i found why. It's because the format of the realm is not just the realm name but the full name with uri like: < https://XX.YY.WW.ZZ:PORT > My Realm Name So it's my fault. sorry
            Hide
            jglick Jesse Glick added a comment -

            I see no reason for this to have been reopened.

            Show
            jglick Jesse Glick added a comment - I see no reason for this to have been reopened.

              People

              • Assignee:
                recena Manuel Recena Soto
                Reporter:
                simabeis Marcel Beister
              • Votes:
                43 Vote for this issue
                Watchers:
                72 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: