Hi group,

I have an interesting problem on my server with mod_wsgi:

I run trac and subversion in the same configuration, see
http://ktk.netlabs.org/misc/svn.netlabs.conf for my configuration.

The configuration starts with the SVN repositories residing on /repos
and then configures trac with mod_wsgi. So far this used to work just
fine. As you can see on http://svn.netlabs.org I run a lot of TRAC
repositories for several OSS projects.

Last week I upgraded subversion on the server to version 1.7, since
then I can still checkout and commit to svn repositories with clients
which are below version 1.7 (I tested 1.6.x), everything works as
expected. However, any subversion client >= 1.7 cannot commit anymore,
checkout works as before though.

After dumping with tcpdump I could see the following packet (decoded
TCP stream via wireshark):

--
POST /repos/kbuild/!svn/me HTTP/1.1
User-Agent: SVN/1.7.3 neon/0.29.6
Connection: TE
TE: trailers
Host: svn.netlabs.org
Content-Type: application/vnd.svn-skel
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
Content-Length: 14
Accept-Encoding: gzip
Authorization: Basic 1lkdfjwel3fldkj==

( create-txn )HTTP/1.1 404 Not Found
Date: Wed, 29 Feb 2012 13:50:42 GMT
Server: Apache
Content-Length: 21
Content-Type: text/plain

Environment not found
--

This is definitely an error message from TRAC in case there is no trac
environment found. So for some reason mod_wsgi hits in at this point
instead of the DAV handler. Again, this works just fine with
subversion 1.6.x.

I really don't get this, I checked my config and tried several things
to fix it but no luck so far. From the subversion changelog I can see
that they changed the way subversion interacts with the server:

http://subversion.apache.org/docs/release-notes/1.7.html#httpv2

--
Subversion 1.7 offers a simpler HTTP protocol variant that can be used
when connecting to supported servers. This simpler protocol (sometimes
referred to as HTTPv2) requires fewer client-server round trips to
establish a connection, making Subversion much more performant on high-
latency network connections.

As mentioned in the compatibility table, Subversion 1.7 will only use
HTTPv2 when connecting with a 1.7 (or greater) server, but will
continue to use existing protocols when communicating with earlier
versions of Subversion. Likewise, older clients will only use the old
protocol when connecting to a Subversion server, regardless of
version.
--

So the only explanation I have is that with 1.7 clients subversion
tries to do HTTPv2 and for some reason mod_wsgi decides to take over
even if it's not its job because the post goes to /repos, which should
be the DAV handler.

Could this be a bug in mod_wsgi?

Software versions (running on FreeBSD 8):

ap22-mod_wsgi-3.3_2
apache-2.2.22_5
py26-subversion-1.7.3
subversion-1.7.3
trac-0.12.3
python26-2.6.7_3

content of trac-netlabs.wsgi:
--
#!/usr/local/bin/python2.6
# -*- coding: utf-8 -*-

import os
def application(environ, start_request):
  os.environ['TRAC_ENV_PARENT_DIR'] = '/data/trac/netlabs.org'
  os.environ['PYTHON_EGG_CACHE'] = '/tmp/egg-cache'
  from trac.web.main import dispatch_request
  environ['trac.locale'] = 'sv_SE.UTF-8'
  return dispatch_request(environ, start_request)
--

Any hints would be appreciated!

thanks

Adrian

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to