← Back to team overview

dulwich-users team mailing list archive

Re: Traceback when testing the web server

 

I can't tell for sure, but this traceback looks like what happens when the
git client decides its POST data is large enough to gzip, which is not
handled transparently by the wsgiref server. I happen to be using a server
that does handle it transparently, which is why I haven't been bugged by
this enough to fix it.

In these cases I usually find it helpful to sniff the wire protocol with
Wireshark or similar. To test if my guess is correct, you could also run git
with GIT_CURL_VERBOSE=1 and look for a Content-Encoding: gzip header.

Hope this helps.

On Fri, Feb 25, 2011 at 19:29, David Blewett <david@xxxxxxxxxxxxxxxx> wrote:

> In working on the patch to add Paster integration, I came across this
> traceback from the WSGI app:
>
> 2011-02-25 19:11:58,383 INFO: Listening for HTTP connections on :8000
> 2011-02-25 19:12:01,984 INFO: "GET /info/refs?service=git-upload-pack
> HTTP/1.1" 200 1777
> 2011-02-25 19:12:02,030 INFO: Handling service request for git-upload-pack
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 94, in run
>    self.finish_response()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 134, in
> finish_response
>    for data in self.result:
>  File "/usr/home/david/src/dulwich/dulwich/web.py", line 250, in
> handle_service_request
>    handler.handle()
>  File "/usr/home/david/src/dulwich/dulwich/server.py", line 274, in handle
>    get_tagged=self.get_tagged)
>  File "/usr/home/david/src/dulwich/dulwich/repo.py", line 836, in
> fetch_objects
>    wants = determine_wants(self.get_refs())
>  File "/usr/home/david/src/dulwich/dulwich/server.py", line 383, in
> determine_wants
>    want = self.proto.read_pkt_line()
>  File "/usr/home/david/src/dulwich/dulwich/protocol.py", line 104, in
> read_pkt_line
>    size = int(sizestr, 16)
> ValueError: invalid literal for int() with base 16: '\x1f\x8b\x08\x00'
> 2011-02-25 19:12:02,037 INFO: "POST /git-upload-pack HTTP/1.1" 500 59
> ----------------------------------------
> Exception happened during processing of request from ('76.219.161.85',
> 50168)
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/SocketServer.py", line 283, in
> _handle_request_noblock
>    self.process_request(request, client_address)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 309, in
> process_request
>    self.finish_request(request, client_address)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 322, in
> finish_request
>    self.RequestHandlerClass(request, client_address, self)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 617, in __init__
>    self.handle()
>  File "/usr/local/lib/python2.6/wsgiref/simple_server.py", line 138, in
> handle
>    handler.run(self.server.get_app())
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 97, in run
>    self.handle_error()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 310, in
> handle_error
>    self.finish_response()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 135, in
> finish_response
>    self.write(data)
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 218, in write
>    self.send_headers()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 274, in
> send_headers
>    self.send_preamble()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 203, in
> send_preamble
>    self._write('Server: %s\r\n' % self.server_software)
>  File "/usr/local/lib/python2.6/socket.py", line 318, in write
>    self.flush()
>  File "/usr/local/lib/python2.6/socket.py", line 297, in flush
>    self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 32] Broken pipe
>
> When running the tests, I get this:
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 94, in run
>    self.finish_response()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 135, in
> finish_response
>    self.write(data)
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 218, in write
>    self.send_headers()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 274, in
> send_headers
>    self.send_preamble()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 203, in
> send_preamble
>    self._write('Server: %s\r\n' % self.server_software)
>  File "/usr/local/lib/python2.6/socket.py", line 318, in write
>    self.flush()
>  File "/usr/local/lib/python2.6/socket.py", line 297, in flush
>    self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 32] Broken pipe
> ----------------------------------------
> Exception happened during processing of request from ('127.0.0.1', 16238)
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/SocketServer.py", line 283, in
> _handle_request_noblock
>    self.process_request(request, client_address)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 309, in
> process_request
>    self.finish_request(request, client_address)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 322, in
> finish_request
>    self.RequestHandlerClass(request, client_address, self)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 618, in __init__
>    self.finish()
>  File "/usr/local/lib/python2.6/SocketServer.py", line 661, in finish
>    self.wfile.flush()
>  File "/usr/local/lib/python2.6/socket.py", line 297, in flush
>    self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 32] Broken pipe
> ----------------------------------------
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 94, in run
>    self.finish_response()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 135, in
> finish_response
>    self.write(data)
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 218, in write
>    self.send_headers()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 274, in
> send_headers
>    self.send_preamble()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 203, in
> send_preamble
>    self._write('Server: %s\r\n' % self.server_software)
>  File "/usr/local/lib/python2.6/socket.py", line 318, in write
>    self.flush()
>  File "/usr/local/lib/python2.6/socket.py", line 297, in flush
>    self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 32] Broken pipe
> ----------------------------------------
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 94, in run
>    self.finish_response()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 135, in
> finish_response
>    self.write(data)
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 218, in write
>    self.send_headers()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 274, in
> send_headers
>    self.send_preamble()
>  File "/usr/local/lib/python2.6/wsgiref/handlers.py", line 203, in
> send_preamble
>    self._write('Server: %s\r\n' % self.server_software)
>  File "/usr/local/lib/python2.6/socket.py", line 318, in write
>    self.flush()
>  File "/usr/local/lib/python2.6/socket.py", line 297, in flush
>    self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 32] Broken pipe
> ----------------------------------------
> Exception happened during processing of request from ('127.0.0.1', 62255)
> Traceback (most recent call last):
>  File "/usr/local/lib/python2.6/SocketServer.py", line 283, in
> _handle_request_noblock
>    self.process_request(request, client_address)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 309, in
> process_request
>    self.finish_request(request, client_address)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 322, in
> finish_request
>    self.RequestHandlerClass(request, client_address, self)
>  File "/usr/local/lib/python2.6/SocketServer.py", line 618, in __init__
>    self.finish()
>  File "/usr/local/lib/python2.6/SocketServer.py", line 661, in finish
>    self.wfile.flush()
>  File "/usr/local/lib/python2.6/socket.py", line 297, in flush
>    self._sock.sendall(buffer(data, write_offset, buffer_size))
> error: [Errno 32] Broken pipe
> ----------------------------------------
>
>
> Thanks,
>
> David Blewett
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dulwich-users
> Post to     : dulwich-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dulwich-users
> More help   : https://help.launchpad.net/ListHelp
>

Follow ups

References