socket error: <type 'exceptions.IOError'> - Too many read 0

Nicolas Sebrecht nicolas.s-dev at laposte.net
Wed Apr 20 21:59:26 BST 2011


On Sat, Mar 26, 2011 at 01:01:13PM -0400, Ethan Glasser-Camp wrote:
> On 03/26/2011 02:26 AM, h2oz7v wrote:
> 
> >https://gist.github.com/c8d4429596f55a1eadeb

Which is:

Copy message 423 from inbox:
 WARNING: ERROR attempting to copy message 423 for account outlook:Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/offlineimap/folder/Base.py", line 332, in copymessageto
    message = self.getmessage(uid)
  File "/usr/lib/python2.7/site-packages/offlineimap/folder/IMAP.py", line 215, in getmessage
    initialresult = imapobj.uid('fetch', '%d' % uid, '(BODY.PEEK[])')
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 1067, in uid
    return self._simple_command('UID', command, *args, **kw)
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 1485, in _simple_command
    return self._command_complete(self._command(name, *args), kw)
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 1261, in _command_complete
    typ, dat = rqb.get_response('command: %s => %%s' % rqb.name)
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 161, in get_response
    raise typ(exc_fmt % str(val))
abort: command: UID => socket error: <type 'exceptions.IOError'> - Too many read 0

 Thread 'Copy message 423 from inbox' terminated with exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/offlineimap/threadutil.py", line 159, in run
    Thread.run(self)
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib/python2.7/site-packages/offlineimap/folder/Base.py", line 332, in copymessageto
    message = self.getmessage(uid)
  File "/usr/lib/python2.7/site-packages/offlineimap/folder/IMAP.py", line 215, in getmessage
    initialresult = imapobj.uid('fetch', '%d' % uid, '(BODY.PEEK[])')
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 1067, in uid
    return self._simple_command('UID', command, *args, **kw)
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 1485, in _simple_command
    return self._command_complete(self._command(name, *args), kw)
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 1261, in _command_complete
    typ, dat = rqb.get_response('command: %s => %%s' % rqb.name)
  File "/usr/lib/python2.7/site-packages/offlineimap/imaplib2.py", line 161, in get_response
    raise typ(exc_fmt % str(val))
abort: command: UID => socket error: <type 'exceptions.IOError'> - Too many read 0

> Sorry, I still have no idea what's going on here.  It's definitely
> not a problem with the decompression code.  I don't know enough
> about SSL to figure out why a socket would seem to be ready but not
> have any information on it.

For the record, I just had this bug too (v6.3.3-rc3) 

 WARNING: Error occured attempting to sync account nis: Traceback (most recent call last):
  File "/usr/lib64/python2.5/site-packages/offlineimap/accounts.py", line 191, in syncrunner
    self.sync(siglistener)
  File "/usr/lib64/python2.5/site-packages/offlineimap/accounts.py", line 246, in sync
    remoterepos.syncfoldersto(localrepos, [statusrepos])
  File "/usr/lib64/python2.5/site-packages/offlineimap/repository/Base.py", line 121, in syncfoldersto
    srcfolders = src.getfolders()
  File "/usr/lib64/python2.5/site-packages/offlineimap/repository/IMAP.py", line 242, in getfolders
    imapobj = self.imapserver.acquireconnection()
  File "/usr/lib64/python2.5/site-packages/offlineimap/imapserver.py", line 211, in acquireconnection
    timeout=socket.getdefaulttimeout())
  File "/usr/lib64/python2.5/site-packages/offlineimap/imaplib2.py", line 344, in __init__
    self.welcome = self._request_push(tag='continuation').get_response('IMAP4 protocol error: %s')[1]
  File "/usr/lib64/python2.5/site-packages/offlineimap/imaplib2.py", line 162, in get_response
    raise typ(exc_fmt % str(val))
abort: IMAP4 protocol error: socket error: <type 'exceptions.IOError'> - Too many read 0

but it looks like it didn't appeared at the exact same time than h2oz7v
in the sync process.

Re-running OfflineIMAP didn't hit it again.


The worst issue in this story (and in other's too) is that, as a user,
I'm totally blind. I can't say when it happend in the sync process, if a
message was beeing fetch, tried to be fetched or not, which message/UID
could be problematic nor any other interesting information which could
help me.

  Notice the "I" here is for any user having issues. I'm not talking for
  me. I'm not talking of this particular case, neither.

I think that raising errors is not enough. The last work done to get
plain exception (instead of nothing) is in the good way but we should
provide more information on top. Quite frankly, we should provide _all_
the information which _could_ help a USER.


I'd say it would be nice to enhance our error handling while going on
v6.4.0 which should include most of the last and current best news for
OfflineIMAP (nice error handling, SQLite support, read iddle, introduced
test suites, etc).

Oh, we've got work!

-- 
Nicolas Sebrecht




More information about the OfflineIMAP-project mailing list