Hello community, here is the log from the commit of package icinga2 for openSUSE:Factory checked in at 2018-07-31 15:59:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/icinga2 (Old) and /work/SRC/openSUSE:Factory/.icinga2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "icinga2" Tue Jul 31 15:59:05 2018 rev:10 rq:625982 version:2.9.1 Changes: -------- --- /work/SRC/openSUSE:Factory/icinga2/icinga2.changes 2018-07-28 12:40:05.548390030 +0200 +++ /work/SRC/openSUSE:Factory/.icinga2.new/icinga2.changes 2018-07-31 15:59:11.135524661 +0200 @@ -1,0 +2,23 @@ +Sat Jul 28 22:12:45 UTC 2018 - [email protected] + +- update to 2.9.1 + * Bug + - #6457 (PR): Ensure that timer thread is initialized after Daemonize() + - #6449: icinga r2.9.0-1 init.d script overrides PATH variable + - #6445: Problem with daemonize (init scripts, -d) on Debian 8 / CentOS 6 / Ubuntu 14 / SLES 11 in 2.9 + - #6444 (PR): SELinux: allow systemd notify + - #6443: selinux and 2.9 + * Support + - #6470 (code-quality, PR): Fix spelling errors. + - #6467 (Tests, PR): Start and stop the timer thread lazily + - #6461 (Tests): Broken tests with fix from #6457 + - #6451 (Packages, PR): Fix initscripts + - #6450 (Packages): init script helpers - source: not found + +------------------------------------------------------------------- +Sat Jul 28 14:09:14 UTC 2018 - [email protected] + +- Fixed the "No valid ELF RPATH or RUNPATH entry exists in the file" + error. (boo#1102980) + +------------------------------------------------------------------- Old: ---- v2.9.0.tar.gz New: ---- v2.9.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ icinga2.spec ++++++ --- /var/tmp/diff_new_pack.pXIGRr/_old 2018-07-31 15:59:13.203528169 +0200 +++ /var/tmp/diff_new_pack.pXIGRr/_new 2018-07-31 15:59:13.203528169 +0200 @@ -83,7 +83,7 @@ License: GPL-2.0-or-later Group: System/Monitoring Name: icinga2 -Version: 2.9.0 +Version: 2.9.1 Release: %{revision}%{?dist} Url: https://www.icinga.com/ Source: https://github.com/Icinga/%{name}/archive/v%{version}.tar.gz @@ -302,6 +302,7 @@ -DCMAKE_INSTALL_LOCALSTATEDIR=/var \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DICINGA2_LTO_BUILD=ON \ + -DCMAKE_NO_BUILTIN_CHRPATH=ON \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DBoost_NO_BOOST_CMAKE=ON \ -DICINGA2_PLUGINDIR=%{plugindir} \ ++++++ v2.9.0.tar.gz -> v2.9.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/AUTHORS new/icinga2-2.9.1/AUTHORS --- old/icinga2-2.9.0/AUTHORS 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/AUTHORS 2018-07-24 12:48:12.000000000 +0200 @@ -11,6 +11,7 @@ Andy Grunwald <[email protected]> Arnd Hannemann <[email protected]> Assaf Flatto <[email protected]> +Bas Couwenberg <[email protected]> Bastian Guse <[email protected]> Benedikt Heine <[email protected]> Bernd Erk <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/CHANGELOG.md new/icinga2-2.9.1/CHANGELOG.md --- old/icinga2-2.9.0/CHANGELOG.md 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/CHANGELOG.md 2018-07-24 12:48:12.000000000 +0200 @@ -1,5 +1,23 @@ # Icinga 2.x CHANGELOG +## 2.9.1 (2018-07-24) + +### Bug + +* [#6457](https://github.com/icinga/icinga2/issues/6457) (PR): Ensure that timer thread is initialized after Daemonize\(\) +* [#6449](https://github.com/icinga/icinga2/issues/6449): icinga r2.9.0-1 init.d script overrides PATH variable +* [#6445](https://github.com/icinga/icinga2/issues/6445): Problem with daemonize \(init scripts, -d\) on Debian 8 / CentOS 6 / Ubuntu 14 / SLES 11 in 2.9 +* [#6444](https://github.com/icinga/icinga2/issues/6444) (PR): SELinux: allow systemd notify +* [#6443](https://github.com/icinga/icinga2/issues/6443): selinux and 2.9 + +### Support + +* [#6470](https://github.com/icinga/icinga2/issues/6470) (code-quality, PR): Fix spelling errors. +* [#6467](https://github.com/icinga/icinga2/issues/6467) (Tests, PR): Start and stop the timer thread lazily +* [#6461](https://github.com/icinga/icinga2/issues/6461) (Tests): Broken tests with fix from \#6457 +* [#6451](https://github.com/icinga/icinga2/issues/6451) (Packages, PR): Fix initscripts +* [#6450](https://github.com/icinga/icinga2/issues/6450) (Packages): init script helpers - source: not found + ## 2.9.0 (2018-07-17) ### Notes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/VERSION new/icinga2-2.9.1/VERSION --- old/icinga2-2.9.0/VERSION 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/VERSION 2018-07-24 12:48:12.000000000 +0200 @@ -1,2 +1,2 @@ -Version: 2.9.0 +Version: 2.9.1 Revision: 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/etc/initsystem/icinga2.init.d.cmake new/icinga2-2.9.1/etc/initsystem/icinga2.init.d.cmake --- old/icinga2-2.9.0/etc/initsystem/icinga2.init.d.cmake 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/etc/initsystem/icinga2.init.d.cmake 2018-07-24 12:48:12.000000000 +0200 @@ -15,6 +15,13 @@ # Description: Icinga 2 is a monitoring and management system for hosts, services and networks. ### END INIT INFO +# Get function from functions library +if [ -f /etc/rc.d/init.d/functions ]; then + . /etc/rc.d/init.d/functions +elif [ -f /etc/init.d/functions ]; then + . /etc/init.d/functions +fi + # load system specific defines SYSCONFIGFILE=@ICINGA2_SYSCONFIGFILE@ if [ -f $SYSCONFIGFILE ]; then @@ -50,13 +57,6 @@ getent group $ICINGA2_GROUP >/dev/null 2>&1 || (echo "Icinga group '$ICINGA2_GROUP' does not exist. Exiting." && exit 6) getent group $ICINGA2_COMMAND_GROUP >/dev/null 2>&1 || (echo "Icinga command group '$ICINGA2_COMMAND_GROUP' does not exist. Exiting." && exit 6) -# Get function from functions library -if [ -f /etc/rc.d/init.d/functions ]; then - . /etc/rc.d/init.d/functions -elif [ -f /etc/init.d/functions ]; then - . /etc/init.d/functions -fi - # Start Icinga 2 start() { printf "Starting Icinga 2: " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/etc/initsystem/prepare-dirs.cmake new/icinga2-2.9.1/etc/initsystem/prepare-dirs.cmake --- old/icinga2-2.9.0/etc/initsystem/prepare-dirs.cmake 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/etc/initsystem/prepare-dirs.cmake 2018-07-24 12:48:12.000000000 +0200 @@ -6,7 +6,7 @@ # Load sysconf on systems where the initsystem does not pass the environment if [ "$1" != "" ]; then if [ -r "$1" ]; then - source "$1" + . "$1" else echo "Unable to read sysconf from '$1'. Exiting." && exit 6 fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/etc/initsystem/safe-reload.cmake new/icinga2-2.9.1/etc/initsystem/safe-reload.cmake --- old/icinga2-2.9.0/etc/initsystem/safe-reload.cmake 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/etc/initsystem/safe-reload.cmake 2018-07-24 12:48:12.000000000 +0200 @@ -3,7 +3,7 @@ # Load sysconf on systems where the initsystem does not pass the environment if [ "$1" != "" ]; then if [ -r "$1" ]; then - source "$1" + . "$1" else echo "Unable to read sysconf from '$1'. Exiting." && exit 6 fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/base/application.cpp new/icinga2-2.9.1/lib/base/application.cpp --- old/icinga2-2.9.0/lib/base/application.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/base/application.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -138,8 +138,11 @@ Loader::ExecuteDeferredInitializers(); - /* make sure the thread pool gets initialized */ + /* Make sure the thread pool gets initialized. */ GetTP().Start(); + + /* Make sure the timer thread gets initialized. */ + Timer::Initialize(); } void Application::UninitializeBase() @@ -300,7 +303,6 @@ */ void Application::RunEventLoop() { - #ifdef HAVE_SYSTEMD sd_notify(0, "READY=1"); #endif /* HAVE_SYSTEMD */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/base/socket.cpp new/icinga2-2.9.1/lib/base/socket.cpp --- old/icinga2-2.9.0/lib/base/socket.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/base/socket.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -94,7 +94,7 @@ } /** - * Retrieves the last error that occured for the socket. + * Retrieves the last error that occurred for the socket. * * @returns An error code. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/base/timer.cpp new/icinga2-2.9.1/lib/base/timer.cpp --- old/icinga2-2.9.0/lib/base/timer.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/base/timer.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -19,6 +19,7 @@ #include "base/timer.hpp" #include "base/debug.hpp" +#include "base/logger.hpp" #include "base/utility.hpp" #include <boost/thread/mutex.hpp> #include <boost/thread/condition_variable.hpp> @@ -71,7 +72,7 @@ static std::thread l_TimerThread; static bool l_StopTimerThread; static TimerSet l_Timers; -static int l_AliveTimers; +static int l_AliveTimers = 0; /** * Destructor for the Timer class. @@ -81,16 +82,43 @@ Stop(true); } +void Timer::Initialize() +{ + boost::mutex::scoped_lock lock(l_TimerMutex); + + if (l_AliveTimers > 0) { + InitializeThread(); + } +} + void Timer::Uninitialize() { + boost::mutex::scoped_lock lock(l_TimerMutex); + + if (l_AliveTimers > 0) { + UninitializeThread(); + } +} + +void Timer::InitializeThread() +{ + l_StopTimerThread = false; + l_TimerThread = std::thread(&Timer::TimerThreadProc); +} + +void Timer::UninitializeThread() +{ { - boost::mutex::scoped_lock lock(l_TimerMutex); l_StopTimerThread = true; l_TimerCV.notify_all(); } + l_TimerMutex.unlock(); + if (l_TimerThread.joinable()) l_TimerThread.join(); + + l_TimerMutex.lock(); } /** @@ -140,9 +168,8 @@ boost::mutex::scoped_lock lock(l_TimerMutex); m_Started = true; - if (l_AliveTimers++ == 0) { - l_StopTimerThread = false; - l_TimerThread = std::thread(&Timer::TimerThreadProc); + if (++l_AliveTimers == 1) { + InitializeThread(); } } @@ -160,15 +187,7 @@ boost::mutex::scoped_lock lock(l_TimerMutex); if (m_Started && --l_AliveTimers == 0) { - l_StopTimerThread = true; - l_TimerCV.notify_all(); - - lock.unlock(); - - if (l_TimerThread.joinable() && l_TimerThread.get_id() != std::this_thread::get_id()) - l_TimerThread.join(); - - lock.lock(); + UninitializeThread(); } m_Started = false; @@ -270,6 +289,8 @@ */ void Timer::TimerThreadProc() { + Log(LogDebug, "Timer", "TimerThreadProc started."); + Utility::SetThreadName("Timer Thread"); for (;;) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/base/timer.hpp new/icinga2-2.9.1/lib/base/timer.hpp --- old/icinga2-2.9.0/lib/base/timer.hpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/base/timer.hpp 2018-07-24 12:48:12.000000000 +0200 @@ -40,7 +40,10 @@ ~Timer() override; + static void Initialize(); static void Uninitialize(); + static void InitializeThread(); + static void UninitializeThread(); void SetInterval(double interval); double GetInterval() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/checker/checkercomponent.cpp new/icinga2-2.9.1/lib/checker/checkercomponent.cpp --- old/icinga2-2.9.0/lib/checker/checkercomponent.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/checker/checkercomponent.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -221,7 +221,7 @@ CheckResult::Ptr cr = new CheckResult(); cr->SetState(ServiceUnknown); - String output = "Exception occured while checking '" + checkable->GetName() + "': " + DiagnosticInformation(ex); + String output = "Exception occurred while checking '" + checkable->GetName() + "': " + DiagnosticInformation(ex); cr->SetOutput(output); double now = Utility::GetTime(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/cli/daemoncommand.cpp new/icinga2-2.9.1/lib/cli/daemoncommand.cpp --- old/icinga2-2.9.0/lib/cli/daemoncommand.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/cli/daemoncommand.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -88,6 +88,9 @@ _exit(EXIT_SUCCESS); } + Log(LogDebug, "Daemonize()") + << "Child process with PID " << Utility::GetPid() << " continues; re-initializing base."; + Application::InitializeBase(); #endif /* _WIN32 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/cli/nodesetupcommand.cpp new/icinga2-2.9.1/lib/cli/nodesetupcommand.cpp --- old/icinga2-2.9.0/lib/cli/nodesetupcommand.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/cli/nodesetupcommand.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -262,7 +262,7 @@ NodeUtility::UpdateConfiguration("\"conf.d/api-users.conf\"", true, false); } else { Log(LogWarning, "cli") - << "Included file dosen't exist " << apiUsersFilePath; + << "Included file doesn't exist " << apiUsersFilePath; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/icinga/checkable-check.cpp new/icinga2-2.9.1/lib/icinga/checkable-check.cpp --- old/icinga2-2.9.0/lib/icinga/checkable-check.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/icinga/checkable-check.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -293,7 +293,7 @@ bool send_notification = false; if (notification_reachable && !in_downtime && !IsAcknowledged()) { - /* Send notifications whether when a hard state change occured. */ + /* Send notifications whether when a hard state change occurred. */ if (hardChange && !(old_stateType == StateTypeSoft && IsStateOK(new_state))) send_notification = true; /* Or if the checkable is volatile and in a HARD state. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/icinga/checkable-notification.cpp new/icinga2-2.9.1/lib/icinga/checkable-notification.cpp --- old/icinga2-2.9.0/lib/icinga/checkable-notification.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/icinga/checkable-notification.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -76,7 +76,7 @@ notification->BeginExecuteNotification(type, cr, force, false, author, text); } catch (const std::exception& ex) { Log(LogWarning, "Checkable") - << "Exception occured during notification for service '" + << "Exception occurred during notification for service '" << GetName() << "': " << DiagnosticInformation(ex); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/icinga/clusterevents-check.cpp new/icinga2-2.9.1/lib/icinga/clusterevents-check.cpp --- old/icinga2-2.9.0/lib/icinga/clusterevents-check.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/icinga/clusterevents-check.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -179,7 +179,7 @@ CheckResult::Ptr cr = new CheckResult(); cr->SetState(ServiceUnknown); - String output = "Exception occured while checking '" + host->GetName() + "': " + DiagnosticInformation(ex); + String output = "Exception occurred while checking '" + host->GetName() + "': " + DiagnosticInformation(ex); cr->SetOutput(output); double now = Utility::GetTime(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/icinga/notification.cpp new/icinga2-2.9.1/lib/icinga/notification.cpp --- old/icinga2-2.9.0/lib/icinga/notification.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/icinga/notification.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -524,7 +524,7 @@ << "' and user '" << user->GetName() << "'."; } catch (const std::exception& ex) { Log(LogWarning, "Notification") - << "Exception occured during notification for checkable '" + << "Exception occurred during notification for checkable '" << GetCheckable()->GetName() << "': " << DiagnosticInformation(ex); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/lib/notification/notificationcomponent.cpp new/icinga2-2.9.1/lib/notification/notificationcomponent.cpp --- old/icinga2-2.9.0/lib/notification/notificationcomponent.cpp 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/lib/notification/notificationcomponent.cpp 2018-07-24 12:48:12.000000000 +0200 @@ -130,7 +130,7 @@ notification->BeginExecuteNotification(NotificationProblem, checkable->GetLastCheckResult(), false, true); } catch (const std::exception& ex) { Log(LogWarning, "NotificationComponent") - << "Exception occured during notification for object '" + << "Exception occurred during notification for object '" << GetName() << "': " << DiagnosticInformation(ex); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/third-party/yajl/src/api/yajl_parse.h new/icinga2-2.9.1/third-party/yajl/src/api/yajl_parse.h --- old/icinga2-2.9.0/third-party/yajl/src/api/yajl_parse.h 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/third-party/yajl/src/api/yajl_parse.h 2018-07-24 12:48:12.000000000 +0200 @@ -35,7 +35,7 @@ yajl_status_ok, /** a client callback returned zero, stopping the parse */ yajl_status_client_canceled, - /** An error occured during the parse. Call yajl_get_error for + /** An error occurred during the parse. Call yajl_get_error for * more information about the encountered error */ yajl_status_error } yajl_status; @@ -192,7 +192,7 @@ * parse. * * If verbose is non-zero, the message will include the JSON - * text where the error occured, along with an arrow pointing to + * text where the error occurred, along with an arrow pointing to * the specific char. * * \returns A dynamically allocated string will be returned which should @@ -211,7 +211,7 @@ * * In the event an error is encountered during parsing, this function * affords the client a way to get the offset into the most recent - * chunk where the error occured. 0 will be returned if no error + * chunk where the error occurred. 0 will be returned if no error * was encountered. */ YAJL_API size_t yajl_get_bytes_consumed(yajl_handle hand); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icinga2-2.9.0/tools/selinux/icinga2.te new/icinga2-2.9.1/tools/selinux/icinga2.te --- old/icinga2-2.9.0/tools/selinux/icinga2.te 2018-07-17 14:27:32.000000000 +0200 +++ new/icinga2-2.9.1/tools/selinux/icinga2.te 2018-07-24 12:48:12.000000000 +0200 @@ -1,4 +1,4 @@ -policy_module(icinga2, 0.1.6) +policy_module(icinga2, 0.1.7) ######################################## # @@ -122,6 +122,7 @@ kernel_read_system_state(icinga2_t) kernel_read_network_state(icinga2_t) +kernel_dgram_send(icinga2_t) # should be moved to nagios_plugin_template in nagios.if icinga2_execstrans(nagios_admin_plugin_exec_t, nagios_admin_plugin_t)
