[MDEV-13050] server/debian/mariadb-server-10.x.mysql-server.logrotate || GNU grep v. 2.2.4 [UBUNTU-16.04] FAILS Created: 2017-06-09  Updated: 2021-12-03  Resolved: 2021-12-03

Status: Closed
Project: MariaDB Server
Component/s: Platform Debian
Affects Version/s: 10.0, 10.1, 10.2
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: hubert reffer Assignee: Daniel Black
Resolution: Duplicate Votes: 0
Labels: logrotate

Issue Links:
Duplicate
is duplicated by MDEV-19436 Fix logrotate problem with twice conf... Closed
PartOf
is part of MDEV-22659 Create one single unified and optimal... Closed

 Description   

server/debian/mariadb-server-10.x.mysql-server.logrotate
line 14: if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then

this always fails in GNU grep v. 22.4 because of:

_*$ echo $ | grep -Pz $
grep: unescaped $ or $ not supported with -Pz
...
This is desired behavior of GNU grep version 2.24 (released on March 10 2016) and above, and that's the fix for the bug which was introduced in GNU grep 2.5.
...
*_
https://unix.stackexchange.com/questions/324263/grep-command-doesnt-support-start-and-end-of-line-anchors-when-its-wit

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22655#47

Though it's a GNU grep issue there's the need for adjusting grep condition to circumstances.



 Comments   
Comment by Daniel Black [ 2017-06-13 ]

Given the amount of use of my_print_defaults to extract specific server settings perhaps it is my_print_defaults that needs an interface change to return a subset of values only rather than predictable but necessary grep pipelines.

Comment by OndÅ™ej Surý (Inactive) [ 2017-11-22 ]

The line could be updated to:

          if [ -f `my_print_defaults --mysqld | grep -m 1 -oP "pid-file=\K.+$"` ]; then

That's what the Debian packages use right now.

Comment by Daniel Black [ 2018-03-22 ]

Or since pid files aren't actually needed in the configuration:

if systemctl -q is-active mariadb; then

Comment by Pablo Catalina [ 2019-10-24 ]

The fix implemented in Debian is not a proper solution, as the process will use the latest definition of a variable. So the 1st instance in /etc/mysql/my.cnf will be overwritten with the second instance in /etc/mysql/mariadb.conf.d/50-server.cnf. Or, potentially in other custom definitions of the variable.

It is better to use:

if [ -f $(my_print_defaults --mysqld | grep -m1 -oP "pid-file=\K[^$]+") | tail -n1 ]; then

Comment by Pablo Catalina [ 2019-10-24 ]

Fix on pull request:
https://github.com/MariaDB/server/pull/934

Comment by Otto Kekäläinen [ 2021-04-04 ]

Superseded by https://github.com/MariaDB/server/pull/1556 and MDEV-22659.

Comment by Daniel Black [ 2021-12-03 ]

Fixed per duplicate issue MDEV-19436

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