Package: offlineimap3 Version: 0.0~git20211018.e64c254+dfsg-1 Severity: grave Tags: fixed-upstream patch Justification: renders package unusable Forwarded: https://github.com/OfflineIMAP/offlineimap3/issues/136 Control: block 1026825 by -1
After upgrading to python3 (>= 3.11) I get lots of these errors: > ERROR: ERROR in syncfolder for REDACTED folder .REDACTED: Traceback (most > recent call last): > File "/usr/share/offlineimap3/offlineimap/accounts.py", line 610, in > syncfolder > statusfolder.openfiles() > File "/usr/share/offlineimap3/offlineimap/folder/LocalStatusSQLite.py", > line 107, in openfiles > assert sqlite.threadsafety == 1, 'Your sqlite is not multithreading safe.' > ^^^^^^^^^^^^^^^^^^^^^^^^ > AssertionError: Your sqlite is not multithreading safe and as far as I can tell, no mail is synchronized. https://github.com/OfflineIMAP/offlineimap3/pull/139 appears to be the upstream solution for this, and seems to be a suitable patch for the version currently in Debian. Please see attached or the upstream PR. smcv -- System Information: Debian Release: bookworm/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'stable-security'), (500, 'oldstable-debug'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 6.0.0-6-amd64 (SMP w/4 CPU threads; PREEMPT) Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB:en Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages offlineimap3 depends on: ii ca-certificates 20211016 ii python3 3.11.1-1 ii python3-distro 1.8.0-1 ii python3-imaplib2 2.57-5.2 offlineimap3 recommends no packages. Versions of packages offlineimap3 suggests: pn python3-gssapi <none> -- no debconf information -- debsums errors found: debsums: changed file /usr/share/offlineimap3/offlineimap/folder/LocalStatusSQLite.py (from offlineimap3 package)
>From 7cd32cf834b34a3d4675b29bebcd32dc1e5ef128 Mon Sep 17 00:00:00 2001 From: 0pointerexception <w...@wmeyer.eu> Date: Thu, 17 Nov 2022 19:43:58 +0100 Subject: [PATCH] LocalStatusSQLite.py: Python 3.11 compatible threadsafety check Signed-off-by: 0pointerexception <w...@wmeyer.eu> --- offlineimap/folder/LocalStatusSQLite.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/offlineimap/folder/LocalStatusSQLite.py b/offlineimap/folder/LocalStatusSQLite.py index a576b9ca..3c44643f 100644 --- a/offlineimap/folder/LocalStatusSQLite.py +++ b/offlineimap/folder/LocalStatusSQLite.py @@ -17,7 +17,7 @@ import os import sqlite3 as sqlite -from sys import exc_info +from sys import exc_info,version_info from threading import Lock from .Base import BaseFolder @@ -75,6 +75,11 @@ def __init__(self, name, repository): self.filename = os.path.join(self.getroot(), self.getfolderbasename()) self._newfolder = False # Flag if the folder is new. + """ + sqlite threading mode must be 3 as of Python 3.11, checking against + 1 for versions below Python 3.11 to sustain backwards compatibility. + """ + self._threading_mode_const = 3 if version_info.minor >=11 else 1 dirname = os.path.dirname(self.filename) if not os.path.exists(dirname): @@ -102,9 +107,10 @@ def __exit__(self, exc_type, exc_val, exc_tb): if self._in_transactions < 1: self.connection.commit() + def openfiles(self): # Make sure sqlite is in multithreading SERIALIZE mode. - assert sqlite.threadsafety == 1, 'Your sqlite is not multithreading safe.' + assert sqlite.threadsafety == self._threading_mode_const, 'Your sqlite is not multithreading safe.' with self._databaseFileLock.getLock(): # Try to establish connection, no need for threadsafety in __init__.