Summary: | Akonadi server fails to start when home is in AFS on KDE 4.8.5, Kubuntu 12.04 amd64 | ||
---|---|---|---|
Product: | [Frameworks and Libraries] Akonadi | Reporter: | u1204 |
Component: | server | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED UPSTREAM | ||
Severity: | grave | CC: | dvratil |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Kubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
u1204
2013-10-18 09:28:30 UTC
Could you please verify whether file /afs/mydomain/myuser/.local/share/akonadi/mysql.conf exists and whether it's readable? (In reply to comment #1) > Could you please verify whether file > /afs/mydomain/myuser/.local/share/akonadi/mysql.conf exists and whether it's > readable? Yes it exists and is readable: $ ls -l /afs/mydomain/myuser/.local/share/akonadi/mysql.conf -rw-r--r-- 1 myuser mygroup 3277 Oct 15 17:34 /afs/mydomain/myuser/.local/share/akonadi/mysql.conf Now when I have added a symbolic link for /afs/mydomain/myuser/.local/share/akonadi to the local harddrive (ext4) that file is not stored in AFS. This is how the file lookes like (it was automatically created when I tried to run "kmail"): $ cat /afs/mydomain/myuser/.local/share/akonadi/mysql.conf # # Global Akonadi MySQL server settings, # These settings can be adjusted using $HOME/.config/akonadi/mysql-local.conf # # Based on advice by Kris Köhntopp <kris@mysql.com> # [mysqld] # strict query parsing/interpretation # TODO: make Akonadi work with those settings enabled # sql_mode=strict_trans_tables,strict_all_tables,strict_error_for_division_by_zero,no_auto_create_user,no_auto_value_on_zero,no_engine_substitution,no_zero_date,no_zero_in_date,only_full_group_by,pipes_as_concat # sql_mode=strict_trans_tables # DEBUGGING: # log all queries, useful for debugging but generates an enormous amount of data # log=mysql.full # log queries slower than n seconds, log file name relative to datadir (for debugging only) # log_slow_queries=mysql.slow # long_query_time=1 # log queries not using indices, debug only, disable for production use # log_queries_not_using_indexes=1 # # mesure database size and adjust innodb_buffer_pool_size # SELECT sum(data_length) as bla, sum(index_length) as blub FROM information_schema.tables WHERE table_schema not in ("mysql", "information_schema"); # NOTES: # Keep Innob_log_waits and keep Innodb_buffer_pool_wait_free small (see show global status like "inno%", show global variables) #expire_logs_days=3 #sync_bin_log=0 # Use UTF-8 encoding for tables character_set_server=utf8 collation_server=utf8_general_ci # use InnoDB for transactions and better crash recovery default_storage_engine=innodb # memory pool InnoDB uses to store data dictionary information and other internal data structures (default:1M) innodb_additional_mem_pool_size=1M # memory buffer InnoDB uses to cache data and indexes of its tables (default:128M) # Larger values means less I/O innodb_buffer_pool_size=80M # Create a .ibd file for each table (default:0) innodb_file_per_table=1 # Write out the log buffer to the log file at each commit (default:1) innodb_flush_log_at_trx_commit=2 # Buffer size used to write to the log files on disk (default:1M for builtin, 8M for plugin) # larger values means less I/O innodb_log_buffer_size=1M # Size of each log file in a log group (default:5M) larger means less I/O but more time for recovery. innodb_log_file_size=64M # # error log file name, relative to datadir (default:hostname.err) log_error=mysql.err # print warnings and connection errors (default:1) log_warnings=2 # Convert table named to lowercase lower_case_table_names=1 # Maximum size of one packet or any generated/intermediate string. (default:1M) max_allowed_packet=32M # Maximum simultaneous connections allowed (default:100) max_connections=256 # The two options below make no sense with prepared statements and/or transactions # (make sense when having the same query multiple times) # Memory allocated for caching query results (default:0 (disabled)) query_cache_size=0 # Do not cache results (default:1) query_cache_type=0 # Do not use the privileges mechanisms skip_grant_tables # Do not listen for TCP/IP connections at all skip_networking # The number of open tables for all threads. (default:64) table_cache=200 # How many threads the server should cache for reuse (default:0) thread_cache_size=3 # wait 365d before dropping the DB connection (default:8h) wait_timeout=31536000 [client] default-character-set=utf8 Bit of a googling revealed ([0], [1]), that MySQL actually might not work on AFS, so there's nothing we can do about this. [0] http://pages.cs.wisc.edu/~bolo/notes/mysql.html [1] http://lists.mysql.com/mysql/16170 (In reply to comment #3) > Bit of a googling revealed ([0], [1]), that MySQL actually might not work on > AFS, so there's nothing we can do about this. > [0] http://pages.cs.wisc.edu/~bolo/notes/mysql.html > [1] http://lists.mysql.com/mysql/16170 But MySQL should work since the MySQL files are not stored in AFS since I have made symbolic links for the folders ~/.config/akonadi and ~/.local/share/akonadi to the local harddrive (ext4) and the MySQL files that Akonadi uses seem to be stored in /local/myuser/.local/share/akonadi/db_data/mysql/: $ df -h /local/myuser/.local/share/akonadi/db_data/mysql/. Filesystem Size Used Avail Use% Mounted on /dev/sda3 213G 192M 202G 1% /local This is how I have created the symbolic links: $ mkdir -p /local/myuser/.local/share $ mv ~/.local/share/akonadi /local/myuser/.local/share/ $ ln -s /local/myuser/.local/share/akonadi ~/.local/share/ $ mkdir -p /local/myuser/.config $ mv ~/.config/akonadi /local/myuser/.config/ $ ln -s /local/myuser/.config/akonadi ~/.config/ $ ls -l ~/.local/share/akonadi lrwxr-xr-x 1 myuser mygroup 34 Oct 16 09:01 /afs/mydomain/myuser/.local/share/akonadi -> /local/myuser/.local/share/akonadi $ ls -l ~/.config/akonadi lrwxr-xr-x 1 myuser mygroup 29 Oct 16 09:01 /afs/mydomain/myuser/.config/akonadi -> /local/myuser/.config/akonadi I have now also tried to move the whole folders ~/.config ~/.local ~/.kde from AFS to the local harddrive (ext4) but the problem is the same. Is it not strange that it complains with the following: stderr: "Could not open required defaults file: /afs/mydomain/myuser/.local/share/akonadi/mysql.conf Fatal error in defaults handling. Program aborted " because the file /afs/mydomain/myuser/.local/share/akonadi/mysql.conf is there and is readable both by myuser and by root). You said the afs file is a symlink to a local file, right? Maybe MySQL simply refuses to read anything from a network filesystem. Anyway, this is obviously a problem in MySQL not in Akonadi, so closing as UPSTREAM. Please take this to MySQL forum/mailing list, maybe they will be able to help you. You can also try with PostgreSQL, maybe they support AFS. Sorry for being stupid, but how do I change so that Akonadi uses PostgreSQL instead of MySQL? I have now installed the packet "akonadi-backend-postgresql" but if I try to remove the package "akonadi-backend-mysql" the system also wants to remove akonadi-server. Any other database management system would be fine too if PostgreSQL is not a suitable. You don't have to remove the MySQL package. Stop Akonadi (akonadictl stop), start Akonadi Server KCM (kcmshell4 akonadi_server), select PostgreSQL driver and configure it. Then delete ~/.local/share/akonadi/db_data and ~/.local/share/akonadi/file_db_data and ~/.config/akonadi. Then start Akonadi (akonadictl start) and you should be running against PostgreSQL. You will have to recreate all settings though and Akonadi will have to download everything again. We only support MySQL, PostgreSQL and SQLite backends, but SQLite is NOT recommended due to miserable performance. |