Bug 51680 - Kmail вылетает с ошибкой 1062 "Duplicate entry..." у ящика с IMAP
Summary: Kmail вылетает с ошибкой 1062 "Duplicate entry..." у ящика с IMAP
Status: CLOSED WONTFIX
Alias: None
Product: Branch p10
Classification: Unclassified
Component: kde5-kmail (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 minor
Assignee: Sergey V Turchin
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-10 09:59 MSK by JcVai
Modified: 2024-10-22 10:37 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description JcVai 2024-10-10 09:59:33 MSK
Сегодня внезапно перестали открываться Kontact и Kmail, ругаясь на "Duplicate '4-trash' "

В логах при этом
--
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver DATABASE ERROR:
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver DATABASE ERROR:
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver   Error code: "1062"
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver   Error code: "1062"
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver   DB error:  "Duplicate entry '4-trash' for key 'collectiontable.CollectionTable_parentAndNameIndex'"
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver   DB error:  "Duplicate entry '4-trash' for key 'collectiontable.CollectionTable_parentAndNameIndex'"
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver   Error text: "Duplicate entry '4-trash' for key 'collectiontable.CollectionTable_parentAndNameIndex' QMYSQL3: Невозможно выполнить выражение"
[2024-10-10T06:10:32.688Z] akonadiserver org.kde.pim.akonadiserver   Error text: "Duplicate entry '4-trash' for key 'collectiontable.CollectionTable_parentAndNameIndex' QMYSQL3: Невозможно выполнить выражение"
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver   Values: QMap((":0", QVariant(QString, ""))(":1", QVariant(QString, ""))(":10", QVariant(int, -1))(":11", QVariant(int, -1))(":12", QVariant(bool, false))(":13", QVariant(QString, ""))(":14", QVariant(bool, false))(":2", QVariant(QString, "trash"))(":3", QVariant(qlonglong, 4))(":4", QVariant(qlonglong, 4))(":5", QVariant(bool, true))(":6", QVariant(int, 2))(":7", QVariant(int, 2))(":8", QVariant(int, 2))(":9", QVariant(bool, true)))
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver   Values: QMap((":0", QVariant(QString, ""))(":1", QVariant(QString, ""))(":10", QVariant(int, -1))(":11", QVariant(int, -1))(":12", QVariant(bool, false))(":13", QVariant(QString, ""))(":14", QVariant(bool, false))(":2", QVariant(QString, "trash"))(":3", QVariant(qlonglong, 4))(":4", QVariant(qlonglong, 4))(":5", QVariant(bool, true))(":6", QVariant(int, 2))(":7", QVariant(int, 2))(":8", QVariant(int, 2))(":9", QVariant(bool, true)))
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver   Query: "INSERT INTO CollectionTable (remoteId, remoteRevision, name, parentId, resourceId, enabled, syncPref, displayPref, indexPref, cachePolicyInherit, cachePolicyCheckInterval, cachePolicyCacheTimeout, cachePolicySyncOnDemand, cachePolicyLocalParts, isVirtual) VALUES (:0, :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14)"
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver   Query: "INSERT INTO CollectionTable (remoteId, remoteRevision, name, parentId, resourceId, enabled, syncPref, displayPref, indexPref, cachePolicyInherit, cachePolicyCheckInterval, cachePolicyCacheTimeout, cachePolicySyncOnDemand, cachePolicyLocalParts, isVirtual) VALUES (:0, :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14)"
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver Error during insertion into table "CollectionTable" "Duplicate entry '4-trash' for key 'collectiontable.CollectionTable_parentAndNameIndex' QMYSQL3: Невозможно выполнить выражение"
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver Error during insertion into table "CollectionTable" "Duplicate entry '4-trash' for key 'collectiontable.CollectionTable_parentAndNameIndex' QMYSQL3: Невозможно выполнить выражение"
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver Failed to append Collection "trash" in resource "akonadi_maildir_resource_0"
[2024-10-10T06:10:32.689Z] akonadiserver org.kde.pim.akonadiserver Failed to append Collection "trash" in resource "akonadi_maildir_resource_0"
[2024-10-10T06:10:32.690Z] akonadiserver org.kde.pim.akonadiserver Error while handling command CreateCollection on connection kmail2-1170205112 (0x557363a1b770)
[2024-10-10T06:10:32.690Z] akonadiserver org.kde.pim.akonadiserver Error while handling command CreateCollection on connection kmail2-1170205112 (0x557363a1b770)
--

Поиск выдал наиболее вероятную причину - дублирование локальной папки с удаленной, например создание локальной с таким же именем, как удаленная: не мой случай - последние дни ящики не перенастраивались, работают уже длительное время и вчера-вечером-ночью ничего не менялось. (Хотя вчера вечером пробегался по настройкам: открывал и закрывал, ничего не меняя, правда выходил по "ок", а не "отмена".)
Предполагаю произошел какой-то десинк с базой в процессе работы.

Решение проблемы в моем случае:
1. Установить akonadiconsole, если не установлена
sudo apt-get install kde5-akonadiconsole
2. Запустить консоль akonadi, включить журналирование, запустить kmail или kontakt до ошибки, чтоб проверить и убедиться в названии вызывающего ошибку ресурса.
3. Через вкладку "Просмотр" найти проблемные ящик с папкой (в моем случае это ящик imap_resource_4 и папка trash в нем в терминах базы akonadi)
4. Через вкладку "Агенты" перенастроить путь для проблемной папки (в моем случае перенастройка указателя корзины ящика с сетевой/imap на локальную) или отписаться (предполагаемый вариант в случае такой ошибки с другой папкой) и перезапустить.
5. Запустить kontakt/kmail и убедиться, что проблема ушла, после чего уже через интерфейс настройки kmail вернуть настройки для папки (в моем случае вернуть указатель корзины на соответствующую imap-папку ящика) или подписаться (для других).
6. Перезагрузиться (легкий вариант - перезапустить akonadi через "akonadictl restart") и убедиться, что клиент kontakt/kmail работает без ошибок (снова при запуске не останавливается с руганью на дубликат)

Альтернативное решение: удаление проблемного ящика через консоль akonadi и пересоздание через kmail/kontakt (благо, поскольку это ящик imap - все данные хранятся на почтовом сервере).

Полагаю, можно было еще поправить таблицу непосредственно в базе, но не рискнул.

--
ALT Workstation K 10.4 (Sorbaronia Mitschurinii)
kde5-kmail-23.08.5-alt1.x86_64
kde5-akonadi-23.08.5-alt1.x86_64
Comment 1 JcVai 2024-10-10 10:08:23 MSK
Добавлю: на https://bugs.kde.org/show_bug.cgi?id=375244 еще рекомендация в оффлайне переименовать проблемную папку
Comment 2 Evgeny Shesteperov 2024-10-18 20:50:06 MSK
ALT Workstation 10.3

Попробовал создание локальной и удалённой папки, а затем проверку синхронизации её с почтовым сервисом.

Синхронизация успешная, ошибок нет.

В качества почтового сервиса использовал Yandex.Mail.

Нужны более точные шаги и условия для воспроизведения проблемы.

Пожалуйста, дополнительно предоставьте следующую информацию:

1.  Операционная система, версия, на которой воспроизвелась ошибка.

2.  Выводы следующих команд:

         $ uname -a
         $ cat /etc/os-release
         $ apt-repo

3.  Обновлена ли система до текущего состояния репозитория?
Comment 3 JcVai 2024-10-21 09:24:58 MSK
===
sh-4.4$ uname -a
Linux ws211.mid.local 6.1.112-un-def-alt1 #1 SMP PREEMPT_DYNAMIC Tue Oct 15 10:32:10 UTC 2024 x86_64 GNU/Linux
sh-4.4$ cat /etc/os-release
NAME="ALT"
VERSION="10.4"
ID=altlinux
LOGO="basealt"
VERSION_ID=10.4
PRETTY_NAME="ALT Workstation K 10.4 (Sorbaronia Mitschurinii)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:kworkstation:10"
BUILD_ID="ALT 10.3"
ALT_BRANCH_ID="p10"
HOME_URL="https://www.basealt.ru/"
BUG_REPORT_URL="https://bugs.altlinux.org/"
DOCUMENTATION_URL="https://docs.altlinux.org/"
SUPPORT_URL="https://support.basealt.ru/"
sh-4.4$ apt-repo
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64 classic gostcrypto
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/noarch classic
===

Я не уверен, что смогу воспроизвести сам. Столкнулся с проблемой, нашел схожую причину на bugs.kde.org, убедился, что решение оттуда помогло, отписал здесь для других.Что именно вызвало дублирование в базе - без понятия.
Вряд ли просто создание imap папок с одинаковыми именами приведет к проблеме, что-то нужно еще на уровне базы akonadi.
Сложность для пользователя в том, что kmail просто перестает работать совсем (вылетает на запуске), а не просто ругается на проблемный ящик.

Не думаю, что данный сбой требует решение на уровне Альта.
Обновлением пакета уже возникшую проблему не решить (требуется именно работа с базой), хотя, если суметь найти источник, можно сделать предотвращающий патч, но тогда возможны проблемы совместимости со следующими версиями kde. Тем более, что само сообщество kde о проблеме знает с 2013го и до сих пор не устранило.
Но иметь русскоязычное решение на ассоциированном с Альт Линукс ресурсе необходимо. Особенно с учетом, что из таких только работающий bugzilla и мертвый форум.
Comment 4 Sergey V Turchin 2024-10-22 09:53:13 MSK
(Ответ для JcVai на комментарий #0)
> 3. Через вкладку "Просмотр" найти проблемные ящик с папкой (в моем случае
> это ящик imap_resource_4 и папка trash в нем в терминах базы akonadi)
> 4. Через вкладку "Агенты" перенастроить путь для проблемной папки (в моем
> случае перенастройка указателя корзины ящика с сетевой/imap на локальную)
> или отписаться (предполагаемый вариант в случае такой ошибки с другой
> папкой) и перезапустить.
Это можно сделать из обычных настроек учётной записи получения почты.

P.S.
В случае возникновения каких-то проблем рекомендую сначала чистить базу:
$ akonadictl fsck
$ akonadictl vacuum
Comment 5 JcVai 2024-10-22 10:20:07 MSK
"Это можно сделать из обычных настроек учётной записи получения почты."
Можно, если суметь запустить эти настройки.
Если б клиент kontakt/kmail хотя бы запускался - не пришлось бы лезть в консоль.
Данная ошибка вызывает вылет именно на старте клиента, т.е. из известных мне графических вариантов - только консоль akonadi. Собственно, через которую и решал проблему.
Кроме того, kmail/kontakt не показывает ресурсы по именам в базе, если они были переименованы. Т.е. достаточно проблематично без консоли сопоставить ящик user@ya.ru в kmail ресурсу imap4 в базе akonadi, а информация об ошибке идет именно с указанием ресурса в базе. 

"akonadictl fsck && akonadictl vacuum" не помогли в данном случае.
Comment 6 Sergey V Turchin 2024-10-22 10:24:25 MSK
(Ответ для JcVai на комментарий #5)
> Данная ошибка вызывает вылет именно на старте клиента, т.е. из известных мне
> графических вариантов - только консоль akonadi.
Ааа, ну да.
Comment 7 Sergey V Turchin 2024-10-22 10:26:30 MSK
Честно говоря, я не представляю, что нужно сделать, чтобы этого добиться.
Comment 8 JcVai 2024-10-22 10:37:18 MSK
(Ответ для Sergey V Turchin на комментарий #7)
> Честно говоря, я не представляю, что нужно сделать, чтобы этого добиться.

В моем случае: утром предыдущего дня подключил ящики, вечером пробежался по настройкам всех ящиков, проверив соответствие ролей папок imap и закрывая окна настроек профиля/аккаунта по "ок", а не отменой, закрыл клиент, а на следующее утро вылезла проблема.

Причину могу только предполагать. Как вариант, анализируя https://bugs.kde.org/show_bug.cgi?id=339214 и смежные, одним из вариантов может быть отсутствие проверки наличия существующего при создании/генерации задачи/триггера по работе с данной папкой. Т.е. для одного ресурса в базе создаются сразу две обработки, к которым идет требование уникальности. (Сугубо теоретическое имхо - глубоко не копал, ибо проблема случилась разово, больше не повторялась, а решается достаточно просто и оперативно)