Bug 248929 - databases/akonadi: Fails to start with MySQL errors
Summary: databases/akonadi: Fails to start with MySQL errors
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-kde (group)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-08-26 12:26 UTC by Adam Jimerson
Modified: 2021-12-11 16:55 UTC (History)
4 users (show)

See Also:
tcberner: maintainer-feedback+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adam Jimerson 2020-08-26 12:26:35 UTC
Since the akonadi-20.08.0 update akonadi fails to start with `akonadictl start` with the following errors:

> org.kde.pim.akonadictl: Starting Akonadi Server...
> QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-vendion'
> QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-vendion'
> org.kde.pim.akonadictl:    done.
> Connecting to deprecated signal 
> QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
> org.kde.pim.akonadiserver: Starting up the Akonadi Server...                                                                                                                                                                  
> QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-vendion'
> org.kde.pim.akonadiserver: Did not find MySQL server default configuration (mysql-global.conf)
> org.kde.pim.akonadiserver: Failed to remove runtime connection config file
> org.kde.pim.akonadiserver: Shutting down AkonadiServer...
> org.kde.pim.akonadicontrol: Application '/usr/local/bin/akonadiserver' exited normally..

During this time the /tmp/runtime-vendion/akonadi/ directory gets created, but is empty, there isn't even a socket file created my the MySQL server in ~/.config/akonadi/akonadiserverrc suggests.

The mysql-global.conf file does exist on my system in /usr/local/etc/xdg/akonadi/mysql-global.conf and there is a mysql.conf file in ~/.local/share/akonadi/mysql.conf.

There is an Akonadi.error file in ~/.local/share/akonadi with the following (echoing the output from `akonadictl start`):

> 2020-08-26T08:13:53 [INFO ] org.kde.pim.akonadiserver: Starting up the Akonadi Server...
> 2020-08-26T08:13:53 [WARN ] default: QStandardPaths2020-08-26T08:13:53 [INFO ] org.kde.pim.akonadicontrol: Application '/usr/local/bin/akonadiserver' exited normally...
> er: Did not find MySQL server default configuration (mysql-global.conf)
> 2020-08-26T08:13:53 [CRITICAL] org.kde.pim.akonadiserver: Failed to remove runtime connection config file
> 2020-08-26T08:13:53 [INFO ] org.kde.pim.akonadiserver: Shutting down AkonadiServer...
Comment 1 Adam Jimerson 2020-09-18 22:51:39 UTC
Note: I have tried following these directions to have Akodoni do a clean start and I still get the same error. https://docs.kde.org/trunk5/en/pim/kmail2/clean-start-after-a-failed-migration.html
Comment 2 Tobias C. Berner freebsd_committer freebsd_triage 2020-09-26 14:36:18 UTC
Moin moin 

Sorry for not getting back to you sooner.

Have you tried manually creating a
~/.config/akonadi/akonadiserverrc 
with the correct connection information (maybe you can connect via hostname isntead of socket)?


mfg Tobias
Comment 3 Adam Jimerson 2020-09-27 11:48:20 UTC
(In reply to Tobias C. Berner from comment #2)

I don't know if that will work out of the box as the default /usr/local/etc/xdg/akonadi/mysql-global.conf  has the "skip_networking" option enabled.

I did try updating my ~/.config/akonadi/akonadiserverrc with the following

> [Debug]
> Tracer=null
> 
> [%General]
> Driver=QMYSQL
> 
> [QMYSQL]
> Host=Heimdall
> Name=akonadi
> Options=""
> ServerPath=/usr/local/libexec/mysqld
> StartServer=true

> [Debug]
> Tracer=null
> 
> [%General]
> Driver=QMYSQL
> 
> [QMYSQL]
> Host=localhost
> Name=akonadi
> Options=""
> ServerPath=/usr/local/libexec/mysqld
> StartServer=true


When I ran akonadictl start --verbose with those I got the same error, and it updated my config file adding back in the "Options="UNIX_SOCKET=/tmp/runtime-vendion/akonadi/mysql.socket" options.

> org.kde.pim.akonadictl: Starting Akonadi Server...
> QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-vendion'
> QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-vendion'
> org.kde.pim.akonadictl:    done.
> Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
> [/u/h/vendion]─> org.kde.pim.akonadiserver: Starting up the Akonadi Server...                                                                                                                                                               
> org.kde.pim.akonadiserver: Found mysql_install_db:  "/usr/local/bin/mysql_install_db"
> org.kde.pim.akonadiserver: Found mysqlcheck:  "/usr/local/bin/mysqlcheck"
> org.kde.pim.akonadiserver: Using mysqld: "/usr/local/libexec/mysqld"
> org.kde.pim.akonadiserver: Did not find MySQL server default configuration (mysql-global.conf)
> org.kde.pim.akonadiserver: terminating connection threads
> org.kde.pim.akonadiserver: terminating service threads
> org.kde.pim.akonadiserver: stopping db process
> org.kde.pim.akonadiserver: Failed to remove runtime connection config file
> org.kde.pim.akonadiserver: Shutting down AkonadiServer...
> org.kde.pim.akonadicontrol: Application '/usr/local/bin/akonadiserver' exited normally...

To experiment I copied over /usr/local/etc/xdg/akonadi/mysql-global.conf to ~/.config/akonadi/mysql-local.conf as the file suggests and commented out the "skip_networking" option and tried with the same result.
Comment 4 Adam Jimerson 2020-10-11 02:36:49 UTC
In further testing I was able to create a system wide DB for Akonadi to use using mysql57 (already installed as a dependency for akonadi and a few other KDE packages) and everything seems to be working fine for now although this setup is less than ideal compaired to the default of letting akonadi start the DB server as needed on a per user bases.
Comment 5 Steve Wills freebsd_committer freebsd_triage 2020-12-09 02:03:11 UTC
I ran into a similar issue, except I noticed in the logs that mysql was failing to write to /var/db/mysql_tmpdir.

I was able to fix it by doing:

cp /usr/local/etc/xdg/akonadi/mysql-global.conf ~/.config/akonadi/mysql-local.conf

Add tmpdir=~/.cache/mysql_tmpdir line to ~/.config/akonadi/mysql-local.conf

mkdir ~/.cache/mysql_tmpdir

delete contents of ~/.local/share/akonadi (since the database contains the tmpdir path, I think)

akonadictl start

Then it seemed to go away. Perhaps we need to set a tmpdir in /usr/local/etc/xdg/akonadi/mysql-global.conf?
Comment 6 Graham Perrin freebsd_committer freebsd_triage 2021-08-27 04:45:26 UTC
Repairing Akonadi on FreeBSD | [bobulate]
<https://euroquis.nl/kde/2021/07/12/akonadi.html>

Is this bug 248929 still reproducible?
Comment 7 Greg Rivers 2021-08-27 06:41:54 UTC
(In reply to Graham Perrin from comment #6)
It is still broken for me. I checked as recently as ~3 days ago on a freshly installed system, starting from an empty home directory. I've had to lock mysql at version 5.7.33 as a work-around.
Comment 8 Tobias C. Berner freebsd_committer freebsd_triage 2021-08-27 09:38:23 UTC
(In reply to Greg Rivers from comment #7)
Moin moin 

Are you using the quarterly or the latest pkg-repository?

mfg Tobias
Comment 9 commit-hook freebsd_committer freebsd_triage 2021-08-27 17:22:28 UTC
A commit in branch 2021Q3 references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5b49dd92f47ed462e9b60597bf2b179268927213

commit 5b49dd92f47ed462e9b60597bf2b179268927213
Author:     Adriaan de Groot <adridg@FreeBSD.org>
AuthorDate: 2021-07-11 15:52:29 +0000
Commit:     Tobias C. Berner <tcberner@FreeBSD.org>
CommitDate: 2021-08-27 15:18:24 +0000

    databases/qt5-sqldrivers-mysql: fix against mysql 5.7.34

    In mysql 5.7.34 binding a parameter to a 0-sized buffer triggers
    an assert() -- previously this was DBG_ASSERT. This triggers
    crashes in databases/akonadi in particular, which binds blobs of
    size 0. This patch allows akonadi with the default mysql to
    start (at all) again.

    The patch file previously held a Qt4-era patch which had long
    ago had a better patch applied upstream (the comment in the
    patch refers to that). The old stuff has been removed, leaving
    only the parameter-fix.

    PR:             248929

    (cherry picked from commit e093f1162c353f3d62dce85e9e74053fc9a4743c)

 databases/qt5-sqldrivers-mysql/Makefile            |  1 +
 ...ch-src_plugins_sqldrivers_mysql_qsql__mysql.cpp | 77 +++++-----------------
 2 files changed, 16 insertions(+), 62 deletions(-)
Comment 10 Greg Rivers 2021-08-27 17:45:04 UTC
(In reply to Tobias C. Berner from comment #8)
I'm using the latest pkg repo. Sorry, I should have said so in the first place.
Comment 11 Graham Perrin freebsd_committer freebsd_triage 2021-08-31 01:56:57 UTC
(In reply to Greg Rivers from comment #7)

> … freshly installed system …

Updated to 13.0-RELEASE-p4?
Comment 12 Greg Rivers 2021-08-31 17:50:32 UTC
(In reply to Graham Perrin from comment #11)
Yep, 13.0-RELEASE-p4.
Comment 13 Greg Rivers 2021-08-31 23:21:14 UTC
After running `pkg upgrade` just now against the "latest" pkg repo, akonadi is working for me with mysql 5.7.35. Looks like Tobias' August 27 commit fixed the problem. Thanks!
Comment 14 Tobias C. Berner freebsd_committer freebsd_triage 2021-12-11 16:55:20 UTC
Moin moin 

It looks like this issue is resolved -- please feel free to reopen it, if you still experience it.


mfg Tobias