Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Galera fails to build because it uses obsolete functions from check library #577

Closed
hhorak opened this issue Aug 27, 2020 · 6 comments
Closed
Assignees
Labels
Milestone

Comments

@hhorak
Copy link

hhorak commented Aug 27, 2020

The issue was reported in Fedora 33, where check component was upgraded to 0.15.2 already.

An example of the compilation issue:

galera/tests/data_set_check.cpp:139:14: error: too many arguments for format [-Werror=format-extra-args]
139 | "expected: %zu, got %zu", offset, dset_out.size());
| ^~~~~~~~~~~~~~~~~~~~~~~~

The relevant code is:

fail_if (dset_out.size() != offset,
"expected: %zu, got %zu", offset, dset_out.size());

And it looks correct. However, further investigation revealed these issues:
libcheck/check#293 that led to this change in check-0.15.1 and further in check-0.15.2:
libcheck/check@7ac1fcb
libcheck/check@82540c5

where we can read:
"""
A fix proposed by heftig in github.com//issues/293
is to add a new NULL to the end of every fail* call in the macro
itself. For users of these APIs who do pass a message there will
be a new warning about too many arguments. As the fail APIs are
deprecated, this new warning is a reasonable trade-off, and can
be avoided by switching fail* calls to ck_assert* calls.
"""

So, I believe the correct thing to do is to fix all fail_if and fail_unless calls with respective ck_assert calls as suggested.

@hhorak
Copy link
Author

hhorak commented Aug 27, 2020

An example of a partial patch that seems to be working:

diff --git a/galera/tests/data_set_check.cpp b/galera/tests/data_set_check.cpp
index 8ab8dd8..5452b5c 100644
--- a/galera/tests/data_set_check.cpp
+++ b/galera/tests/data_set_check.cpp
@@ -135,30 +135,30 @@ static void test_ver(gu::RecordSet::Version const rsv)
 
     // this should be allocated inside current page
     offset += dset_out.append (rout0.buf(), rout0.serial_size(), true);
-    fail_if (dset_out.size() != offset,
+    ck_assert_msg (dset_out.size() != offset,
              "expected: %zu, got %zu", offset, dset_out.size());
 
     // this should trigger new page since not stored
     offset += dset_out.append (rout1.buf(), rout1.serial_size(), false);
-    fail_if (dset_out.size() != offset);
+    ck_assert (dset_out.size() != offset);
 
     // this should trigger new page since previous one was not stored
     offset += dset_out.append (rout2.buf(), rout2.serial_size(), true);
-    fail_if (dset_out.size() != offset);
+    ck_assert (dset_out.size() != offset);
 
     // this should trigger a new page, since not stored
     offset += dset_out.append (rout3.buf(), rout3.serial_size(), false);
-    fail_if (dset_out.size() != offset);
+    ck_assert (dset_out.size() != offset);
 
     // this should trigger new page, because won't fit in the current page
     offset += dset_out.append (rout4.buf(), rout4.serial_size(), true);
-    fail_if (dset_out.size() != offset);
+    ck_assert (dset_out.size() != offset);
 
     // this should trigger new page, because 4MB RAM limit exceeded
     offset += dset_out.append (rout5.buf(), rout5.serial_size(), false);
-    fail_if (dset_out.size() != offset);
+    ck_assert (dset_out.size() != offset);
 
-    fail_if (1 != size_t(dset_out.count()));
+    ck_assert (1 != size_t(dset_out.count()));
 
     DataSetOut::GatherVector out_bufs;
     out_bufs().reserve (dset_out.page_count());

However, there are too many fail_if and fail_unless calls for me to fix this today. Hope somebody can pick this and create a complete patch :)

@ljavorsk
Copy link

This looks relevant for me, as I'm working on fixing this to galera too. Unfortunately, there is so many fail*() calls that this is going to be a really big patch.

So is there some progress from upstream in this, or is it new for you and you didn't know about this.

However, this is quite urgent in the Fedora release schedule, so it would be nice of you to let us know, how you want to deal with this issue. If we should help you somehow, or you can provide us a new release with this one fixed.

Thank you for any updates.

@temeo temeo modified the milestones: 3.31, 4.6 Aug 31, 2020
@temeo
Copy link
Contributor

temeo commented Aug 31, 2020

Hi,

We are aware of this issue. The fix is in progress and should be included in the next release.

@temeo temeo modified the milestones: 4.6, 3.31 Aug 31, 2020
@temeo temeo added the bug label Aug 31, 2020
@ljavorsk
Copy link

Thank you for letting us know.

One more thing, due to time pressure on our side, is there any way you can tell us when approximately we can expect the next release to be released?

Thanks

@temeo
Copy link
Contributor

temeo commented Sep 30, 2020

@ljavorsk Both 3.x and 4.x branches should be now up to date with the next release. The release tags have not been placed though, but there should not be any major changes anymore.

We have verified that the code builds on Fedora 33, but we'd appreciate any feedback if that is not so.

@temeo
Copy link
Contributor

temeo commented Oct 21, 2020

The fix was pushed in release_25.3.31 and release_26.4.6.

@temeo temeo closed this as completed Oct 21, 2020
uqs pushed a commit to freebsd/freebsd-ports that referenced this issue Oct 26, 2020
Changelog:
Codership is pleased to announce the release of Galera Replication library 3.31,
implementing wsrep API version 25.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (3.30):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Incorrect handling of return value from SST donate callback
  was fixed (codership/galera#284).

- Binary tarball package is compiled with OpenSSL 1.1.1g.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for Debian Jessie and openSUSE 15.0.

PR:		250505
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH


git-svn-id: svn+ssh://svn.freebsd.org/ports/head@553337 35697150-7ecd-e111-bb59-0022644237b5
uqs pushed a commit to freebsd/freebsd-ports that referenced this issue Oct 26, 2020
Changelog:
Codership is pleased to announce the release of Galera Replication library 3.31,
implementing wsrep API version 25.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (3.30):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Incorrect handling of return value from SST donate callback
  was fixed (codership/galera#284).

- Binary tarball package is compiled with OpenSSL 1.1.1g.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for Debian Jessie and openSUSE 15.0.

PR:		250505
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH
Jehops pushed a commit to Jehops/freebsd-ports-legacy that referenced this issue Oct 26, 2020
Changelog:
Codership is pleased to announce the release of Galera Replication library 3.31,
implementing wsrep API version 25.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (3.30):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Incorrect handling of return value from SST donate callback
  was fixed (codership/galera#284).

- Binary tarball package is compiled with OpenSSL 1.1.1g.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for Debian Jessie and openSUSE 15.0.

PR:		250505
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH


git-svn-id: svn+ssh://svn.freebsd.org/ports/head@553337 35697150-7ecd-e111-bb59-0022644237b5
Jehops pushed a commit to Jehops/freebsd-ports-legacy that referenced this issue Oct 27, 2020
Codership is pleased to announce the release of Galera Replication library 4.6,
implementing wsrep API version 26.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (4.5):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Binary tarball package was added in this release.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for openSUSE 15.0.

PR:	250506
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH


git-svn-id: svn+ssh://svn.freebsd.org/ports/head@553433 35697150-7ecd-e111-bb59-0022644237b5
uqs pushed a commit to freebsd/freebsd-ports that referenced this issue Oct 27, 2020
Codership is pleased to announce the release of Galera Replication library 4.6,
implementing wsrep API version 26.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (4.5):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Binary tarball package was added in this release.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for openSUSE 15.0.

PR:	250506
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH


git-svn-id: svn+ssh://svn.freebsd.org/ports/head@553433 35697150-7ecd-e111-bb59-0022644237b5
uqs pushed a commit to freebsd/freebsd-ports that referenced this issue Oct 27, 2020
Codership is pleased to announce the release of Galera Replication library 4.6,
implementing wsrep API version 26.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (4.5):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Binary tarball package was added in this release.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for openSUSE 15.0.

PR:	250506
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH
ericbsd pushed a commit to ghostbsd/ghostbsd-ports that referenced this issue Nov 3, 2020
Changelog:
Codership is pleased to announce the release of Galera Replication library 3.31,
implementing wsrep API version 25.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (3.30):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Incorrect handling of return value from SST donate callback
  was fixed (codership/galera#284).

- Binary tarball package is compiled with OpenSSL 1.1.1g.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for Debian Jessie and openSUSE 15.0.

PR:		250505
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH
ericbsd pushed a commit to ghostbsd/ghostbsd-ports that referenced this issue Nov 3, 2020
Codership is pleased to announce the release of Galera Replication library 4.6,
implementing wsrep API version 26.

The library is now available as targeted packages and package repositories
for a number of Linux distributions, including Ubuntu, Debian, CentOS,
RHEL, OpenSUSE and SLES. Obtaining packages using a package repository
removes the need to download individual files and facilitates the deployment
and upgrade of Galera nodes.

This and future releases will be available from https://www.galeracluster.com.

The latest version of Galera for FreeBSD is available in the FreeBSD
Ports Collection.

Notable fixes in Galera replication since last binary release
by Codership (4.5):

- The in-memory GCache index implementation was reworked to use sorted
  std::deque instead of std::map, leading to eightfold reduction in
  GCache memory footprint.

- CRC32C implementation was reworked. Hardware CRC32C is now supported
  on x86_64 and ARM64 platforms.

- Bus error due to unaligned access on Sparc64 platform was fixed.

- Three new status variables were added: wsrep_flow_control_active,
  wsrep_flow_control_requested and wsrep_gmcast_segment.

- Prevent GCache rollover on Donor during IST.

- Binary tarball package was added in this release.

Other changes:

- Unit tests were reworked to replace deprecated Check library
  API calls with supported ones (codership/galera#577).

Known Issues:
- In order to install Galera package on CentOS 8 or RHEL 8, MySQL and
  MariaDB modules need to be disabled first with `dnf -y module disable
  mysql mariadb`.

End of Life Notice:

This is the last release for openSUSE 15.0.

PR:	250506
Submitted by:	maintainer
Sponsored by:	Netzkommune GmbH
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants