Skip to content

svn: E175002: Received fatal alert: protocol_version

· 2 min read

First published on the pushpanel.io blog as “svn: E175002: Received fatal alert: protocol_version” and archived here. The original domain is no longer ours, so links to it were removed and the headline rewritten for this site; the text of the post is unchanged.

How to solve it? where to report? jenkins? svnkit? subversion?

We hit such problem when Jenkins was trying to checkout code from SVN repository on the remote node.
Most browsers and HTTP libraries are going to drop TLS1 and TLS1.1 encryption so SSL certificates will show errors to users. In our case, a remote repository was exposed to the world as TLS1.3 behind a CloudFlare.

[EnvInject] - Loading node environment variables.
Building remotely on check-dev in workspace /home/hudsonslave/workspace/CHECK
Checking out a fresh workspace because there's no workspace at /usr/home/hudsonslave/workspace/CHECK
Cleaning local Directory .
Checking out https://xxxxxxxxxxx/repos/check at revision '2020-02-08T13:29:50.589 +0000' --quiet
ERROR: Failed to check out https://xxxxxxxxxxx/repos/check
org.tmatesoft.svn.core.SVNException: svn: E175002: Received fatal alert: protocol_version
svn: E175002: OPTIONS request failed on '/repos/check'
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:112)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:96)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:765)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:352)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:340)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:910)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:702)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:113)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1047)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:169)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:119)
    at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:180)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:43)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.checkout(SvnNgAbstractUpdate.java:831)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:26)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:11)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20)
    at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)
    at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1239)
    at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
    at hudson.scm.subversion.CheckoutUpdater$SubversionUpdateTask.perform(CheckoutUpdater.java:130)
    at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:168)
    at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:176)
    at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:132)
    at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:168)
    at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:1031)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:1007)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:980)
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3069)
    at hudson.remoting.UserRequest.perform(UserRequest.java:211)
    at hudson.remoting.UserRequest.perform(UserRequest.java:54)
    at hudson.remoting.Request$2.run(Request.java:369)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Solution: We did ask the repository owner to downgrade Encryption Version to TLS 1.2 and everything went back to normal.

Cloudflare SSL/TLS settings with Minimum TLS Version set to TLS 1.2
CloudFlare Minimum TLS Version