Bug 14008

Summary: mysql-workbench-oss перестала соединяться с mariadb, требует libmysqlclient_r.so
Product: [ROSA-based products] ROSA Fresh Reporter: Artem <temap>
Component: Contributed PackagesAssignee: ROSA Linux Bugs <bugs>
Status: VERIFIED FIXED QA Contact: ROSA Linux Bugs <bugs>
Severity: major    
Priority: Normal CC: a.proklov, m.novosyolov, pastordidi, s.matveev, temap, v.potapov
Version: AllFlags: v.potapov: qa_verified+
a.proklov: published+
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Platform: 2021.1 ROSA Vulnerability identifier:
RPM Package: ISO-related:
Bad POT generating: Upstream:

Description Artem 2023-11-04 17:25:30 MSK
Не могу сказать с какого момента, но месяцев пять или шесть или четыре назад всё работало, т.к. я проектировал базу данных и всё было нормально.
Сейчас соединиться с базой данных невозможно.
Comment 1 Artem 2023-11-04 17:31:41 MSK
Зачем вот это было сделано?
https://abf.io/import/mariadb/blob/rosa2023.1/mariadb.spec#lc-526
Это убило совместимость не только с workbench, полагаю
Comment 2 Artem 2023-11-04 19:11:11 MSK
dnf repoquery -f /usr/lib64/libmysqlclient_r.so
Последняя проверка окончания срока действия метаданных: 1:44:18 назад, Сб 04 ноя 2023 17:12:16.
lib64mariadb-devel-0:3.1.13-2.x86_64

Забавно. Нужный файл есть в devel
Comment 4 Mikhail Novosyolov 2023-11-05 00:35:45 MSK
(In reply to Artem from comment #1)
> Зачем вот это было сделано?
> https://abf.io/import/mariadb/blob/rosa2023.1/mariadb.spec#lc-526
> Это убило совместимость не только с workbench, полагаю

Там же написано, зачем. Клиентские библиотеки собираются не из mariadb, а из mariadb-connector-c, т.е. библиотеик для доступа к mysql обстрагированы от конкретной реализации mysql.

(In reply to Artem from comment #2)
> dnf repoquery -f /usr/lib64/libmysqlclient_r.so
> Последняя проверка окончания срока действия метаданных: 1:44:18 назад, Сб 04
> ноя 2023 17:12:16.
> lib64mariadb-devel-0:3.1.13-2.x86_64
> 
> Забавно. Нужный файл есть в devel

В PR https://abf.io/import/mysql-workbench-oss/pull_requests/2 добавлена зависимость от devel-пакета, это дичь. Обычно такое бывает, когда библиотека подгружается по dlopen(). Значит надо запатчить так, чтобы dlopen-алась не libfoo.so, а libfoo.so.N.
Comment 5 Mikhail Novosyolov 2023-11-05 00:40:00 MSK
Сходу не нашел в исходниках dlopen(). Артем, раз у тебя настроено соединение с БД, запусти, пожалуйста, strace -f mysql-workbench 2>&1 | grep ibmysqlclient , что оно выдаст?
Comment 6 Mikhail Novosyolov 2023-11-05 00:41:13 MSK
Либо grep libmariadb.so
Comment 7 Mikhail Novosyolov 2023-11-05 00:41:54 MSK
(In reply to Mikhail Novosyolov from comment #4)
> (In reply to Artem from comment #1)
> > Зачем вот это было сделано?
> > https://abf.io/import/mariadb/blob/rosa2023.1/mariadb.spec#lc-526
> > Это убило совместимость не только с workbench, полагаю
> 
> Там же написано, зачем. Клиентские библиотеки собираются не из mariadb, а из
> mariadb-connector-c, т.е. библиотеик для доступа к mysql обстрагированы от
> конкретной реализации mysql.
> 
И, кстати, шесть месяцев назад и даже больше было точно так же, это не менялось.
Comment 8 Artem 2023-11-05 14:44:34 MSK
$ strace -f mysql-workbench 2>&1 | grep libmysqlclient
[pid  6091] openat(AT_FDCWD, "/usr/lib64/mysql-workbench/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/mysql-workbench/plugins/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/lib64/glibc-hwcaps/x86-64-v4/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/glibc-hwcaps/x86-64-v3/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/glibc-hwcaps/x86-64-v2/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/haswell/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/haswell/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/haswell/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/haswell/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/lib64/tls/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/tls/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/lib64/haswell/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/haswell/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/haswell/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/haswell/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/lib64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/glibc-hwcaps/x86-64-v4/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/glibc-hwcaps/x86-64-v3/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/usr/lib64/glibc-hwcaps/x86-64-v2/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/haswell/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/haswell/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/haswell/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/haswell/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  6091] openat(AT_FDCWD, "/usr/lib64/tls/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/haswell/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/haswell/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/haswell/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/haswell/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/avx512_1/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/avx512_1/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/x86_64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid  6091] openat(AT_FDCWD, "/usr/lib64/libmysqlclient_r.so", O_RDONLY|O_CLOEXEC <unfinished ...>
Comment 9 Artem 2023-11-05 14:45:54 MSK
Я нашёл ноутбук на котором я схему делал и посмотрел почему полгода назад работало. Я там установил в числе прочих и lib64mariadb-devel, просто отметив её тоже почему-то
Comment 10 Artem 2023-11-05 14:56:51 MSK
$ strace -f mysql-workbench 2>&1 | grep libmariadb
[pid  9093] openat(AT_FDCWD, "/usr/lib64/mysql-workbench/libmariadb.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  9093] openat(AT_FDCWD, "/usr/lib64/mysql-workbench/plugins/libmariadb.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  9093] openat(AT_FDCWD, "/usr/lib64/libmariadb.so.3", O_RDONLY|O_CLOEXEC) = 3
[pid  9093] writev(1, [{iov_base="\t", iov_len=1}, {iov_base="libmariadb.so.3", iov_len=15}, {iov_base=" => ", iov_len=4}, {iov_base="/usr/lib64/libmariadb.so.3", iov_len=26}, {iov_base=" (0x", iov_len=4}, {iov_base="00007f6f3dd43000", iov_len=16}, {iov_base=")\n", iov_len=2}], 7 <unfinished ...>
[pid  9091] <... read resumed>"\tlibmariadb.so.3 => /usr/lib64/l"..., 512) = 68
[pid  9115] openat(AT_FDCWD, "/usr/lib64/mysql-workbench/libmariadb.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  9115] openat(AT_FDCWD, "/usr/lib64/mysql-workbench/plugins/libmariadb.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
[pid  9115] openat(AT_FDCWD, "/usr/lib64/libmariadb.so.3", O_RDONLY|O_CLOEXEC) = 3
Comment 11 Mikhail Novosyolov 2023-11-05 20:49:09 MSK
********* QA ADVISORY *********

mysql-connector-c++ 1.1.9-3
- fix dlopen()'ing library
https://abf.io/build_lists/4815560
https://abf.io/build_lists/4815561
https://abf.io/build_lists/4815562
https://abf.io/build_lists/4815563
https://abf.io/build_lists/4815564
Comment 12 Mikhail Novosyolov 2023-11-05 22:10:51 MSK
mysql-workbench-oss 8.0.31-3
- в desktop-файл добавлен комментарий по-русски, добавлено упоминание mariadb
- убрано сообщение о неподдерживаемой ОС при запуске программы
https://abf.io/build_lists/4815576
https://abf.io/build_lists/4815577
Comment 13 Dmitry Postnikov 2023-11-07 14:25:05 MSK
(In reply to Mikhail Novosyolov from comment #11)

> mysql-connector-c++ 1.1.9-3
> - fix dlopen()'ing library
> https://abf.io/build_lists/4815560
> https://abf.io/build_lists/4815561
> https://abf.io/build_lists/4815562
> https://abf.io/build_lists/4815563
> https://abf.io/build_lists/4815564

(In reply to Mikhail Novosyolov from comment #12)
> mysql-workbench-oss 8.0.31-3
> - в desktop-файл добавлен комментарий по-русски, добавлено упоминание mariadb
> - убрано сообщение о неподдерживаемой ОС при запуске программы
> https://abf.io/build_lists/4815576
> https://abf.io/build_lists/4815577


*****************************
Обновление отослано в Тестинг
Comment 14 Vladimir Potapov 2023-11-14 11:31:49 MSK
mysql-connector-c++-1.1.9-3
https://abf.io/build_lists/4815560
https://abf.io/build_lists/4815561
https://abf.io/build_lists/4815562
https://abf.io/build_lists/4815563
https://abf.io/build_lists/4815564

mysql-workbench-oss-8.0.31-3
https://abf.io/build_lists/4815576
https://abf.io/build_lists/4815577
********************************* Advisory ***************************
- fix dlopen()'ing library
- minor and localization fixes
**********************************************************************
QA Verified