diff options
| author | Kali Kaneko <kali@leap.se> | 2014-01-14 16:28:07 -0400 | 
|---|---|---|
| committer | Kali Kaneko <kali@leap.se> | 2014-01-14 16:28:07 -0400 | 
| commit | 82aa9998ae4113056005a25cfc1ebcfc887f053b (patch) | |
| tree | ed339c44e943c96c55d90a71bc095c24a3710574 /mail/src | |
| parent | f7eba7bba4787a410852c614a2c46ebe7ecadef9 (diff) | |
remove locks (moved to soledad client)
Diffstat (limited to 'mail/src')
| -rw-r--r-- | mail/src/leap/mail/imap/mailbox.py | 11 | ||||
| -rw-r--r-- | mail/src/leap/mail/imap/messages.py | 50 | ||||
| -rw-r--r-- | mail/src/leap/mail/messageflow.py | 2 | 
3 files changed, 31 insertions, 32 deletions
| diff --git a/mail/src/leap/mail/imap/mailbox.py b/mail/src/leap/mail/imap/mailbox.py index ccbf5c2..cd782b2 100644 --- a/mail/src/leap/mail/imap/mailbox.py +++ b/mail/src/leap/mail/imap/mailbox.py @@ -39,7 +39,6 @@ from leap.mail.decorators import deferred  from leap.mail.imap.fields import WithMsgFields, fields  from leap.mail.imap.messages import MessageCollection  from leap.mail.imap.parser import MBoxParser -from leap.mail.utils import first  logger = logging.getLogger(__name__) @@ -60,7 +59,7 @@ class SoledadMailbox(WithMsgFields, MBoxParser):          imap4.IMessageCopier)      # XXX should finish the implementation of IMailboxListener -    # XXX should implement ISearchableMailbox too +    # XXX should complately implement ISearchableMailbox too      messages = None      _closed = False @@ -78,6 +77,7 @@ class SoledadMailbox(WithMsgFields, MBoxParser):      CMD_UNSEEN = "UNSEEN"      _listeners = defaultdict(set) +      next_uid_lock = threading.Lock()      def __init__(self, mbox, soledad=None, rw=1): @@ -161,7 +161,7 @@ class SoledadMailbox(WithMsgFields, MBoxParser):              if query:                  return query.pop()          except Exception as exc: -            logger.error("Unhandled error %r" % exc) +            logger.exception("Unhandled error %r" % exc)      def getFlags(self):          """ @@ -226,6 +226,11 @@ class SoledadMailbox(WithMsgFields, MBoxParser):          :rtype: bool          """          mbox = self._get_mbox() +        if not mbox: +            logger.error("We could not get a mbox!") +            # XXX It looks like it has been corrupted. +            # We need to be able to survive this. +            return None          return mbox.content.get(self.LAST_UID_KEY, 1)      def _set_last_uid(self, uid): diff --git a/mail/src/leap/mail/imap/messages.py b/mail/src/leap/mail/imap/messages.py index a3d29d6..7c17dbe 100644 --- a/mail/src/leap/mail/imap/messages.py +++ b/mail/src/leap/mail/imap/messages.py @@ -46,8 +46,6 @@ from leap.mail.messageflow import IMessageConsumer, MessageProducer  logger = logging.getLogger(__name__) -read_write_lock = threading.Lock() -  # TODO ------------------------------------------------------------  # [ ] Add linked-from info. @@ -1154,17 +1152,16 @@ class MessageCollection(WithMsgFields, IndexedDB, MailParser, MBoxParser):          logger.debug('enqueuing message docs for write')          ptuple = SoledadWriterPayload -        with read_write_lock: -            # first, regular docs: flags and headers -            for doc in docs: -                self.soledad_writer.put(ptuple( -                    mode=ptuple.CREATE, payload=doc)) +        # first, regular docs: flags and headers +        for doc in docs: +            self.soledad_writer.put(ptuple( +                mode=ptuple.CREATE, payload=doc)) -            # and last, but not least, try to create -            # content docs if not already there. -            for cd in cdocs: -                self.soledad_writer.put(ptuple( -                    mode=ptuple.CONTENT_CREATE, payload=cd)) +        # and last, but not least, try to create +        # content docs if not already there. +        for cd in cdocs: +            self.soledad_writer.put(ptuple( +                mode=ptuple.CONTENT_CREATE, payload=cd))      def _remove_cb(self, result):          return result @@ -1219,21 +1216,20 @@ class MessageCollection(WithMsgFields, IndexedDB, MailParser, MBoxParser):      def _get_uid_from_msgidCb(self, msgid):          hdoc = None -        with read_write_lock: -            try: -                query = self._soledad.get_from_index( -                    fields.TYPE_MSGID_IDX, -                    fields.TYPE_HEADERS_VAL, msgid) -                if query: -                    if len(query) > 1: -                        logger.warning( -                            "More than one hdoc found for this msgid, " -                            "we got a duplicate!!") -                        # XXX we could take action, like trigger a background -                        # process to kill dupes. -                    hdoc = query.pop() -            except Exception as exc: -                logger.exception("Unhandled error %r" % exc) +        try: +            query = self._soledad.get_from_index( +                fields.TYPE_MSGID_IDX, +                fields.TYPE_HEADERS_VAL, msgid) +            if query: +                if len(query) > 1: +                    logger.warning( +                        "More than one hdoc found for this msgid, " +                        "we got a duplicate!!") +                    # XXX we could take action, like trigger a background +                    # process to kill dupes. +                hdoc = query.pop() +        except Exception as exc: +            logger.exception("Unhandled error %r" % exc)          if hdoc is None:              logger.warning("Could not find hdoc for msgid %s" diff --git a/mail/src/leap/mail/messageflow.py b/mail/src/leap/mail/messageflow.py index a0a571d..ac26e45 100644 --- a/mail/src/leap/mail/messageflow.py +++ b/mail/src/leap/mail/messageflow.py @@ -121,8 +121,6 @@ class MessageProducer(object):          """          if not self._loop.running:              self._loop.start(self._period, now=True) -        else: -            print "was running..., not starting"      def stop(self):          """ | 
