SSYNC logs tracebacks on unexpected hang-up
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Committed
|
Undecided
|
Unassigned |
Bug Description
This is likely to happen if the client pops a connection timeout, but you can repro it easily enough with curl:
$ curl -I -X SSYNC http://
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Sat, 01 Aug 2020 00:45:11 GMT
Transfer-
...but then the server logs like
Aug 1 00:45:11 saio object-6010: 127.0.0.1/sdb1/1 EXCEPTION in ssync.Receiver:
Traceback (most recent call last):
File ".../swift/
for data in self.missing_
File ".../swift/
'Looking for :MISSING_CHECK: START got %r' % line[:1024])
Exception: Looking for :MISSING_CHECK: START got b''
Aug 1 00:45:11 saio object-6010: STDERR: Traceback (most recent call last):
File "...s/eventlet/
write(b'')
File ".../eventlet/
wfile.flush()
File ".../socket.py", line 604, in write
return self._sock.send(b)
File ".../eventlet/
return self._send_
File ".../eventlet/
return send_method(data, *args)
BrokenPipeError: [Errno 32] Broken pipe
That second one's going to be hard to avoid since it's all buried down in eventlet, but we ought to be able to do something for that first one.
Also seen manifesting as:
object-server: err <snip> EXCEPTION in ssync.Receiver: #012Traceback (most recent call last):#012 File "/opt/ss/ lib/python2. 7/site- packages/ swift/obj/ ssync_receiver. py", line 166, in __call__#012 for data in self.missing_ check() :#012 File "/opt/ss/ lib/python2. 7/site- packages/ swift/obj/ ssync_receiver. py", line 340, in missing_check#012 line = self.fp. readline( self.app. network_ chunk_size) #012 File "/opt/ss/ lib/python2. 7/site- packages/ eventlet/ wsgi.py" , line 226, in readline#012 return self._chunked_ read(self. rfile, size, True)#012 File "/opt/ss/ lib/python2. 7/site- packages/ eventlet/ wsgi.py" , line 211, in _chunked_read#012 raise ChunkReadError( err)#012ChunkRe adError: invalid literal for int() with base 16: ''