Hello community,
here is the log from the commit of package offlineimap for openSUSE:Factory checked in at 2017-03-14 10:06:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/offlineimap (Old)
and /work/SRC/openSUSE:Factory/.offlineimap.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "offlineimap"
Tue Mar 14 10:06:25 2017 rev:37 rq:479120 version:7.0.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/offlineimap/offlineimap.changes 2017-02-15 10:07:48.784301958 +0100
+++ /work/SRC/openSUSE:Factory/.offlineimap.new/offlineimap.changes 2017-03-14 10:07:16.366211205 +0100
@@ -1,0 +2,8 @@
+Mon Mar 13 17:37:04 UTC 2017 - mimi.vx@gmail.com
+
+- update to 7.0.14
+* SQLite: avoid concurrent writes on backend migration.
+* Fix ipv6 configuration handling.
+* Prevent synchronization of identical folders from multiple threads
+
+-------------------------------------------------------------------
Old:
----
offlineimap-7.0.13.tar.gz
New:
----
offlineimap-7.0.14.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ offlineimap.spec ++++++
--- /var/tmp/diff_new_pack.XQjUxN/_old 2017-03-14 10:07:16.926131920 +0100
+++ /var/tmp/diff_new_pack.XQjUxN/_new 2017-03-14 10:07:16.930131354 +0100
@@ -19,7 +19,7 @@
%{!?_userunitdir:%define _userunitdir /usr/lib/systemd/user}
Name: offlineimap
-Version: 7.0.13
+Version: 7.0.14
Release: 0
Summary: Powerful IMAP/Maildir Synchronization Tool
License: GPL-2.0+
++++++ offlineimap-7.0.13.tar.gz -> offlineimap-7.0.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/offlineimap-7.0.13/Changelog.md new/offlineimap-7.0.14/Changelog.md
--- old/offlineimap-7.0.13/Changelog.md 2017-01-27 19:49:42.000000000 +0100
+++ new/offlineimap-7.0.14/Changelog.md 2017-03-11 13:22:18.000000000 +0100
@@ -15,6 +15,48 @@
* The following excerpt is only usefull when rendered in the website.
{:toc}
+### OfflineIMAP v7.0.14 (2017-03-11)
+
+#### Notes
+
+Here is a new small fixup release for the v7.0 series. The first v7.0.0 release
+is near to 8 months old. This v7.0.14 release is more reliable than v6.7.0.3.
+Hence, I'm deprecating the v6.7 series.
+
+Now, you are all enjoined to migrate to v7.0.14. Migrating back to v6.7 is not
+supported so you might like to backup your local maildirs and metadata first.
+
+We will fully remove the legacy text backend driver in near future. The SQLite
+driver proved to be better for both performance and reliability.
+
+With this release we use imaplib2 v2.57 to support some faulting IMAP servers,
+fix a little bug about the backend migration to SQLite and serialize the sync
+processes to prevent from issues when both IDLE and autorefresh are enabled.
+
+Happy sync'ing!
+
+#### Authors
+
+- Nicolas Sebrecht (5)
+- 927589452 (2)
+- Jens Heinrich (1)
+- Stéphane Graber (1)
+
+#### Fixes
+
+- SQLite: avoid concurrent writes on backend migration. [Nicolas Sebrecht]
+- Fix ipv6 configuration handling. [Stéphane Graber]
+- Prevent synchronization of identical folders from multiple threads. [Nicolas Sebrecht]
+
+#### Changes
+
+- Bump from imaplib2 v2.55 to v2.57. [Nicolas Sebrecht]
+- scripts/get-repository.sh: use portable /bin/sh. [Jens Heinrich]
+- MAINTAINERS: add new tester. [Nicolas Sebrecht]
+- scripts/get-repository.sh: use env to call bash. [mailinglists@927589452.de]
+
+
+
### OfflineIMAP v7.0.13 (2017-01-27)
#### Notes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/offlineimap-7.0.13/MAINTAINERS.rst new/offlineimap-7.0.14/MAINTAINERS.rst
--- old/offlineimap-7.0.13/MAINTAINERS.rst 2017-01-27 19:49:42.000000000 +0100
+++ new/offlineimap-7.0.14/MAINTAINERS.rst 2017-03-11 13:22:18.000000000 +0100
@@ -4,53 +4,58 @@
========
- Abdó Roig-Maranges
- - email: abdo.roig at gmail.com
- - github: aroig
+ - email: abdo.roig at gmail.com
+ - github: aroig
- Ben Boeckel
- - email: mathstuf at gmail.com
- - github: mathstuf
+ - email: mathstuf at gmail.com
+ - github: mathstuf
+
+- Chris Coleman
+ - email: christocoleman at yahoo.com
+ - github: chris001
- Darshit Shah
- - email: darnir at gmail.com
- - github: darnir
+ - email: darnir at gmail.com
+ - github: darnir
- Eygene Ryabinkin
- - email: rea at freebsd.org
- - github: konvpalto
- - other: FreeBSD maintainer
+ - email: rea at freebsd.org
+ - github: konvpalto
+ - other: FreeBSD maintainer
- Igor Almeida
- - email: igor.contato at gmail.com
- - github: igoralmeida
+ - email: igor.contato at gmail.com
+ - github: igoralmeida
- Ilias Tsitsimpis
- - email: i.tsitsimpis at gmail.com
- - github: iliastsi
- - other: Debian maintainer
+ - email: i.tsitsimpis at gmail.com
+ - github: iliastsi
+ - other: Debian maintainer
- "J"
- - email: offlineimap at 927589452.de
- - other: FreeBSD user
+ - email: offlineimap at 927589452.de
+ - github: 927589452
+ - other: FreeBSD user
- Łukasz Żarnowiecki
- - email: dolohow at outlook.com
- - github: dolohow
+ - email: dolohow at outlook.com
+ - github: dolohow
- Nicolas Sebrecht
- - email: nicolas.s-dev at laposte.net
- - github: nicolas33
- - system: Linux
+ - email: nicolas.s-dev at laposte.net
+ - github: nicolas33
+ - system: Linux
- Rainer M Krug
- - email: Rainer at krugs.de
- - github: rkrug
- - system: OSX
+ - email: Rainer at krugs.de
+ - github: rkrug
+ - system: OSX
- Sebastian Spaeth
- - email: sebastian at sspaeth.de
- - github: spaetz
- - other: left the project but still responding
+ - email: sebastian at sspaeth.de
+ - github: spaetz
+ - other: left the project but still responding
Testers
@@ -58,6 +63,7 @@
- Abdó Roig-Maranges
- Ben Boeckel
+- Chris Coleman
- Darshit Shah
- Eygene Ryabinkin
- Igor Almeida
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/offlineimap-7.0.13/offlineimap/__init__.py new/offlineimap-7.0.14/offlineimap/__init__.py
--- old/offlineimap-7.0.13/offlineimap/__init__.py 2017-01-27 19:49:42.000000000 +0100
+++ new/offlineimap-7.0.14/offlineimap/__init__.py 2017-03-11 13:22:18.000000000 +0100
@@ -2,8 +2,8 @@
__productname__ = 'OfflineIMAP'
# Expecting trailing "-rcN" or "" for stable releases.
-__version__ = "7.0.13"
-__copyright__ = "Copyright 2002-2016 John Goerzen & contributors"
+__version__ = "7.0.14"
+__copyright__ = "Copyright 2002-2017 John Goerzen & contributors"
__author__ = "John Goerzen"
__author_email__= "offlineimap-project@lists.alioth.debian.org"
__description__ = "Disconnected Universal IMAP Mail Synchronization/Reader Support"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/offlineimap-7.0.13/offlineimap/accounts.py new/offlineimap-7.0.14/offlineimap/accounts.py
--- old/offlineimap-7.0.13/offlineimap/accounts.py 2017-01-27 19:49:42.000000000 +0100
+++ new/offlineimap-7.0.14/offlineimap/accounts.py 2017-03-11 13:22:18.000000000 +0100
@@ -15,7 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from subprocess import Popen, PIPE
-from threading import Event
+from threading import Event, Lock
import os
import time
from sys import exc_info
@@ -29,6 +29,9 @@
from offlineimap.threadutil import InstanceLimitedThread
FOLDER_NAMESPACE = 'LIMITED_FOLDER_'
+# Key: account name, Value: Dict of Key: remotefolder name, Value: lock.
+SYNC_MUTEXES = {}
+SYNC_MUTEXES_LOCK = Lock()
try:
import fcntl
@@ -430,11 +433,35 @@
self.ui.error(e, exc_info()[2], msg="Calling hook")
+#XXX: This function should likely be refactored. This should not be passed the
+# account instance.
def syncfolder(account, remotefolder, quick):
"""Synchronizes given remote folder for the specified account.
- Filtered folders on the remote side will not invoke this function. However,
- this might be called in a concurrently."""
+ Filtered folders on the remote side will not invoke this function.
+
+ When called in concurrently for the same localfolder, syncs are
+ serialized."""
+
+ def acquire_mutex():
+ account_name = account.getname()
+ localfolder_name = localfolder.getfullname()
+
+ with SYNC_MUTEXES_LOCK:
+ if SYNC_MUTEXES.get(account_name) is None:
+ SYNC_MUTEXES[account_name] = {}
+ # The localfolder full name is good to uniquely identify the sync
+ # transaction.
+ if SYNC_MUTEXES[account_name].get(localfolder_name) is None:
+ #XXX: This lock could be an external file lock so we can remove
+ # the lock at the account level.
+ SYNC_MUTEXES[account_name][localfolder_name] = Lock()
+
+ # Acquire the lock.
+ SYNC_MUTEXES[account_name][localfolder_name].acquire()
+
+ def release_mutex():
+ SYNC_MUTEXES[account.getname()][localfolder.getfullname()].release()
def check_uid_validity():
# If either the local or the status folder has messages and
@@ -528,6 +555,9 @@
# Load local folder.
localfolder = account.get_local_folder(remotefolder)
+ # Acquire the mutex to start syncing.
+ acquire_mutex()
+
# Add the folder to the mbnames mailboxes.
mbnames.add(account.name, localrepos.getlocalroot(),
localfolder.getname())
@@ -616,3 +646,5 @@
if folder in locals():
locals()[folder].dropmessagelistcache()
statusfolder.closefiles()
+ # Release the mutex of this sync transaction.
+ release_mutex()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/offlineimap-7.0.13/offlineimap/bundled_imaplib2.py new/offlineimap-7.0.14/offlineimap/bundled_imaplib2.py
--- old/offlineimap-7.0.13/offlineimap/bundled_imaplib2.py 2017-01-27 19:49:42.000000000 +0100
+++ new/offlineimap-7.0.14/offlineimap/bundled_imaplib2.py 2017-03-11 13:22:18.000000000 +0100
@@ -18,9 +18,9 @@
"Internaldate2Time", "ParseFlags", "Time2Internaldate",
"Mon2num", "MonthNames", "InternalDate")
-__version__ = "2.55"
+__version__ = "2.57"
__release__ = "2"
-__revision__ = "55"
+__revision__ = "57"
__credits__ = """
Authentication code contributed by Donn Cave