Yonas Habteab
9f84c1516e
ApiListener: Reorder logging in `ApiTimerHandler()`
2024-08-28 16:53:53 +02:00
Yonas Habteab
e062ceb901
ApiListener: Catch & supress clients runtime errors
2024-08-28 16:53:53 +02:00
Yonas Habteab
932a53449d
JsonRpcConnection: Raise an exception when trying to send to disconnected clients
2024-08-27 14:23:41 +02:00
Julian Brost
9222a63ff7
Make sure log file is reopened when `ApiListener::ReplayLog()` returns
2024-08-27 14:23:41 +02:00
Yonas Habteab
73db30c08b
Use `Defer` class for cleanup in `ApiListener::ReplayLog()`
2024-08-27 14:23:41 +02:00
Alexander A. Klimov
f074e24d2a
ApiListener#ReplayLog(): stop reading files ASAP on send error
2024-08-27 14:23:41 +02:00
Alexander A. Klimov
b538ad2528
JsonRpcConnection#Send*(): discard messages ASAP once shutting down
...
Especially ApiListener#ReplayLog() enqueued lots of messages into
JsonRpcConnection#{m_IoStrand,m_OutgoingMessagesQueue} (RAM) even if
the connection was shut(ting) down. Now #Disconnect() takes effect ASAP.
2024-08-27 14:23:41 +02:00
Alexander A. Klimov
33f8ea6dcc
JsonRpcConnection#Disconnect(): spawn coroutine only if necessary
...
by checking the now atomic #m_ShuttingDown outside of it.
2024-08-27 14:23:41 +02:00
Alexander Aleksandrovič Klimov
02ba5e4101
Merge pull request #10015 from Icinga/malloc_info
...
/v1/debug/malloc_info: call malloc_info(3) if available
2024-08-12 14:41:09 +02:00
Alexander A. Klimov
f3c7ac11e9
/v1/debug/malloc_info: call malloc_info(3) if available
...
The GNU libc function malloc_info(3) provides memory allocation and usage
statistics of Icinga 2 itself.
2024-08-09 12:59:25 +02:00
Yonas Habteab
546dea95a2
Don't allow to modify/create/delete an object concurrently
2024-06-13 11:26:19 +02:00
Yonas Habteab
099f664ce6
`ConfigObjectUtility#CreateObject()`: Use `Defer` for config path cleanup
2024-06-13 11:26:19 +02:00
Yonas Habteab
433e2de13a
ApiListener: Process cluster config updates sequentially
2024-06-13 11:26:19 +02:00
Yonas Habteab
1a55b68541
Introduce RAII style `ObjectNameLock` class
2024-06-13 11:26:19 +02:00
Yonas Habteab
2218ebd6b0
`ConfigObjectUtility`: Use `AtomicFile` to store object config files
2024-06-13 11:26:19 +02:00
Julian Brost
31be43ff6c
Merge pull request #10018 from Icinga/revert-9980-config-sync-conflicts
...
Revert "Process `config::update/delete` cluster events gracefully"
2024-03-08 16:58:28 +01:00
Julian Brost
af97431bfb
Merge pull request #10006 from Icinga/http-error-handling
...
HttpServerConnection: use exceptions for error handling
2024-03-08 15:06:51 +01:00
Yonas Habteab
a924a49cd8
Revert "Process `config::update/delete` cluster events gracefully"
2024-03-07 17:17:17 +01:00
Julian Brost
abea2f270c
Merge pull request #9997 from Icinga/ListenerCoroutineProc-remote_endpoint
...
ApiListener#ListenerCoroutineProc(): get remote endpoint ASAP for logging
2024-02-20 13:46:02 +01:00
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
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
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
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
Alexander A. Klimov
62e1d7650d
ApiListener#ListenerCoroutineProc(): get remote endpoint ASAP for logging
...
On incoming connection timeout we log the remote endpoint which isn't
available if it was already disconnected - an exception is thrown. Get it
as long as we're still connected not to lose it, nor to get an exception.
2024-02-09 12:27:25 +01:00
Yonas Habteab
32531fe909
EventsHandler: Drop superfluous `CpuBoundWork` usage
2024-02-09 12:00:50 +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
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 5c32a5a7dc
, which introduced it, clearly shows that the other ")" already existed legitimately.
2024-01-16 16:31:00 +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 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
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
ecfc9033b0
FilterUtility::GetFilterTargets(): don't run filter for specific object(s) for all objects
2023-12-13 16:02:50 +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 Aleksandrovič Klimov
e5d988a2fe
Merge pull request #7799 from Icinga/bugfix/file-end
...
Fix file endings
2023-08-25 11:06:19 +02:00
Mattia Codato
41e21cb8cf
Prevent calls to command API while the configuration is reloading.
...
Fixes #9840
2023-08-09 08:45:04 +02:00
Alexander Aleksandrovič Klimov
000a776dfb
Built-in check command: ifw-api ( #9062 )
2023-07-06 14:18:21 +02:00
Alexander A. Klimov
1587431945
POST /v1/objects: allow array of attrs to undo modifications of
2023-06-13 16:40:33 +02:00
Alexander A. Klimov
9376a311ea
Fix file endings
...
git ls-files -z \
|grep -zEe '^lib/' \
|grep -zEe '\.[ch]pp$' \
|xargs -0 perl -p0i -e 's/\n*(?!(?:.|\n))/\n/'
2023-05-17 18:05:13 +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
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
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
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