Commit Graph

13465 Commits

Author SHA1 Message Date
Julian Brost e9fa037983
Merge pull request #9754 from Icinga/cmake3
GHA: use a CMake version which can set(CMAKE_CXX_STANDARD 17) where possible
2023-05-08 18:52:42 +02:00
Julian Brost b4ce16c488
Merge pull request #9748 from Icinga/Al2Klimov-patch-6
GHA: Drop openSUSE 15.3 (EOL)
2023-05-08 14:20:55 +02:00
Julian Brost eca8890d49
Merge pull request #9718 from Icinga/acknowledgement-sync-between-masters-are-not-working-9652
Checkable#ProcessCheckResult(): only clean up ack comments older than check result
2023-05-05 15:29:38 +02:00
Alexander A. Klimov 59d07ec03c GHA: use a CMake version which can set(CMAKE_CXX_STANDARD 17) where possible
especially on Amazon Linux which seems to have trouble with our workaround:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
2023-05-02 15:40:32 +02:00
Julian Brost af9d67b262
Merge pull request #9726 from Icinga/43624b
Remove -and notify- expired downtimes immediately, not every 60s II
2023-05-02 11:25:03 +02:00
Julian Brost b724d61330
Merge pull request #9683 from Icinga/third-party/utf8cpp
Update vendored github.com/nemtrif/utfcpp to v3.2.3
2023-04-28 17:31:09 +02:00
Alexander A. Klimov 58b788cd51 Downtime#Start(): trigger flexible downtimes not earlier than fixed ones
the last state change could be a long time ago. If it's longer than
the new downtime's duration, the downtime expires immediately.

trigger time + duration < now
2023-04-18 16:55:32 +02:00
Alexander Aleksandrovič Klimov 4b3a845e50
GHA: Drop openSUSE 15.3 (EOL) 2023-04-18 15:35:46 +02:00
Julian Brost a15ce7fc70
Merge pull request #9741 from Icinga/docs-monitoring-basics-make-event-commands-not-a-subsection-of-dependencies
Docs: Monitoring Basics: make Event Commands not a subsection of Dependencies
2023-04-17 17:51:49 +02:00
Alexander A. Klimov 5638b3b234 Docs: Monitoring Basics: make Event Commands not a subsection of Dependencies 2023-04-17 13:43:19 +02:00
Julian Brost 8238ec0d96
Merge pull request #9725 from Icinga/operation_aborted-shutDownIfNeeded.Cancel
ApiListener#NewClientHandlerInternal(): on basic_socket#cancel() (due to timeout) don't ssl::stream#async_shutdown()
2023-04-17 12:21:21 +02:00
Alexander A. Klimov 0ac1cd1ecb Rename Downtime::DowntimesExpireTimerHandler()
to actually reflect its purpose.
2023-04-14 14:52:05 +02:00
Alexander A. Klimov 6adf2d19e4 Remove -and notify- expired downtimes immediately, not every 60s
Don't look for expired downtimes in a timer fired every 60s,
but fire one timer per downtime once at expire time.
2023-04-14 14:52:05 +02:00
Alexander A. Klimov ba7102cae3 Explicitly stop started timers and wait for them
before permitting their parent objects' destruction.
For the cases where the handlers have raw pointers to these objects.
2023-04-14 14:52:04 +02:00
Julian Brost 8228fae740
Merge pull request #8627 from WuerthPhoenix/bug/agent-cannot-update-executions-8616
Fix update execution message discarded. refs #8616
2023-04-13 19:29:49 +02:00
Julian Brost f505325ff9
Merge pull request #9445 from Icinga/9365
Disallow config modifications via API during reload
2023-04-13 17:11:58 +02:00
Mattia Codato c5c17928a6 Allow to exec command on endpoint where the checkable is not present but checkable has command_endpoint specified 2023-04-13 14:44:07 +02:00
Alexander A. Klimov 2ee776b5ab Disallow config modifications via API during reload
Once the new main process has read the config,
it misses subsequent modifications from the old process otherwise.
2023-04-12 14:45:40 +02:00
Alexander A. Klimov 64e000df56 Introduce ConfigObjects*Lock 2023-04-12 13:36:48 +02:00
Julian Brost 857e6e4e64
Merge pull request #9742 from Icinga/icingadb-notifications-have-wrong-icingaweb2-url-9350
etc/icinga2/scripts/mail-*-notification.sh: render Icinga DB Web URLs
2023-04-06 16:24:48 +02:00
Alexander A. Klimov d88bbcbcef etc/icinga2/scripts/mail-*-notification.sh: render Icinga DB Web URLs
not monitoring module ones. This takes effect for new installations only.
2023-04-06 12:19:31 +02:00
Julian Brost 50018c1d2b
Merge pull request #8218 from efuss/redundancy_group
Introduce redundancy groups for Dependency Objects
2023-04-05 18:49:58 +02:00
Alexander A. Klimov bcd16cbfb0 Rewrite Dependency redundancy groups docs 2023-04-05 14:46:35 +02:00
Alexander A. Klimov a66ace7245 Introduce SharedMemory 2023-04-04 13:40:27 +02:00
Alexander A. Klimov c41e5fd05d Support multiple redundant Timer#Start() calls
so that only the first one changes l_AliveTimers (as in Timer#Stop()).
2023-04-04 10:35:22 +02:00
Alexander A. Klimov 298f3b1973 Timer: actually support non-periodic timers 2023-04-04 10:35:22 +02:00
Alexander A. Klimov 3933502739 Timer#Start(): don't unnecessarily unlock/lock l_TimerMutex
via new Timer#InternalRescheduleUnlocked()
2023-04-04 10:35:22 +02:00
Alexander A. Klimov 13b9cfda41 Timer::TimerThreadProc(): don't unnecessarily unlock and lock l_TimerMutex 2023-04-04 10:35:22 +02:00
Alexander A. Klimov 1badbab002 Timer::TimerThreadProc(): keep a Timer alive while it's running
to prevent the case: Timer callback destroys parent object -> destroys
Timer -> ~Timer() -> Stop(true) -> waits for the Timer callback to finish
-> deadlock.
2023-04-04 10:35:22 +02:00
Alexander A. Klimov 9b00c1c4dd Timer: drop unnecessary base class 2023-04-04 10:35:22 +02:00
Alexander A. Klimov 24681b30f6 Make Timer::Ptr a std::shared_ptr 2023-04-04 10:35:22 +02:00
Alexander A. Klimov 9ee4d08722 Make Timer#Timer() private to enforce Timer::Create() usage 2023-04-04 10:35:22 +02:00
Alexander A. Klimov 21b68455ce Use Timer::Create() instead of new Timer()
git ls-files -z |xargs -0 perl -pi -e 's/\bnew Timer\b/Timer::Create/g'

ex. in Timer::Create() itself.
2023-04-04 10:35:20 +02:00
Alexander A. Klimov bb1f574b69 Introduce factory method Timer::Create() 2023-04-04 10:35:10 +02:00
Julian Brost f3b148517f
Merge pull request #9714 from Icinga/CheckResultReader
Remove CheckResultReader which has been deprecated for 5 major versions
2023-04-03 16:31:19 +02:00
Alexander A. Klimov 35248b1b63 Code style 2023-04-03 13:39:08 +02:00
Alexander A. Klimov cc872dac1f Remove CheckResultReader which has been deprecated for 5 major versions 2023-04-03 11:39:21 +02:00
Julian Brost 41065e30c8
Merge pull request #9485 from Icinga/cxx17
Require GCC 7+ for C++17
2023-03-31 14:06:55 +02:00
Julian Brost 7a7902cea7
Merge pull request #9715 from Icinga/StatusDataWriter
Remove StatusDataWriter which has been deprecated for 5 major versions
2023-03-31 12:32:43 +02:00
Julian Brost 82f9e4312d
Merge pull request #9740 from Icinga/freeze-globals
Freeze globals namespace during config load
2023-03-31 10:51:26 +02:00
Julian Brost e87e1ea73f Freeze globals namespace during config load
This allows for a faster config load due to less locking required.

The change is slightly backwards-incompatible. Before, you could manipulate the
globals namespace at a later stage, but disallowing this feels reasonable for
the performance benefit alone (which especially shows on many-core machines).
Apart from that, it's doubtful if doing so is even useful at all as the DSL
provides no mechanism for you to synchronize your operations that may run in
parallel. The data structures itself are protected from race conditions, but
anything implemented on top of this may still be subject to race conditions.
And even if some user has a good reason for doing this, there's a feasible
workaround by creating your own namespace like globals.mutable and using that
instead.
2023-03-30 18:07:51 +02:00
Julian Brost 1665cc925e
Merge pull request #9738 from Icinga/TimerThreadProc
Document why Timer::TimerThreadProc() can use Timer members during Timer#~Timer() call
2023-03-30 16:03:43 +02:00
Alexander A. Klimov 335688909b Document why Timer::TimerThreadProc() can use Timer members during Timer#~Timer() call 2023-03-29 18:04:19 +02:00
Alexander A. Klimov 4c154f93dc ApiListener#NewClientHandlerInternal(): on basic_socket#cancel() (due to timeout) don't ssl::stream#async_shutdown()
If a connection hangs for too long in ApiListener#NewClientHandler(),
ApiListener#AddConnection()'s Timeout calls boost::asio::basic_socket#cancel()
on that connection to trigger an exception which unwinds
ApiListener#NewClientHandler(). Previously that unwind could trigger a Defer
which called boost::asio::ssl::stream#async_shutdown() which extended the hang.
2023-03-21 10:57:40 +01:00
Julian Brost 66b039df9c
Merge pull request #9497 from Icinga/9249
Application::Exit(): don't exit(), but _exit(), even in debug build mode
2023-03-10 16:04:54 +01:00
Julian Brost f47d7393c6
Merge pull request #9704 from Icinga/windows-perf-off
Don't include perfdata writers on Windows
2023-03-10 15:56:34 +01:00
Alexander A. Klimov 6414fd19f5 Checkable#ProcessCheckResult(): only clean up ack comments older than check result
Normally if for some reason an ack comment still exists on a checkable not
acked anymore, still clean it up. But while replaying log config objects
incl. ack comments come before check results and acks. I.e. 1) ack comment,
2) DOWN check result and 3) ack. Not 1) DOWN check result, 2) ack and 3) ack
comment. So the checkable is temporarily not acked, but already has the ack
comment. In this case the DOWN check result which is older than the ack
comment shall not clean up the latter.
2023-03-03 15:48:34 +01:00
Alexander A. Klimov 4662d4477b Checkable#RemoveAckComments(): add optional comment entry time filter 2023-03-03 15:48:11 +01:00
Alexander A. Klimov dceb29c742 Checkable#RemoveCommentsByType(): remove redundant parameter 2023-03-03 11:53:02 +01:00
Mattia Codato 912fdb9700 Fix update execution message discarded
refs Icinga#8616
2023-03-02 17:50:39 +01:00