Details
-
Bug
-
Resolution: Timed out
-
Low
-
None
-
None
-
Severity 3 - Minor
-
Description
SVN server hosted on an SNI enabled webserver, the import of maven project fails with the below NPE
2013-02-27 19:26:37,972 ERROR [ajp-bio-127.0.0.1-7979-exec-19] [BambooPluginUtils] Failed to validate build configuration for the Subversion repository (com.atlassian.bamboo.plugin.system.repository:svn). java.lang.NullPointerException at sun.security.ssl.JsseJce.isEcAvailable(JsseJce.java:183) at sun.security.ssl.CipherSuite$KeyExchange.isAvailable(CipherSuite.java:297) at sun.security.ssl.CipherSuite.isAvailable(CipherSuite.java:162) at sun.security.ssl.CipherSuiteList.<init>(CipherSuiteList.java:87) at sun.security.ssl.SSLSocketImpl.setEnabledCipherSuites(SSLSocketImpl.java:2086) at org.tmatesoft.svn.core.internal.util.SVNSocketFactory.configureSSLSocket(SVNSocketFactory.java:270) at org.tmatesoft.svn.core.internal.util.SVNSocketFactory.createSSLSocket(SVNSocketFactory.java:91) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.java:268) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:419) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:362) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:350) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:708) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:628) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:103) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1016) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.testConnection(DAVRepository.java:99) at com.atlassian.bamboo.repository.svn.SvnRepository.validate(SvnRepository.java:1021) at com.atlassian.bamboo.build.creation.RepositoryConfigHelper$2.call(RepositoryConfigHelper.java:142) at com.atlassian.bamboo.build.creation.RepositoryConfigHelper$2.call(RepositoryConfigHelper.java:138) at com.atlassian.bamboo.plugin.BambooPluginUtils.callUnsafeCode(BambooPluginUtils.java:82) at com.atlassian.bamboo.build.creation.RepositoryConfigHelper.validateConfig(RepositoryConfigHelper.java:135) at com.atlassian.bamboo.ww2.actions.admin.ImportMavenPlanCheckoutPomAction.validate(ImportMavenPlanCheckoutPomAction.java:72) at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:154) at com.atlassian.bamboo.ww2.interceptors.BambooWorkflowInterceptor.validateWorkflow(BambooWorkflowInterceptor.java:53) at com.atlassian.bamboo.ww2.interceptors.BambooWorkflowInterceptor.access$000(BambooWorkflowInterceptor.java:16) at com.atlassian.bamboo.ww2.interceptors.BambooWorkflowInterceptor$1.call(BambooWorkflowInterceptor.java:33) at com.atlassian.bamboo.ww2.interceptors.BambooWorkflowInterceptor$1.call(BambooWorkflowInterceptor.java:29) at com.atlassian.bamboo.util.BambooProfilingUtils.withUtilTimerStack(BambooProfilingUtils.java:49) at com.atlassian.bamboo.ww2.interceptors.BambooWorkflowInterceptor.doIntercept(BambooWorkflowInterceptor.java:28) at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:116) at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor.validate(BambooValidationInterceptor.java:48) at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor.access$000(BambooValidationInterceptor.java:12) at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor$1.call(BambooValidationInterceptor.java:28) at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor$1.call(BambooValidationInterceptor.java:24) at com.atlassian.bamboo.util.BambooProfilingUtils.withUtilTimerStack(BambooProfilingUtils.java:49) at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor.doIntercept(BambooValidationInterceptor.java:23) at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.atlassian.bamboo.ww2.interceptors.FieldErrorUsageVerifier.intercept(FieldErrorUsageVerifier.java:48) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.atlassian.bamboo.ww2.interceptors.JSONValidationInterceptor.doIntercept(JSONValidationInterceptor.java:69) at com.atlassian.bamboo.ww2.interceptors.AbstractBambooInterceptor$1.call(AbstractBambooInterceptor.java:36) at com.atlassian.bamboo.ww2.interceptors.AbstractBambooInterceptor$1.call(AbstractBambooInterceptor.java:32) at com.atlassian.bamboo.util.BambooProfilingUtils.withUtilTimerStack(BambooProfilingUtils.java:49) at com.atlassian.bamboo.ww2.interceptors.AbstractBambooInterceptor.intercept(AbstractBambooInterceptor.java:31) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.atlassian.bamboo.ww2.interceptors.SimpleConversionErrorInterceptor.intercept(SimpleConversionErrorInterceptor.java:78) at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
This is related to the fact that SNI requires TLSv1 and the svnkit supports only the TLSv3 based on the code svnkit code: http://svn.svnkit.com/repos/svnkit/branches/1.3.x/svnkit/src/main/java/org/tmatesoft/svn/core/internal/util/SVNSocketFactory.java
Because of this bug in svnkit and the fact that this exception is not handled in bamboo, we have a looping situation that causes Bamboo to hang.
Workaround
The workaround is to start Bamboo with the property -Dsvnkit.http.sslProtocols=TLSv1