Hi,
we recently upgraded our servers to Apache 2.2.25 and Subversion 1.7.11.
Since then several of our users have problems commiting files with blanks
somewhere in the pathname.
Symptoms are always the same:
Apache error_log shows
[Tue Aug 27 16:54:27 2013] [error] [client xx.xx.xx.xx] Unable to PUT new
contents for
/svn/repo/!svn/wrk/dcc67069-7dca-3141-8016-18787681c6d8/My%20Project/AssemblyInfo.vb.
[403, #0]
[Tue Aug 27 16:54:27 2013] [error] [client xx.xx.xx.xx] Could not create
file within the repository. [404, #160013]
[Tue Aug 27 16:54:27 2013] [error] [client xx.xx.xx.xx] File not found:
transaction '5252-4fa', path '/My%20Project/AssemblyInfo.vb' [404, #160013]
and the relevant lines from the Apache access_log
xx.xx.xx.xx server jdoe [27/Aug/2013:16:54:26 +0200] "MKACTIVITY
/svn/repo/!svn/act/dcc67069-7dca-3141-8016-18787681c6d8 HTTP/1.1" 201 241
"-" "SVN/1.6.16 (SharpSvn/1.6.16) WIN32/6.1 SharpSvn/1.6016.1637.10768
VisualStudio/9.0.21022.8 AnkhSVN/2.1.10129.17 neon/0.29.5"
...
xx.xx.xx.xx server jdoe [27/Aug/2013:16:54:27 +0200] "CHECKOUT
/svn/repo/!svn/ver/5090/My%20Project/AssemblyInfo.vb HTTP/1.1" 201 375 "-"
"SVN/1.6.16 (SharpSvn/1.6.16) WIN32/6.1 SharpSvn/1.6016.1637.10768
VisualStudio/9.0.21022.8 AnkhSVN/2.1.10129.17 neon/0.29.5"
xx.xx.xx.xx server jdoe [27/Aug/2013:16:54:27 +0200] "PUT
/svn/repo/!svn/wrk/dcc67069-7dca-3141-8016-18787681c6d8/My%2520Project/AssemblyInfo.vb
HTTP/1.1" 404 363 "-" "SVN/1.6.16 (SharpSvn/1.6.16) WIN32/6.1
SharpSvn/1.6016.1637.10768 VisualStudio/9.0.21022.8 AnkhSVN/2.1.10129.17
neon/0.29.5"
Note that the URL in the PUT request looks like it has been URL-encoded
twice
("...%20..." in the CHECKOUT URL got turned into "...%2520...").
The actual Subversion client varies (TortoiseSVN, SharpSVN, SVNKit etc),
but it must be using
the pre-HTTPv2 protocol, e.g. SVN 1.6.x.
I downgraded the server to Apache 2.2.24 and the problem went away.
I traced the actual TCP conversation in one of this cases and the double
URL encoding seen
is caused by the server: it sends the double encoded URL in the Location
header of its
response to the CHECKOUT request.
Cheers, Roderich
Received on 2013-08-30 10:30:51 CEST