Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package galera-4 for openSUSE:Factory checked in at 2022-06-17 21:19:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/galera-4 (Old) and /work/SRC/openSUSE:Factory/.galera-4.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "galera-4" Fri Jun 17 21:19:57 2022 rev:7 rq:982047 version:26.4.12 Changes: -------- --- /work/SRC/openSUSE:Factory/galera-4/galera-4.changes 2022-04-30 00:44:15.474884803 +0200 +++ /work/SRC/openSUSE:Factory/.galera-4.new.1548/galera-4.changes 2022-06-17 21:22:10.502762379 +0200 @@ -1,0 +2,12 @@ +Thu Jun 9 14:11:09 UTC 2022 - Danilo Spinella <danilo.spine...@suse.com> + +- Update to 26.4.12: + * WORK_DIR parameter added for garb.cnf and launch scripts to ensure Galera + Arbitrator handles recovery files better (this includes command line option to + specify working directory), fixing codership/galera#313 + * Fixes to renaming fc_master_slave to fc_single_primary + * Catch local_endpoint() and remote_endpoint() exceptions, so they aren't + propagated to the stack, fixing a cluster crash and MDEV-25068 + * SSL options are explicitly initialised in garbd, fixing MDEV-28158 + +------------------------------------------------------------------- Old: ---- galera-4-26.4.11.tar.gz galera-4-26.4.11.tar.gz.asc New: ---- galera-4-26.4.12.tar.gz galera-4-26.4.12.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ galera-4.spec ++++++ --- /var/tmp/diff_new_pack.PiMXAx/_old 2022-06-17 21:22:10.910762600 +0200 +++ /var/tmp/diff_new_pack.PiMXAx/_new 2022-06-17 21:22:10.914762603 +0200 @@ -25,14 +25,14 @@ %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif Name: galera-4 -Version: 26.4.11 +Version: 26.4.12 Release: 0 Summary: Galera: a synchronous multi-master wsrep provider (replication engine) License: GPL-2.0-only Group: Productivity/Databases/Tools URL: https://galeracluster.com/ -Source: http://releases.galeracluster.com/staging/galera-4/source/%{name}-%{version}.tar.gz -Source1: http://releases.galeracluster.com/staging/galera-4/source/%{name}-%{version}.tar.gz.asc +Source: https://releases.galeracluster.com/galera-4.12/source/%{name}-%{version}.tar.gz +Source1: https://releases.galeracluster.com/galera-4.12/source/%{name}-%{version}.tar.gz.asc Source2: garb-user.conf Patch0: galera-3-25.3.10_fix_startup_scripts.patch Patch2: fix-cmake-install.patch ++++++ galera-4-26.4.11.tar.gz -> galera-4-26.4.12.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/DartConfiguration.tcl new/galera-4-26.4.12/DartConfiguration.tcl --- old/galera-4-26.4.11/DartConfiguration.tcl 1970-01-01 01:00:00.000000000 +0100 +++ new/galera-4-26.4.12/DartConfiguration.tcl 2022-04-27 16:01:51.000000000 +0200 @@ -0,0 +1,115 @@ +# This file is configured by CMake automatically as DartConfiguration.tcl +# If you choose not to use CMake, this file may be hand configured, by +# filling in the required variables. + + +# Configuration directories and files +SourceDirectory: /var/lib/jenkins/workspace/aws-galera-4-sourcetar +BuildDirectory: /var/lib/jenkins/workspace/aws-galera-4-sourcetar + +# Where to place the cost data store +CostDataFile: + +# Site is something like machine.domain, i.e. pragmatic.crd +Site: master + +# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ +BuildName: Linux-c++ + +# Subprojects +LabelsForSubprojects: + +# Submission information +IsCDash: +CDashVersion: +QueryCDashVersion: +DropSite: +DropLocation: +DropSiteUser: +DropSitePassword: +DropSiteMode: +DropMethod: http +TriggerSite: +ScpCommand: /usr/bin/scp + +# Dashboard start time +NightlyStartTime: 00:00:00 EDT + +# Commands for the build/test/submit cycle +ConfigureCommand: "/usr/bin/cmake" "/var/lib/jenkins/workspace/aws-galera-4-sourcetar" +MakeCommand: /usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" -- -i +DefaultCTestConfigurationType: Release + +# version control +UpdateVersionOnly: + +# CVS options +# Default is "-d -P -A" +CVSCommand: CVSCOMMAND-NOTFOUND +CVSUpdateOptions: -d -A -P + +# Subversion options +SVNCommand: /usr/bin/svn +SVNOptions: +SVNUpdateOptions: + +# Git options +GITCommand: /usr/bin/git +GITInitSubmodules: +GITUpdateOptions: +GITUpdateCustom: + +# Perforce options +P4Command: P4COMMAND-NOTFOUND +P4Client: +P4Options: +P4UpdateOptions: +P4UpdateCustom: + +# Generic update command +UpdateCommand: /usr/bin/git +UpdateOptions: +UpdateType: git + +# Compiler info +Compiler: /usr/bin/c++ +CompilerVersion: 7.5.0 + +# Dynamic analysis (MemCheck) +PurifyCommand: +ValgrindCommand: +ValgrindCommandOptions: +MemoryCheckType: +MemoryCheckSanitizerOptions: +MemoryCheckCommand: /usr/bin/valgrind +MemoryCheckCommandOptions: +MemoryCheckSuppressionFile: + +# Coverage +CoverageCommand: /usr/bin/gcov +CoverageExtraFlags: -l + +# Cluster commands +SlurmBatchCommand: SLURM_SBATCH_COMMAND-NOTFOUND +SlurmRunCommand: SLURM_SRUN_COMMAND-NOTFOUND + +# Testing options +# TimeOut is the amount of time in seconds to wait for processes +# to complete during testing. After TimeOut seconds, the +# process will be summarily terminated. +# Currently set to 25 minutes +TimeOut: 1500 + +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: + +UseLaunchers: +CurlOptions: +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + +# For CTest submissions that timeout, these options +# specify behavior for retrying the submission +CTestSubmitRetryDelay: 5 +CTestSubmitRetryCount: 3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/GALERA_GIT_REVISION new/galera-4-26.4.12/GALERA_GIT_REVISION --- old/galera-4-26.4.11/GALERA_GIT_REVISION 2022-02-09 12:02:13.000000000 +0100 +++ new/galera-4-26.4.12/GALERA_GIT_REVISION 2022-04-27 16:01:49.000000000 +0200 @@ -1 +1 @@ -7b59af73 \ No newline at end of file +63116854 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/GALERA_REVISION new/galera-4-26.4.12/GALERA_REVISION --- old/galera-4-26.4.11/GALERA_REVISION 1970-01-01 01:00:00.000000000 +0100 +++ new/galera-4-26.4.12/GALERA_REVISION 2022-04-27 16:01:49.000000000 +0200 @@ -0,0 +1 @@ +63116854 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/GALERA_VERSION new/galera-4-26.4.12/GALERA_VERSION --- old/galera-4-26.4.11/GALERA_VERSION 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/GALERA_VERSION 2022-04-27 16:01:47.000000000 +0200 @@ -1,4 +1,4 @@ GALERA_VERSION_WSREP_API=26 GALERA_VERSION_MAJOR=4 -GALERA_VERSION_MINOR=11 +GALERA_VERSION_MINOR=12 GALERA_VERSION_EXTRA= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/SConstruct new/galera-4-26.4.12/SConstruct --- old/galera-4-26.4.11/SConstruct 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/SConstruct 2022-04-27 16:01:47.000000000 +0200 @@ -163,7 +163,7 @@ install = ARGUMENTS.get('install', None) version_script = int(ARGUMENTS.get('version_script', 1)) -GALERA_VER = ARGUMENTS.get('version', '4.11') +GALERA_VER = ARGUMENTS.get('version', '4.12') GALERA_REV = ARGUMENTS.get('revno', 'XXXX') # Attempt to read from file if not given diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/debian/changelog new/galera-4-26.4.12/debian/changelog --- old/galera-4-26.4.11/debian/changelog 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/debian/changelog 2022-04-27 16:01:47.000000000 +0200 @@ -1,5 +1,5 @@ -galera-4 (26.4.11) unstable; urgency=medium +galera-4 (26.4.12) UNRELEASED; urgency=medium * Galera 4 release - -- Codership Oy <i...@codership.com> Mon, 10 Jan 2022 17:37:52 +0200 + -- Codership Oy <i...@codership.com> Fri, 22 Apr 2022 13:53:36 +0300 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/galerautils/src/gu_asio_stream_react.cpp new/galera-4-26.4.12/galerautils/src/gu_asio_stream_react.cpp --- old/galera-4-26.4.11/galerautils/src/gu_asio_stream_react.cpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/galerautils/src/gu_asio_stream_react.cpp 2022-04-27 16:01:47.000000000 +0200 @@ -292,7 +292,15 @@ set_socket_options(socket_); prepare_engine(true); - assign_addresses(); + try + { + assign_addresses(); + } + catch(const asio::system_error& e) + { + handler->connect_handler(*this, AsioErrorCode(e.code().value())); + return; + } GU_ASIO_DEBUG(debug_print() << " AsioStreamReact::connect_handler: init handshake"); auto result(engine_->client_handshake()); @@ -790,7 +798,6 @@ set_socket_options(socket->socket_); socket->prepare_engine(false); socket->assign_addresses(); - std::string remote_ip = gu::unescape_addr(::escape_addr(socket->socket_.remote_endpoint().address())); auto connection_allowed(gu::allowlist_value_check(WSREP_ALLOWLIST_KEY_IP, remote_ip)); if (connection_allowed == false) @@ -885,8 +892,16 @@ set_socket_options(socket->socket_); socket->set_non_blocking(true); socket->prepare_engine(true); - socket->assign_addresses(); - + try + { + socket->assign_addresses(); + } + catch(const asio::system_error& e) + { + log_warn << "Failed to accept: " << e.what(); + async_accept(handler); + return; + } std::string remote_ip = gu::unescape_addr(::escape_addr(socket->socket_.remote_endpoint().address())); auto connection_allowed(gu::allowlist_value_check(WSREP_ALLOWLIST_KEY_IP, remote_ip)); if (connection_allowed == false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/galerautils/src/gu_asio_utils.hpp new/galera-4-26.4.12/galerautils/src/gu_asio_utils.hpp --- old/galera-4-26.4.11/galerautils/src/gu_asio_utils.hpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/galerautils/src/gu_asio_utils.hpp 2022-04-27 16:01:47.000000000 +0200 @@ -14,11 +14,13 @@ #endif // GU_ASIO_IMPL #include "asio/ip/address.hpp" +#include <boost/version.hpp> // Workaround for clang 3.4 which pretends to be an old gcc compiler -// which in turn turns off some features in boost headers. -#if (defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 4) || (__GNUC__ == 4 && __GNUC_MINOR__ == 4) - +// which in turn turns off some features in boost headers. Also +// GCC 4.4 and early Boost versions seem to be affected. +#if (defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 4) || \ + (__GNUC__ == 4 && __GNUC_MINOR__ == 4) || BOOST_VERSION < 105300 namespace gu { template <class T> inline T* get_pointer(std::shared_ptr<T> const& r) @@ -26,6 +28,8 @@ return r.get(); } } -#endif // defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 4 +#endif // (defined(__clang__) && __clang_major__ == 3 && + // __clang_minor__ <= 4) || + // (__GNUC__ == 4 && __GNUC_MINOR__ == 4) || BOOST_VERSION < 105300 #endif // GU_ASIO_UTILS_HPP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/files/freebsd/garb.sh new/galera-4-26.4.12/garb/files/freebsd/garb.sh --- old/galera-4-26.4.11/garb/files/freebsd/garb.sh 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/files/freebsd/garb.sh 2022-04-27 16:01:47.000000000 +0200 @@ -37,6 +37,7 @@ : ${garb_galera_options=""} : ${garb_log_file=""} : ${garb_pid_file="/var/run/garb.pid"} +: ${garb_working_directory=""} procname="/usr/local/bin/garbd" command="/usr/sbin/daemon" @@ -73,6 +74,7 @@ [ -n "$garb_galera_group" ] && command_args="$command_args -g $garb_galera_group" [ -n "$garb_galera_options" ] && command_args="$command_args -o $garb_galera_options" [ -n "$garb_log_file" ] && command_args="$command_args -l $garb_log_file" + [ -n "$garb_working_directory" ] && command_args="$command_args -w $garb_working_directory" return 0 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/files/garb-systemd new/galera-4-26.4.12/garb/files/garb-systemd --- old/galera-4-26.4.11/garb/files/garb-systemd 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/files/garb-systemd 2022-04-27 16:01:47.000000000 +0200 @@ -43,6 +43,7 @@ [ -n "${GALERA_GROUP:-}" ] && OPTIONS="$OPTIONS -g '$GALERA_GROUP'" [ -n "${GALERA_OPTIONS:-}" ] && OPTIONS="$OPTIONS -o '$GALERA_OPTIONS'" [ -n "${LOG_FILE:-}" ] && OPTIONS="$OPTIONS -l '$LOG_FILE'" + [ -n "${WORK_DIR:-}" ] && OPTIONS="$OPTIONS -w '$WORK_DIR'" eval program_start $OPTIONS } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/files/garb.cnf new/galera-4-26.4.12/garb/files/garb.cnf --- old/galera-4-26.4.11/garb/files/garb.cnf 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/files/garb.cnf 2022-04-27 16:01:47.000000000 +0200 @@ -8,9 +8,11 @@ # GALERA_GROUP="" # Optional Galera internal options string (e.g. SSL settings) -# see http://galeracluster.com/documentation-webpages/galeraparameters.html +# see https://galeracluster.com/library/documentation/galera-parameters.html # GALERA_OPTIONS="" # Log file for garbd. Optional, by default logs to syslog # LOG_FILE="" +# Where to persist necessary data +# WORK_DIR="" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/files/garb.sh new/galera-4-26.4.12/garb/files/garb.sh --- old/galera-4-26.4.11/garb/files/garb.sh 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/files/garb.sh 2022-04-27 16:01:47.000000000 +0200 @@ -135,6 +135,7 @@ [ -n "$GALERA_GROUP" ] && OPTIONS="$OPTIONS -g '$GALERA_GROUP'" [ -n "$GALERA_OPTIONS" ] && OPTIONS="$OPTIONS -o '$GALERA_OPTIONS'" [ -n "$LOG_FILE" ] && OPTIONS="$OPTIONS -l '$LOG_FILE'" + [ -n "$WORK_DIR" ] && OPTIONS="$OPTIONS -w '$WORK_DIR'" eval program_start $OPTIONS } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/garb_config.cpp new/galera-4-26.4.12/garb/garb_config.cpp --- old/galera-4-26.4.11/garb/garb_config.cpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/garb_config.cpp 2022-04-27 16:01:47.000000000 +0200 @@ -41,6 +41,7 @@ options_ (), log_ (), cfg_ (), + workdir_ (), exit_ (false) { po::options_description other ("Other options"); @@ -60,6 +61,8 @@ ("donor", po::value<std::string>(&donor_), "SST donor name") ("options,o",po::value<std::string>(&options_), "GCS/GCOMM option list") ("log,l", po::value<std::string>(&log_), "Log file") + ("workdir,w",po::value<std::string>(&workdir_), + "Daemon working directory") ; po::options_description cfg_opt; @@ -136,10 +139,15 @@ strip_quotes(donor_); strip_quotes(options_); strip_quotes(log_); + strip_quotes(workdir_); strip_quotes(cfg_); if (options_.length() > 0) options_ += "; "; - options_ += "gcs.fc_limit=9999999; gcs.fc_factor=1.0; gcs.fc_master_slave=yes"; + options_ += "gcs.fc_limit=9999999; gcs.fc_factor=1.0; gcs.fc_single_primary=yes"; + if (!workdir_.empty()) + { + options_ += " base_dir=" + workdir_ + ";"; + } // this block must be the very last. gu_conf_self_tstamp_on(); @@ -167,6 +175,7 @@ << "\n\tdonor: " << c.donor() << "\n\toptions: " << c.options() << "\n\tcfg: " << c.cfg() + << "\n\tworkdir: " << c.workdir() << "\n\tlog: " << c.log(); return os; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/garb_config.hpp new/galera-4-26.4.12/garb/garb_config.hpp --- old/galera-4-26.4.11/garb/garb_config.hpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/garb_config.hpp 2022-04-27 16:01:47.000000000 +0200 @@ -27,6 +27,7 @@ const std::string& options() const { return options_; } const std::string& cfg() const { return cfg_ ; } const std::string& log() const { return log_ ; } + const std::string& workdir() const { return workdir_; } bool exit() const { return exit_ ; } private: @@ -40,6 +41,7 @@ std::string options_; std::string log_; std::string cfg_; + std::string workdir_; bool exit_; /* Exit on --help or --version */ }; /* class Config */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/garb_main.cpp new/galera-4-26.4.12/garb/garb_main.cpp --- old/galera-4-26.4.11/garb/garb_main.cpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/garb_main.cpp 2022-04-27 16:01:47.000000000 +0200 @@ -15,8 +15,18 @@ { void -become_daemon () +become_daemon (const std::string& workdir) { + if (chdir("/")) // detach from potentially removable block devices + { + gu_throw_error(errno) << "chdir(" << workdir << ") failed"; + } + + if (!workdir.empty() && chdir(workdir.c_str())) + { + gu_throw_error(errno) << "chdir(" << workdir << ") failed"; + } + if (pid_t pid = fork()) { if (pid > 0) // parent @@ -39,11 +49,6 @@ gu_throw_error(errno) << "setsid() failed"; } - if (chdir("/")) // detach from potentially removable block devices - { - gu_throw_error(errno) << "chdir(\"/\") failed"; - } - // umask(0); // A second fork ensures the process cannot acquire a controlling @@ -74,6 +79,13 @@ gu_throw_error(errno) << "Unable to open /dev/null for fd " << fd; } } + + char* wd(static_cast<char*>(::malloc(PATH_MAX))); + if (wd) + { + log_info << "Currend WD: " << getcwd(wd, PATH_MAX); + ::free(wd); + } } int @@ -84,7 +96,7 @@ log_info << "Read config: " << config << std::endl; - if (config.daemon()) become_daemon(); + if (config.daemon()) become_daemon(config.workdir()); try { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/garb/garb_recv_loop.hpp new/galera-4-26.4.12/garb/garb_recv_loop.hpp --- old/galera-4-26.4.11/garb/garb_recv_loop.hpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/garb/garb_recv_loop.hpp 2022-04-27 16:01:47.000000000 +0200 @@ -8,6 +8,7 @@ #include <gu_throw.hpp> #include <gu_asio.hpp> +#include <common.h> // COMMON_BASE_DIR_KEY #include <pthread.h> @@ -38,6 +39,7 @@ { gu_throw_fatal << "Error initializing GCS parameters"; } + cnf.add(COMMON_BASE_DIR_KEY); } } params_; @@ -47,6 +49,7 @@ ParseOptions(gu::Config& cnf, const std::string& opt) { cnf.parse(opt); + gu::ssl_init_options(cnf); } } parse_; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/gcomm/src/view.cpp new/galera-4-26.4.12/gcomm/src/view.cpp --- old/galera-4-26.4.11/gcomm/src/view.cpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/gcomm/src/view.cpp 2022-04-27 16:01:47.000000000 +0200 @@ -320,8 +320,17 @@ bool gcomm::ViewState::read_file() { if (access(file_name_.c_str(), R_OK) != 0) { - log_warn << "access file(" << file_name_ << ") failed(" - << strerror(errno) << ")"; + int const errn(errno); + std::ostringstream msg; + msg << "access file(" << file_name_ << ") failed(" + << strerror(errn) << ")"; + if (ENOENT == errn) { + // absence of a file should be only a notice since it is removed + // on graceful shutdown, so it is an expected situation + log_info << msg.str(); + } else { + log_warn << msg.str(); + } return false; } try { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/gcs/src/gcs.cpp new/galera-4-26.4.12/gcs/src/gcs.cpp --- old/galera-4-26.4.11/gcs/src/gcs.cpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/gcs/src/gcs.cpp 2022-04-27 16:01:47.000000000 +0200 @@ -892,7 +892,7 @@ /* Killing two birds with one stone: flat FC profile for master-slave setups * plus #440: giving single node some slack at some math correctness exp.*/ double const fn - (conn->params.fc_master_slave ? 1.0 : sqrt(double(conn->memb_num))); + (conn->params.fc_single_primary ? 1.0 : sqrt(double(conn->memb_num))); conn->upper_limit = conn->params.fc_base_limit * fn + .5; conn->lower_limit = conn->upper_limit * conn->params.fc_resume_factor + .5; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/gcs/src/gcs_params.cpp new/galera-4-26.4.12/gcs/src/gcs_params.cpp --- old/galera-4-26.4.11/gcs/src/gcs_params.cpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/gcs/src/gcs_params.cpp 2022-04-27 16:01:47.000000000 +0200 @@ -225,13 +225,20 @@ params->recv_q_hard_limit = tmp * gcs_fc_hard_limit_fix; // allow for some meta overhead - deprecation_warning(config, GCS_PARAMS_FC_MASTER_SLAVE, - GCS_PARAMS_FC_SINGLE_PRIMARY); if ((ret = params_init_bool (config, GCS_PARAMS_FC_MASTER_SLAVE, - ¶ms->fc_master_slave))) return ret; - // Overrides deprecated GCS_PARAMS_FC_MASTER_SLAVE if set - if ((ret = params_init_bool (config, GCS_PARAMS_FC_SINGLE_PRIMARY, - ¶ms->fc_master_slave))) return ret; + ¶ms->fc_single_primary))) return ret; + if (params->fc_single_primary) + { + // if GCS_PARAMS_FC_MASTER_SLAVE was used, log deprecation warning + deprecation_warning(config, GCS_PARAMS_FC_MASTER_SLAVE, + GCS_PARAMS_FC_SINGLE_PRIMARY); + } + else + { + // Overrides deprecated GCS_PARAMS_FC_MASTER_SLAVE if set + if ((ret = params_init_bool (config, GCS_PARAMS_FC_SINGLE_PRIMARY, + ¶ms->fc_single_primary))) return ret; + } if ((ret = params_init_bool (config, GCS_PARAMS_SYNC_DONOR, ¶ms->sync_donor))) return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/gcs/src/gcs_params.hpp new/galera-4-26.4.12/gcs/src/gcs_params.hpp --- old/galera-4-26.4.11/gcs/src/gcs_params.hpp 2022-02-09 12:02:02.000000000 +0100 +++ new/galera-4-26.4.12/gcs/src/gcs_params.hpp 2022-04-27 16:01:47.000000000 +0200 @@ -17,7 +17,7 @@ long fc_base_limit; long max_packet_size; long fc_debug; - bool fc_master_slave; + bool fc_single_primary; bool sync_donor; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galera-4-26.4.11/scripts/packages/codership-galera.spec new/galera-4-26.4.12/scripts/packages/codership-galera.spec --- old/galera-4-26.4.11/scripts/packages/codership-galera.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/galera-4-26.4.12/scripts/packages/codership-galera.spec 2022-04-27 16:01:51.000000000 +0200 @@ -0,0 +1,375 @@ +# Copyright (c) 2011-2020, Codership Oy <i...@codership.com>. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License or later. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston +# MA 02110-1301 USA. + +# If without_crypto == 1, the library will be built without +# SSL/TLS support. +%{!?without_crypto: %global without_crypto 0} + +%define name galera-4 +%define wsrep_api 26 +%{!?version: %define version 26.4.12} +%{!?release: %define release 1} +%define copyright Copyright 2007-2020 Codership Oy. All rights reserved. Use is subject to license terms under GPLv2 license. +%define libs %{_libdir}/%{name} +%define docs /usr/share/doc/%{name} + +# Avoid debuginfo RPMs, leaves binaries unstripped + +%global _enable_debug_package 0 +%global debug_package %{nil} +%global __os_install_post /usr/lib/rpm/brp-compress %{nil} +%define ssl_package_devel openssl-devel +# Define dist tag if not given by platform + +# For suse versions see: +# https://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto +%if 0%{?suse_version} == 1110 +%define dist .sle11 +%endif +%if 0%{?suse_version} == 1310 +%define dist .suse13.1 +%endif +%if 0%{?suse_version} == 1315 +%define dist .sle12 +%endif +%if 0%{?suse_version} == 1320 +%define dist .suse13.2 +%endif +%if 0%{?sle_version} == 150000 && 0%{?is_opensuse} +%define dist .lp151 +%define ssl_package_devel libopenssl-devel +%endif +%if 0%{?sle_version} == 120500 && !0%{?is_opensuse} +%define dist .sl12 +%endif +%if 0%{?sle_version} == 150000 && !0%{?is_opensuse} +%define dist .sl15 +%define ssl_package_devel libopenssl-devel +%endif +%if 0%{?sle_version} == 150100 && !0%{?is_opensuse} +%define dist .sl15_1 +%define ssl_package_devel libopenssl-devel +%endif +%if 0%{?sle_version} == 150200 && !0%{?is_opensuse} +%define dist .sl15_2 +%define ssl_package_devel libopenssl-devel +%endif + + + + +Name: %{name} +Summary: Galera: a synchronous multi-master wsrep provider (replication engine) +Group: System Environment/Libraries +Version: %{version} +Release: %{release}%{dist} +License: GPL-2.0 +Source: %{name}-%{version}.tar.gz +URL: http://www.codership.com/ +Packager: Codership Oy +Vendor: Codership Oy + +BuildRoot: %{_tmppath}/%{name}_%{version}-build + +BuildRequires: boost-devel >= 1.41 +BuildRequires: check-devel +BuildRequires: glibc-devel +BuildRequires: %{ssl_package_devel} +BuildRequires: cmake + +%if 0%{?suse_version} == 1110 +# On SLES11 SPx use the linked gcc47 to build instead of default gcc43 +BuildRequires: gcc47 gcc47-c++ +# On SLES11 SP2 the libgfortran.3.so provider must be explicitly defined +BuildRequires: libgfortran3 +# On SLES11 we got error "conflict for provider of libgcc_s1 >= 4.7.4_20140612-2.1 +# needed by gcc47, (provider libgcc_s1 conflicts with installed libgcc43), +# conflict for provider of libgomp1 >= 4.7.4_20140612-2.1 needed by gcc47, +# (provider libgomp1 conflicts with installed libgomp43), conflict for provider +# of libstdc++6 >= 4.7.4_20140612-2.1 needed by libstdc++47-devel, +# (provider libstdc++6 conflicts with installed libstdc++43) +# therefore: +BuildRequires: libgcc_s1 +BuildRequires: libgomp1 +BuildRequires: libstdc++6 +#!BuildIgnore: libgcc43 +%else +BuildRequires: gcc-c++ +%endif + +%if %{defined fedora} +BuildRequires: python +%endif + +# Systemd +%if 0%{?suse_version} >= 1220 || 0%{?centos} >= 7 || 0%{?rhel} >= 7 +%define systemd 1 +BuildRequires: systemd +%else +%define systemd 0 +%endif + +%if 0%{?systemd} +%{?systemd_requires} +%if 0%{?suse_version} +BuildRequires: systemd-rpm-macros +# RedHat seems not to need this (or an equivalent). +%endif + +%else +# NOT systemd + +%if 0%{?suse_version} +PreReq: %insserv_prereq %fillup_prereq +%else +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +%endif +%endif # systemd + +Requires: openssl + +Provides: wsrep, %{name} = %{version}-%{release} +Provides: galera, galera4, Percona-XtraDB-Cluster-galera-%{wsrep_api} + +%description +Galera is a fast synchronous multimaster wsrep provider (replication engine) +for transactional databases and similar applications. For more information +about wsrep API see https://github.com/codership/wsrep-API. For a description +of Galera replication engine see https://www.galeracluster.com. + +%{copyright} + +This software comes with ABSOLUTELY NO WARRANTY. This is free software, +and you are welcome to modify and redistribute it under the GPLv2 license. + +%prep +%setup -q -n %{name}-%{version} +# When downloading from GitHub the contents is in a folder +# that is named by the branch it was exported from. + +%build +# Debug info: +echo "suse_version: %{suse_version}" +# 1110 = SLE-11 SPx +%if 0%{?suse_version} == 1110 +export CC=gcc-4.7 +export CXX=g++-4.7 +%endif +%if 0%{?suse_version} == 1120 +export CC=gcc-4.6 +export CXX=g++-4.6 +%endif +%if 0%{?suse_version} == 1130 +export CC=gcc-4.7 +export CXX=g++-4.7 +%endif + +NUM_JOBS=${NUM_JOBS:-$(ncpu=$(cat /proc/cpuinfo | grep processor | wc -l) && echo $(($ncpu > 4 ? 4 : $ncpu)))} + +%if 0%{?without_crypto} +%define crypto_opt -DGALERA_WITH_SSL:BOOL=OFF +%endif + +cmake -DCMAKE_BUILD_TYPE=Release %{?crypto_opt} . +make -j$(echo $NUM_JOBS) VERBOSE=1 +make test ARGS=-V + +%install +RBR=$RPM_BUILD_ROOT # eg. rpmbuild/BUILDROOT/galera-3-3.x-33.1.x86_64 +RBD=$RPM_BUILD_DIR/%{name}-%{version} +# When downloading from GitHub the contents is in a folder +# that is named by the branch it was exported from. + +# Clean up the BuildRoot first +[ "$RBR" != "/" ] && [ -d $RBR ] && rm -rf $RBR; +mkdir -p $RBR + +%if 0%{?systemd} +install -D -m 644 $RBD/garb/files/garb.service $RBR%{_unitdir}/garb.service +install -D -m 755 $RBD/garb/files/garb-systemd $RBR%{_bindir}/garb-systemd +%else +install -d $RBR%{_sysconfdir}/init.d +install -m 755 $RBD/garb/files/garb.sh $RBR%{_sysconfdir}/init.d/garb +%endif + +# Symlink required by SUSE policy for SysV init, still supported with systemd +%if 0%{?suse_version} +%if 0%{?systemd} +install -d %{buildroot}%{_sbindir} +ln -sf /usr/sbin/service %{buildroot}%{_sbindir}/rcgarb +%else +install -d $RBR/usr/sbin +ln -sf /etc/init.d/garb $RBR/usr/sbin/rcgarb +%endif # systemd +%endif # suse_version + +%if 0%{?suse_version} +install -d $RBR/var/adm/fillup-templates/ +install -m 644 $RBD/garb/files/garb.cnf $RBR/var/adm/fillup-templates/sysconfig.garb +%else +install -d $RBR%{_sysconfdir}/sysconfig +install -m 644 $RBD/garb/files/garb.cnf $RBR%{_sysconfdir}/sysconfig/garb +%endif # suse_version + +install -d $RBR%{_bindir} +install -m 755 $RBD/garb/garbd $RBR%{_bindir}/garbd + +install -d $RBR%{libs} +install -m 755 $RBD/libgalera_smm.so $RBR%{libs}/libgalera_smm.so + +install -d $RBR%{docs} +install -m 644 $RBD/COPYING $RBR%{docs}/COPYING +install -m 644 $RBD/asio/LICENSE_1_0.txt $RBR%{docs}/LICENSE.asio +install -m 644 $RBD/scripts/packages/README $RBR%{docs}/README +install -m 644 $RBD/scripts/packages/README-MySQL $RBR%{docs}/README-MySQL + +install -d $RBR%{_mandir}/man8 +install -m 644 $RBD/man/garbd.8 $RBR%{_mandir}/man8/garbd.8 + + +%if 0%{?systemd} + +%if 0%{?suse_version} + +%post +%service_add_post garb + +%preun +%service_del_preun garb + +%else +# Not SuSE - so it must be RedHat, CentOS, Fedora + +%post +%systemd_post garb.service + +%preun +%systemd_preun garb.service + +%postun +%systemd_postun_with_restart garb.service + +%endif +# SuSE versus Fedora/RedHat/CentOS + +%else +# NOT systemd + +%if 0%{?suse_version} +# For the various macros and their parameters, see here: +# https://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros + +%post +%fillup_and_insserv garb + +%preun +%stop_on_removal garb +rm -f $(find %{libs} -type l) + +%postun +%restart_on_update garb +%insserv_cleanup + +%else +# Not SuSE - so it must be RedHat, CentOS, Fedora + +%post +/sbin/chkconfig --add garb + +%preun +if [ "$1" = "0" ] +then + /sbin/service garb stop + /sbin/chkconfig --del garb +fi + +%postun +# >=1 packages after uninstall -> pkg was updated -> restart +if [ "$1" -ge "1" ] +then + /sbin/service garb restart +fi + +%endif +# SuSE versus Fedora/RedHat/CentOS + +%endif +# systemd ? + + +%files +%defattr(-,root,root,0755) +%if 0%{?suse_version} +%config(noreplace,missingok) /var/adm/fillup-templates/sysconfig.garb +%else +%config(noreplace,missingok) %{_sysconfdir}/sysconfig/garb +%endif + + +%if 0%{?systemd} +%attr(0644,root,root) %{_unitdir}/garb.service +%attr(0755,root,root) %{_bindir}/garb-systemd +%else +%attr(0755,root,root) %{_sysconfdir}/init.d/garb +%endif + +# Symlink required by SUSE policy for SysV init, still supported with systemd +%if 0%{?suse_version} +%attr(0755,root,root) /usr/sbin/rcgarb +%endif + +%attr(0755,root,root) %{_bindir}/garbd + +%attr(0755,root,root) %dir %{libs} +%attr(0755,root,root) %{libs}/libgalera_smm.so + +%attr(0755,root,root) %dir %{docs} +%doc %attr(0644,root,root) %{docs}/COPYING +%doc %attr(0644,root,root) %{docs}/LICENSE.asio +%doc %attr(0644,root,root) %{docs}/README +%doc %attr(0644,root,root) %{docs}/README-MySQL + +%doc %attr(644, root, man) %{_mandir}/man8/garbd.8* + +%clean +[ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT; + +%changelog +* Mon Nov 9 2020 Teemu Ollakka <teemu.olla...@galeracluster.com> +- Changed build system to CMake. +- Name and version are generated by CMake. + +* Fri Feb 27 2015 Joerg Bruehe <joerg.bru...@fromdual.com> +- Service name is "garb", reflect that in the config file (SuSE only, galera#235, Release 2) + +* Fri Feb 20 2015 Joerg Bruehe <joerg.bru...@fromdual.com> +- Update copyright year. +- Make the man page file name consistent with its section. + +* Wed Feb 11 2015 Joerg Bruehe <joerg.bru...@fromdual.com> +- Add missing "prereq" directive and arguments for the various service control macros. +- Handle the difference between SuSE and Fedora/RedHat/CentOS. +- Fix systemd stuff, using info from these pages: + https://en.opensuse.org/openSUSE:Systemd_packaging_guidelines + http://fedoraproject.org/wiki/Packaging:Systemd + http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Systemd + +* Tue Sep 30 2014 Otto Kek??l??inen <o...@seravo.fi> - 3.x +- Initial OBS packaging created +