Julian Brost
0777321573
HttpServerConnection: log disconnected message after the client was actually disconnected
...
Previously, the "HTTP client disconnected" message was logged before shutting
down the connection even started.
2024-06-11 15:06:19 +02:00
Yonas Habteab
3df7e4f64e
Update object#config_hash after all relations queries
2024-06-11 13:52:53 +02:00
Julian Brost
e7722c67bb
TimeoutLogger: don't log stack traces
...
Provides little benefit given the different log messages, but have a high risk
of flooding the log for HTTP requests.
2024-06-11 13:52:36 +02:00
Julian Brost
b0f7c966e8
Log long-running and long-waiting CpuBoundWork tasks
2024-06-11 13:52:26 +02:00
Yonas Habteab
6c6dcbbdc8
Revert "Boost Coroutines: Increase the default stack size from 64 to 256KB"
...
This reverts commit f62f2eb25ed5592e4432dd59fe903fccfe0b165a.
2024-06-11 13:52:14 +02:00
Alexander A. Klimov
91a5b2f8c1
/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-06-11 13:51:49 +02:00
Yonas Habteab
6239f28fde
ApiListener: Reorder logging in ApiTimerHandler()
2024-06-11 13:51:20 +02:00
Yonas Habteab
ba23e48ec9
ApiListener: Catch & supress clients runtime errors
2024-06-11 13:51:20 +02:00
Yonas Habteab
faaf4d3c7d
JsonRpcConnection: Raise an exception when trying to send to disconnected clients
2024-06-11 13:51:20 +02:00
Julian Brost
b51b8355db
Make sure log file is reopened when ApiListener::ReplayLog()
returns
2024-06-11 13:51:20 +02:00
Yonas Habteab
b76bea3e87
Defer: Allow empty initialization & add SetFunc()
method
2024-06-11 13:51:20 +02:00
Yonas Habteab
294b090a71
Use Defer
class for cleanup in ApiListener::ReplayLog()
2024-06-11 13:51:20 +02:00
Alexander A. Klimov
957d386908
ApiListener#ReplayLog(): stop reading files ASAP on send error
2024-06-11 13:51:20 +02:00
Alexander A. Klimov
4083d66bae
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-06-11 13:51:20 +02:00
Alexander A. Klimov
ebc79f7c4e
JsonRpcConnection#Disconnect(): spawn coroutine only if necessary
...
by checking the now atomic #m_ShuttingDown outside of it.
2024-06-11 13:51:20 +02:00
Julian Brost
5243241b33
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-06-10 13:19:46 +02:00
Alexander A. Klimov
8ff7121e93
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-06-10 13:19:46 +02:00
Yonas Habteab
dfffb29c81
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-06-10 13:19:46 +02:00
Yonas Habteab
ed8156db28
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-06-10 13:19:46 +02:00
Yonas Habteab
e66f8567de
HttpServerConnection: Drop superfluous CpuBoundWork
usage
2024-06-10 13:19:46 +02:00
Yonas Habteab
599a54aae0
EventsHandler: Drop superfluous CpuBoundWork
usage
2024-06-10 13:19:46 +02:00
Yonas Habteab
0f2478fb28
Drop redundant CpuBoundWork
usages in lib/remote
2024-06-10 13:19:46 +02:00
Eric Lippmann
771070549c
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-06-10 13:19:46 +02:00
Alexander Aleksandrovič Klimov
d6a2528af5
Merge pull request #9970 from Icinga/2142backport
...
Log HTTP request processing time and ship Boost 1.84 on Windows
2024-01-17 19:11:54 +01:00
Alexander A. Klimov
6817a148bd
HttpServerConnection: log request processing time as well
...
(cherry picked from commit b6874cc8d40336fbc9eb6c60e9d1be9313365a58)
2024-01-17 17:11:10 +01:00
Alexander A. Klimov
3a274ac305
Revert "Influx DB: don't unneccessarily truncate timestamps to whole seconds"
...
This reverts commit eaa3cd83adf860732b955a77b8f5fca7e30c65c2.
(cherry picked from commit cc9db3756fa68b303c13258cbb1500d691b1b770)
2024-01-17 17:07:13 +01:00
Alexander A. Klimov
1b5bc20e50
Revert "Remove no-op InfluxDB URL param"
...
This reverts commit 21f548d3c07189c6a413cf88c2b60cc9ada73497.
(cherry picked from commit fc5b1178c643d37dfa1ce8512966b95961bac18f)
2024-01-17 17:07:13 +01:00
Alexander Aleksandrovič Klimov
61d190f892
Merge pull request #9947 from Icinga/2141morebackport
...
Truncate too big notification command lines, fix GelfWriter deadlock and return 503 in /v1/console/* during reload
2023-12-20 12:44:07 +01:00
Alexander Aleksandrovič Klimov
3ddbbebc63
Merge pull request #9946 from Icinga/2141backport
...
Disable TLS renegotiation, bump Windows deps and fix Icinga DB crashes
2023-12-20 12:40:41 +01:00
Alexander A. Klimov
fecb209fe0
GelfWriter: protect m_Stream via m_WorkQueue, not ObjectLock(this)
...
On shutdown or HA re-connect ConfigObject#SetAuthority(false) is called which
does ObjectLock(this) and ConfigObject#Pause(). GelfWriter#Pause(), with the
above ObjectLock, calls m_WorkQueue.Join(). But items inside that also doing
ObjectLock(this) cause a deadlock.
2023-12-20 10:46:51 +01:00
Mattia Codato
85c5a7c901
Prevent calls to command API while the configuration is reloading.
...
Fixes #9840
2023-12-20 10:46:51 +01:00
Alexander A. Klimov
0eeac3b385
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-20 10:46:51 +01:00
Alexander A. Klimov
7efdae6a53
IcingaDB#SendConfigDelete(): fix missing nullptr check before deref
2023-12-20 10:30:01 +01:00
Alexander A. Klimov
79efda7a14
Icinga DB downtime history: provide cancel_time where has_been_cancelled may be 1
...
The table sla_history_downtime requires a downtime_end.
The Go daemon takes the cancel_time if has_been_cancelled is 1.
So we must supply a cancel_time whereever has_been_cancelled is 1.
Otherwise the Go daemon can't process some entries.
2023-12-20 10:30:01 +01:00
Alexander A. Klimov
ec77b6f1e3
Disable TLS renegotiation
...
The API doesn't need it and a customer's security scanner
is afraid of a potential DoS attack vector.
2023-12-20 10:14:00 +01:00
Alexander Aleksandrovič Klimov
bbb45894dd
Merge pull request #9944 from Icinga/targeted-api-filter-214
...
FilterUtility::GetFilterTargets(): don't run filter for specific object(s) for all objects
2023-12-19 17:40:59 +01:00
Alexander A. Klimov
bcbb1aee52
FilterUtility::GetFilterTargets(): don't run filter for specific object(s) for all objects
2023-12-19 15:19:20 +01:00
Alexander A. Klimov
60b7e96adc
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-19 15:19:20 +01:00
Alexander A. Klimov
8248fa110c
Introduce DictExpression#GetExpressions()
2023-12-19 15:19:20 +01:00
Alexander A. Klimov
5c10bad86f
Introduce Dictionary#GetRef()
2023-12-19 15:19:20 +01:00
Alexander Aleksandrovič Klimov
5059d0f8b0
Merge pull request #9933 from Icinga/renew-the-ca-9890-214
...
ApiListener#Start(): auto-renew CA on its owner
2023-12-19 15:15:00 +01:00
Alexander A. Klimov
4195f8d0f0
RequestCertificateHandler(): also renew if CA needs a renewal
...
and a newer one is available.
2023-12-18 17:04:59 +01:00
Alexander A. Klimov
6b000fbce6
CertificateToString(): allow raw pointer input
2023-12-18 17:04:59 +01:00
Alexander A. Klimov
32f43c4873
ApiListener#Start(): auto-renew CA on its owner
...
otherwise it would expire.
2023-12-18 17:04:59 +01:00
Alexander A. Klimov
b3dee0bb0a
ApiListener#RenewCert(): enable optional CA creation
2023-12-18 17:04:59 +01:00
Alexander A. Klimov
0cb037c698
CreateCertIcingaCA(EVP_PKEY*, X509_NAME*): enable optional CA creation
2023-12-18 17:04:59 +01:00
Alexander A. Klimov
0f4723e567
Introduce IsCaUptodate() by splitting IsCertUptodate()
2023-12-18 17:04:59 +01:00
Alexander A. Klimov
d7500ca1bd
Notification#BeginExecuteNotification(): on recovery clear last_notified_state_per_user
2023-12-13 16:14:57 +01:00
Alexander A. Klimov
bbadf1f27b
Notification#BeginExecuteNotification(): discard likely duplicate problem notifications
2023-12-13 16:14:57 +01:00
Alexander A. Klimov
0ae2bdc444
Cluster-sync Notification#last_notified_state_per_user
2023-12-13 16:14:57 +01:00