Julian Brost
700c5a13d7
HttpServerConnection: use exceptions for error handling
...
When a HTTP connection dies prematurely while the response is sent,
`http::async_write()` sets the error code to something like broken pipe for
example. When calling `async_flush()` afterwards, it sometimes happens that
this never returns. This results in a resource leak as the coroutine isn't
cleaned up. This commit makes the individual functions throw exceptions instead
of silently ignoring the errors, resulting in the function terminating early
and also resulting in an error being logged as well.
2024-02-19 14:12:41 +01:00
Julian Brost
04ef105caa
Merge pull request #9980 from Icinga/config-sync-conflicts
...
Process `config::update/delete` cluster events gracefully
2024-02-19 13:49:41 +01:00
Julian Brost
7d1c887a32
Merge pull request #9999 from Icinga/reset-log-message-count-correctly
...
ApiListener: Reset `m_LogMessageCount` when rotating
2024-02-15 17:06:16 +01:00
Alexander Aleksandrovič Klimov
9db1c4aca3
Merge pull request #8011 from Icinga/bugfix/reset-sigpipe-6912
...
Reset all signal handlers of child processes
2024-02-15 12:22:36 +01:00
Yonas Habteab
456144c1dc
ApiListener: Process cluster config updates sequentially
2024-02-14 14:25:53 +01:00
Yonas Habteab
40011b0584
Introduce ObjectNamesMutex
helper class
2024-02-14 14:25:53 +01:00
Alexander Aleksandrovič Klimov
1a8ce5a90e
Merge pull request #9575 from Icinga/WorkQueue-ParallelFor
...
WorkQueue#ParallelFor(): allocate lambda once per thread, not once per item
2024-02-14 12:59:50 +01:00
Julian Brost
2be08aa2e0
Merge pull request #9992 from Icinga/remove-redundat-cpu-bound-work
...
Drop redundant `CpuBoundWork` usage in `JsonRpcConnection::Disconnect()`
2024-02-13 15:51:34 +01:00
Julian Brost
fc6a106345
Merge pull request #9994 from Icinga/redundant-cpu-bound-work-usages
...
Drop redundant `CpuBoundWork` usages in `lib/remote`
2024-02-13 14:53:59 +01:00
Alexander Aleksandrovič Klimov
48eb563ca0
Merge pull request #9736 from Icinga/stream-read-allow_partial
...
Stream#Read(): remove de facto unused param allow_partial
2024-02-13 13:04:15 +01:00
Yonas Habteab
008fcd1744
Preserve runtime objects in a tmp file for the entire validation process
...
Given that the internal `config::Update` cluster events are using this
as well to create received runtime objects, we don't want to persist
first the conf file and the load and validate it with `CompileFile`.
Otherwise, we are forced to remove the newly created file whenever we
can't validate, commit or activate it. This also would also have the
downside that two cluster events for the same object arriving at the
same moment from two different endpoints would result in two different
threads simultaneously creating and loading the same config file -
whereby only one of the surpasses the validation, while the other is
facing an object `re-definition` error and tries to remove that config
file it mistakenly thinks it has created. As a consequence, an object
successfully created by the former is implicitly deleted by the latter
thread, causing the objects to mysteriously disappear.
2024-02-12 15:18:32 +01:00
Yonas Habteab
6e66cd9aff
ApiListener: Reset m_LogMessageCount
when rotating
...
Closing and re-opening that very same log file shouldn't reset the
counter, otherwise some log files may exceed the max limit per file as
their offset indicator is reset each time they are re-opened.
2024-02-09 18:04:20 +01:00
Yonas Habteab
eb813cfb99
HttpServerConnection: Drop superfluous CpuBoundWork
usage
2024-02-09 15:17:26 +01:00
Yonas Habteab
32531fe909
EventsHandler: Drop superfluous CpuBoundWork
usage
2024-02-09 12:00:50 +01:00
Eric Lippmann
c7293de91d
IoEngine: Always log coroutine exception diagnostics
...
While analyzing a possible memory leak, we encountered several coroutine
exception messages, which unfortunately do not provide any information
about what exactly went wrong, as exception diagnostics were previously
only logged at the notice level.
2024-02-08 12:09:06 +01:00
Yonas Habteab
72266434df
Drop redundant CpuBoundWork
usages in lib/remote
2024-02-08 11:30:23 +01:00
Yonas Habteab
e2793f1d88
Drop redundant CpuBoundWork
usage in JsonRpcConnection::Disconnect()
...
Although there is locking involved here, it shoudln't take too long for
the thread to actually acquire it, since there aren't that many threads
dealing with endpoint clients concurrently. It's just wasting pointless
time trying to obtain a CPU slot.
2024-02-08 11:24:55 +01:00
Alexander Aleksandrovič Klimov
e9fcbf400f
Merge pull request #9966 from Icinga/Al2Klimov-patch-3
...
HttpServerConnection: remove duplicate ")" from a log message
2024-01-18 10:46:51 +01:00
Alexander A. Klimov
d48b369554
Reset all signal handlers of child processes
...
... not to disturb check plugins.
refs #6912
2024-01-17 12:25:59 +01:00
Alexander Aleksandrovič Klimov
966b46e808
Merge pull request #9965 from Icinga/http-request-time
...
HttpServerConnection: log request processing time as well
2024-01-17 11:30:33 +01:00
Julian Brost
b1fe15f694
Merge pull request #9962 from Icinga/influx-disk-9948
...
Influx DB: truncate timestamps to whole seconds to save disk space
2024-01-17 08:50:16 +01:00
Alexander A. Klimov
b6874cc8d4
HttpServerConnection: log request processing time as well
2024-01-16 17:52:07 +01:00
Alexander Aleksandrovič Klimov
6a4cb5c12c
HttpServerConnection: remove duplicate ")" from a log message
...
The commit 5c32a5a7dcd220598d36b2b47e745d14c23edb93, which introduced it, clearly shows that the other ")" already existed legitimately.
2024-01-16 16:31:00 +01:00
Alexander A. Klimov
cc9db3756f
Revert "Influx DB: don't unneccessarily truncate timestamps to whole seconds"
...
This reverts commit eaa3cd83adf860732b955a77b8f5fca7e30c65c2.
2024-01-16 12:19:48 +01:00
Alexander A. Klimov
fc5b1178c6
Revert "Remove no-op InfluxDB URL param"
...
This reverts commit 21f548d3c07189c6a413cf88c2b60cc9ada73497.
2024-01-16 12:19:47 +01:00
Alexander Aleksandrovič Klimov
28b2db8446
Merge pull request #9851 from Icinga/Al2Klimov-patch-3
...
Make ObjectImpl<Logger>#GetSeverity() non-virtual
2023-12-22 12:44:51 +01:00
Alexander Aleksandrovič Klimov
6c03598678
Merge pull request #9896 from Icinga/provide-cancel_time-where-has_been_cancelled-may-be-1
...
Disallow triggering a cancelled downtime, but provide cancel_time in Icinga DB downtime history where has_been_cancelled may be 1
2023-12-20 10:03:09 +01:00
Alexander Aleksandrovič Klimov
949d983a76
Merge pull request #9895 from Icinga/targeted-api-filter
...
FilterUtility::GetFilterTargets(): don't run filter for specific object(s) for all objects
2023-12-19 15:18:41 +01:00
Alexander Aleksandrovič Klimov
8b2e28a869
Merge pull request #9891 from Icinga/renew-the-ca-9890
...
ApiListener#Start(): auto-renew CA on its owner
2023-12-19 14:57:47 +01:00
Alexander Aleksandrovič Klimov
96cfc4abe8
Merge pull request #9887 from Icinga/argument-list-too-long-9340
...
PluginNotificationTask::ScriptFunc(): on Linux truncate output and comment
2023-12-19 14:36:57 +01:00
Alexander A. Klimov
175153ce6a
PluginNotificationTask::ScriptFunc(): on Linux truncate output and comment
...
not to run into an exec(3) error E2BIG due to a too long argument.
This sends a notification with truncated output instead of not sending.
2023-12-19 12:21:03 +01:00
Alexander A. Klimov
966216f4ba
RequestCertificateHandler(): also renew if CA needs a renewal
...
and a newer one is available.
2023-12-18 15:28:11 +01:00
Alexander A. Klimov
551c3afa60
CertificateToString(): allow raw pointer input
2023-12-18 15:28:11 +01:00
Alexander A. Klimov
bc778116e9
ApiListener#Start(): auto-renew CA on its owner
...
otherwise it would expire.
2023-12-18 15:28:11 +01:00
Alexander A. Klimov
36a08b0497
ApiListener#RenewCert(): enable optional CA creation
2023-12-18 15:28:11 +01:00
Alexander A. Klimov
7b55df6f11
CreateCertIcingaCA(EVP_PKEY*, X509_NAME*): enable optional CA creation
2023-12-18 15:28:11 +01:00
Alexander Aleksandrovič Klimov
953eeba061
Merge pull request #9893 from Icinga/do-not-re-notify-if-filtered-states-don-t-change-4503
...
Discard likely duplicate problem notifications via Notification#last_notified_state_per_user
2023-12-13 16:13:28 +01:00
Alexander A. Klimov
ecfc9033b0
FilterUtility::GetFilterTargets(): don't run filter for specific object(s) for all objects
2023-12-13 16:02:50 +01:00
Alexander A. Klimov
15191bcd74
ApplyRule::GetTarget*s(): support constant strings from variables
...
in addition to literal strings. This is for sandboxed filters with some
variables pre-set by the caller. They're "constant" in that scope, too.
2023-12-13 16:02:50 +01:00
Alexander A. Klimov
a04cef1890
Introduce DictExpression#GetExpressions()
2023-12-13 16:02:50 +01:00
Alexander A. Klimov
8bcae97ecc
Introduce Dictionary#GetRef()
2023-12-13 16:02:50 +01:00
Alexander A. Klimov
97cd05db7a
Notification#BeginExecuteNotification(): on recovery clear last_notified_state_per_user
2023-12-13 13:21:22 +01:00
Alexander A. Klimov
44e9c6f40d
Notification#BeginExecuteNotification(): discard likely duplicate problem notifications
2023-12-13 13:21:19 +01:00
Alexander A. Klimov
74f52c6fcd
Introduce IsCaUptodate() by splitting IsCertUptodate()
2023-12-13 12:08:34 +01:00
Julian Brost
871fa67b52
Merge pull request #9885 from Icinga/renegotiation
2023-12-12 17:38:09 +01:00
Alexander A. Klimov
2cff763295
Cluster-sync Notification#last_notified_state_per_user
2023-12-12 15:29:50 +01:00
Alexander A. Klimov
b25ba7a316
Notification#BeginExecuteNotification(): track state change notifications
2023-12-07 12:43:30 +01:00
Julian Brost
d2a7117007
Merge pull request #9899 from Icinga/icinga2-crashes-silently-9897
...
IcingaDB#SendConfigDelete(): fix missing nullptr check before deref
2023-11-21 11:03:28 +01:00
Alexander Aleksandrovič Klimov
7fc7d054af
Merge pull request #9841 from WuerthPhoenix/fix-9840-lock-console-api-during-reload
2023-11-21 10:36:26 +01:00
Alexander A. Klimov
7174dc864d
IcingaDB#SendConfigDelete(): fix missing nullptr check before deref
2023-11-10 17:43:33 +01:00