14330 Commits

Author SHA1 Message Date
Yonas Habteab
1fc8395deb Release v2.15.0 2025-06-17 14:03:01 +02:00
Alvar
7ea12ab514
Merge pull request #10480 from Icinga/mailmap-three-alvars
.mailmap: Merge Alvar email addresses
2025-06-17 09:39:43 +00:00
Alvar Penning
bf628960f3
.mailmap: Merge Alvar email addresses
Merging PRs via GitHub resulted in using the noreply email addresses. By
adding a .mailmap entry, they are hidden from the git log.

Before:
> $ git shortlog -sne v2.14.0..HEAD | grep -i alvar
>     22  Alvar Penning <alvar.penning@icinga.com>
>      1  Alvar <8402811+oxzi@users.noreply.github.com>
>      1  alvar <8402811+oxzi@users.noreply.github.com>

After:
> $ git shortlog -sne v2.14.0..HEAD | grep -i alvar
>     24  Alvar Penning <alvar.penning@icinga.com>
2025-06-17 11:15:16 +02:00
Julian Brost
6e654cd808
Merge pull request #10479 from Icinga/docs-02-installation-fedora-fix-and-icingadb
docs: Fix Fedora Repository, Icinga DB, SELinux
2025-06-17 10:46:22 +02:00
Alvar Penning
881e1cc9cb
docs: Fix Fedora Repository, Icinga DB, SELinux
With Fedora 41, DNF was upgraded to version 5, breaking the command line
API of "dnf config-manager"[^0]. Unfortunately, DNF 5's addrepo does not
work with a simple URL anymore, but requires to construct a .repo file.

Furthermore, no information about trusting the Icinga signing key was
available, resulting in one being unable to install packages. This was
already the case for Fedora 40, still using DNF 4.

Since we are building Icinga DB for Fedora, I have included Icinga DB
documentation for Fedora. Otherwise, this section was empty.

Finally, the icingadb-redis-selinux package was mentioned for
distributions were we started to build SELinux packages for[^1].

[^0]: https://docs.fedoraproject.org/en-US/quick-docs/adding-or-removing-software-repositories-in-fedora/#_adding_repositories
[^1]: https://github.com/Icinga/icingadb/issues/580
2025-06-17 10:41:29 +02:00
Julian Brost
1aa62d4bb9
Merge pull request #10420 from Icinga/bundled-perfdata-writers-fix
Serialize fields before queueing them to the workqueue
2025-06-17 10:17:27 +02:00
Julian Brost
3c9b4693a9
Merge pull request #9747 from Icinga/vs2022
GHA: Windows: upgrade to VS 2022
2025-06-17 10:07:30 +02:00
Yonas Habteab
dcef22e125
Merge pull request #10460 from Icinga/apilistener-shutdown-conns-on-stop
Deterministically shut down all connections on ApiListener::Stop()
2025-06-16 17:47:26 +02:00
Alexander Aleksandrovič Klimov
cbff5c5179
Merge pull request #10478 from Icinga/windows-installer-compat
icinga-installer: statically link MSVC runtime library on CMake 3.15+
2025-06-16 14:22:31 +02:00
Alexander A. Klimov
3b729e9cd7 GHA: Windows: upgrade to VS 2022 2025-06-16 13:02:33 +02:00
Julian Brost
15a8114b4b icinga-installer: statically link MSVC runtime library on CMake 3.15+
CMake 3.15 introduced the `MSVC_RUNTIME_LIBRARY` property as a way to specify
which MSVC runtime library is used and how it is linked. Also with that
release, policy CMP0091 was introduced where the new behavior no longer adds
the corresponding compile flags to the `CMAKE_<LANG>_FLAGS_<CONFIG>` variables.

The new policy was enabled by 7f164bda96341272be385fa1359a26f97eb9d2b4,
resulting in the MSI no longer working on previous Windows Server versions
(2019 for example) as the CMake configuration replaced those compile flags
(lines 3-9 in the same file) which no longer works when they are no longer part
of the string. This commit fixes this regression by setting the
`MSVC_RUNTIME_LIBRARY` property on the icinga-installer target.

I've also added a comment stating my understanding of why this is necessary.
Unfortunately, I couldn't find an explanation of why replacing the /MD with the
/MT flag was done originally in the project history, so it's a bit of
guesswork.

https://cmake.org/cmake/help/latest/policy/CMP0091.html
https://cmake.org/cmake/help/latest/prop_tgt/MSVC_RUNTIME_LIBRARY.html
2025-06-16 12:16:48 +02:00
Johannes Schmidt
82bb636d2b Use WaitGroup to wait for or abort HTTP requests
The wait group gets passed to HttpServerConnection, then down to the
HttpHandlers. For those handlers that modify the program state, the
wait group is locked so ApiListener will wait on Stop() for the
request to complete. If the request iterates over config objects,
a further check on the state of the wait group is added to abort early
and not delay program shutdown. In that case, 503 responses will be
sent to the client.

Additionally, in HttpServerConnection, no further requests than the
one already started will be allowed once the wait group is joining.
2025-06-13 14:48:15 +02:00
Johannes Schmidt
33777f6f3f Disconnect JSON-RPC clients on ApiListner::Stop() 2025-06-13 14:48:15 +02:00
Johannes Schmidt
00802ed9fa Stop ApiListener::ListenerCoroutineProc() when Stop() is called 2025-06-13 14:48:11 +02:00
Johannes Schmidt
157e3750e3 Add IsLockable method to WaitGroup 2025-06-13 14:48:07 +02:00
Julian Brost
b27310fb6c
Merge pull request #10467 from Icinga/icingadb-calceventid-no-double-timestamptomilliseconds
IcingaDB::CalcEventID: No milliseconds as eventTime
2025-06-10 17:09:16 +02:00
Julian Brost
37f0b244cb
Merge pull request #10470 from Icinga/changelog-2144
Add Icinga `2.14.*` & `2.13.12` `CHANGELOG.md` to master
2025-06-10 16:44:33 +02:00
Julian Brost
dcd9a2dd41
Merge pull request #10457 from Icinga/remove-superfluous-dsl-functions
Drop superfluous (broken) DSL functions
2025-06-10 16:33:37 +02:00
Julian Brost
da89233dbe Mention #10343 in changelog for 2.14.5
The problem was only noticed after the changelog already got merged, hence this
has to be added retroactively.
2025-06-10 15:41:41 +02:00
Julian Brost
2e640bc7e2 Icinga 2.13.12 2025-06-10 13:26:20 +02:00
Julian Brost
404136141b Icinga 2.14.6 2025-06-10 13:24:08 +02:00
Julian Brost
8c7ed2faca Release v2.14.5 2025-06-10 13:21:46 +02:00
Alexander A. Klimov
1632dd5362 Icinga 2.14.4 2025-06-10 13:15:58 +02:00
Yonas Habteab
e5d0f3914b
Merge pull request #10320 from Icinga/Al2Klimov-patch-3
CHANGELOG.md: add v2.13.11
2025-06-10 12:08:28 +02:00
Julian Brost
c41fe682c5
Merge pull request #10452 from Icinga/streamline-redis-and-db-values
IcingaDB: Make Redis & DB values consistent
2025-06-10 11:30:07 +02:00
Julian Brost
a15b706ee3
Merge pull request #10372 from WuerthPhoenix/10364-race-condition-while-calculating-object-state
Keep object locked until events are dispatched.
2025-06-06 17:19:21 +02:00
Alvar Penning
9cdbbf4ede
IcingaDB::CalcEventID: No milliseconds as eventTime
CalcEventID's internal logic uses the TimestampToMilliseconds function
to convert the given eventTime to milliseconds. Within this function,
the timestamp is capped to prevent an overflow.

On three occasions, the input timestamp given to CalcEventID had already
been converted using TimestampToMilliseconds. The second
TimestampToMilliseconds function then checked the value and always
returned the capped maximum value. Consequently, CalcEventID returned
the same hash value for different timestamps.

This affected SendFlappingChange, SendAcknowledgementSet, and
SendAcknowledgementCleared. For example, when two acknowledgments were
created for the same service, the calculated event_id representing the
history table row would be identical.

Fixes #10465
2025-06-06 16:50:01 +02:00
Julian Brost
4d9e9e7ed6
Merge pull request #9924 from ymartin-ovh/pr-9916
Fix `/v1/actions/` deadlock & nullptr dereference
2025-06-06 15:15:51 +02:00
Julian Brost
4e08adc532
Merge pull request #10161 from Icinga/authBYhost-10157
ApiListener::UpdateObjectAuthority(): distribute auth. by object's host
2025-06-06 15:03:32 +02:00
Yonas Habteab
9e65a8b63b Fix compiler warnings of missing NotificationTypeAll case 2025-06-06 13:31:44 +02:00
Yonas Habteab
186571ec99 Refresh the states & types bitsets whenever states & types attrs change
Since the types and states attributes are user configurable and allowed to change at
runtime, we need to update the actual filter bitsets whenever these attributes change.
Otherwise, the filter bitsets would be stale and not reflect their current state.
2025-06-06 13:31:44 +02:00
Yonas Habteab
fd1927115a IcingaDB: Make is_acknowledged a bool & add is_sticky_acknowledgement field 2025-06-06 13:31:44 +02:00
Yonas Habteab
76d5915b3f IcingaDB: Set notification_histor#type to its string representation
So that Icinga DB (Go) daemon doesn't have to make the mappings again.
2025-06-06 13:31:44 +02:00
Yonas Habteab
7037b18b34 IcingaDB: Send the int representation of states & types filter 2025-06-06 13:31:44 +02:00
Yonas Habteab
ef1c0eb9b3 IcingaDB: Set state_type to hard or soft and not int 2025-06-06 13:31:44 +02:00
Yonas Habteab
953a2e2e96 Merge {host,service}::StateTypeToString() & drop unused StateTypeFromString() 2025-06-06 13:31:44 +02:00
Yonas Habteab
5d11df1abf IcingaDB: Send the string representation of comment#entry_type to Redis 2025-06-06 13:31:44 +02:00
Julian Brost
215af2b580
Merge pull request #10468 from Icinga/gha-fix-rockylinux-compression-libs
GHA: Fix rockylinux:9 by install compression libs
2025-06-06 13:15:13 +02:00
Alvar Penning
1f4b0bdd46
GHA: Fix rockylinux:9 by install compression libs
Since recently, rockylinux:9 failed with linker errors against bz2, lzma
and zstd. Installing the relevant devel packages fixed the builds.

For reasons, cmake has started to add the -lbz2, -llzma, and -lzstd
linker flags. Since Icinga 2 usually does not need those, the relevant
devel packages were not installed. This may be due to some other
transitively linked dependency.

> 2025-06-05T13:12:59.5866282Z : && /usr/lib64/ccache/c++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wsuggest-override -Wrange-loop-construct -g -pthread -Winvalid-pch -O2 -g -DNDEBUG -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1   -Wl,--export-dynamic -rdynamic third-party/mmatch/CMakeFiles/mmatch.dir/mmatch.c.o third-party/socketpair/CMakeFiles/socketpair.dir/socketpair.c.o lib/base/CMakeFiles/base.dir/application-version.cpp.o lib/base/CMakeFiles/base.dir/journaldlogger.cpp.o lib/base/CMakeFiles/base.dir/base_unity.cpp.o third-party/execvpe/CMakeFiles/execvpe.dir/execvpe.c.o lib/config/CMakeFiles/config.dir/config_lexer.cc.o lib/config/CMakeFiles/config.dir/config_parser.cc.o lib/config/CMakeFiles/config.dir/config_unity.cpp.o lib/remote/CMakeFiles/remote.dir/remote_unity.cpp.o plugins/CMakeFiles/check_nscp_api.dir/check_nscp_api.cpp.o -o Bin/RelWithDebInfo/check_nscp_api  -Wl,-rpath,::::::::::::::::::::::::  -ldl  /usr/lib64/libboost_coroutine.so.1.75.0  /usr/lib64/libboost_context.so.1.75.0  /usr/lib64/libboost_date_time.so.1.75.0  /usr/lib64/libboost_filesystem.so.1.75.0  /usr/lib64/libboost_iostreams.so.1.75.0  /usr/lib64/libboost_thread.so.1.75.0  /usr/lib64/libboost_system.so.1.75.0  /usr/lib64/libboost_program_options.so.1.75.0  /usr/lib64/libboost_regex.so.1.75.0  /usr/lib64/libssl.so  /usr/lib64/libcrypto.so  -lsystemd  /lib64/libedit.so  -ltermcap  /usr/lib64/libboost_chrono.so.1.75.0  -lbz2  -llzma  -lz  -lzstd  -licudata  -licui18n  -licuuc && :
> 2025-06-05T13:12:59.5872347Z /usr/bin/ld: cannot find -lbz2
> 2025-06-05T13:12:59.5872577Z /usr/bin/ld: cannot find -llzma
> 2025-06-05T13:12:59.5872802Z /usr/bin/ld: cannot find -lzstd
> 2025-06-05T13:12:59.5873039Z collect2: error: ld returned 1 exit status

Hopefully, this issue may resolve itself in the near future, but for the
time being this satisfies our CI run on Rocky Linux 9.
2025-06-06 11:04:01 +02:00
Yonas Habteab
bc5db9834f Drop System#track_parents DSL function
No external user needs to manipulate the actual object dependency
graphs. This was maybe introduced for debugging purposes at that time
but if someone messes with this in prod - good luck with that. Oh, apart
from that it's broken :( and doesn't track parents as its implies but
children.
2025-06-03 17:09:57 +02:00
Yonas Habteab
9577af8e6d Drop Checkable#process_check_result() DSL function
Not sure why it's introduced in the first place, maybe for debugging
purposes at the early stage of Icinga 2 dev but I failed to see an
actual useful use case for it that's worth its maintenance burden. So,
this commit dropped it entirely from the DSL language.
2025-06-03 17:09:57 +02:00
Yannick Martin
e6fc1b91a7
AddComment: return Comment::Ptr instead of String containing the name
Mimic 88e5744d54f79ab6a84260bd4a8d2cc0ffd43465 and address nullptr on concurrent
  add-comment / remove-comment actions.
2025-06-03 17:00:07 +02:00
Yonas Habteab
bcf43208c6
Merge pull request #10463 from Icinga/drop-ubuntu
Drop Ubuntu 20.04
2025-06-03 16:46:39 +02:00
Yonas Habteab
dd58fd0cde Drop Ubuntu 20.04
Is EOL by the end of May (31).
2025-06-03 11:18:05 +02:00
Yonas Habteab
3d04eb456a
Merge pull request #10415 from Icinga/abort-no-endpoint-conns
Abort connections with no valid endpoint
2025-06-02 16:21:46 +02:00
William Calliari
85ddb87c41
Fix Author 2025-05-29 09:16:46 +02:00
William Calliari
a2c84398b7
Add name to AUTHORS 2025-05-29 09:16:46 +02:00
William Calliari
9d40de78eb
Address comments from review 2025-05-29 09:16:46 +02:00
William Calliari
abf2fb392b
Keep object locked until events are dispatched. 2025-05-29 09:16:44 +02:00
Julian Brost
c253e7eb6e
Merge pull request #10397 from Icinga/activation-priority-10179
Checkable#ProcessCheckResult(): discard🗑️ CR or delay its producers shutdown
2025-05-28 12:30:40 +02:00