[MDEV-20401] Server auto-sets lower_case_file_system value based on default datadir's behavior Created: 2019-08-21  Updated: 2021-04-19  Resolved: 2020-07-16

Status: Closed
Project: MariaDB Server
Component/s: Configuration, Locale Settings, Variables
Affects Version/s: 10.3.17
Fix Version/s: 10.1.46, 10.2.33, 10.3.24, 10.4.14, 10.5.5

Type: Bug Priority: Critical
Reporter: Juan Assignee: Julius Goryavsky
Resolution: Fixed Votes: 0
Labels: galera, logging
Environment:

RHEL



 Description   

When SST is unable to write to the datadir, it logs this warning:

2019-08-21 15:25:02 0 [Warning] Can't create test file /var/lib/mysql/cs04r-sc-serv-99.lower-test

...even when the datadir has been configured to something other than /var/lib/mysql/.



 Comments   
Comment by Jan Lindström (Inactive) [ 2019-08-27 ]

Can you provide error log from the joiner ?

Comment by Karl Levik [ 2019-08-29 ]

This issue originally came from me.

Afraid I don't have the error log now. I actually didn't see an .err file in the data dir on the joiner while this was ongoing. (I did look for one!) I think I got the above warning from "systemctl status mariadb" or journalctl.

Comment by Jan Lindström (Inactive) [ 2019-09-09 ]

I think this works as designed when it can't write the datadir it will select the default location.

Comment by Karl Levik [ 2019-09-09 ]

That seems rather confusing. Why would it try to write to the datadir specified in the .cnf files, and if it can't write there, then report that it can't write to the default datadir? Why not simply report that it couldn't write where it actually tried to write?

Comment by Juan [ 2019-09-10 ]

Hi jplindst,

The error is that the log warning is reporting the wrong directory. Even if the server does try the default data directory after failing a test write on the configured data directory, it should log that it was unable to write to the configured data directory.

Comment by Geoff Montee (Inactive) [ 2020-01-22 ]

This problem does not look specific to Galera. It looks the problem is here:

https://github.com/MariaDB/server/blob/mariadb-10.1.43/sql/mysqld.cc#L4541

It is performing the check with the value mysql_real_data_home, which refers to the path of the default datadir:

  SYSVAR_AUTOSIZE(lower_case_file_system,
                  test_if_case_insensitive(mysql_real_data_home));

I believe that it should actually be performing the check with the value of mysql_real_data_home_ptr, which refers to the path of the actual datadir. e.g.:

  SYSVAR_AUTOSIZE(lower_case_file_system,
                  test_if_case_insensitive(mysql_real_data_home_ptr));

Comment by Julius Goryavsky [ 2020-05-12 ]

A check has been added for a variable indicating a user value (instead of default), plus the corresponding option has been parsed at an early stage, plus a check for its absence has been added: https://github.com/MariaDB/server/commit/93dea7da8302f2518b70175d3d4d8075b878f545

Comment by Julius Goryavsky [ 2020-07-16 ]

Fixed, https://github.com/MariaDB/server/commit/93dea7da8302f2518b70175d3d4d8075b878f545

Generated at Thu Feb 08 08:59:11 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.