icinga2/lib/base
Julian Brost 0ebcd2662d No longer allow overriding the frozen attribute of containers
The Array, Dictionary, and Namespace types provide a Freeze() method that makes
them read-only. So far, there was the possibility to call some methods with
`overrideFrozen=true` which would then bypass the corresponding check and allow
modification of the data structures nonetheless.

With 24b57f0d3a, this possibility was already
removed from the Namespace type. However, for interface compatibility, it kept
the parameter and just ignores it, throwing an exception on any modification on
a frozen instance.

The only place using `overrideFrozen` was processing of the `-D`/`--define`
command line flag that allows setting additional variables in the DSL. At the
time it is evaluated, there are no user-created data structures yet that could
be frozen, so the only frozen objects that could be encountered are Namespaces
(Icinga doesn't freeze other types by itself) and for these, `overrideFrozen`
already has no effect.

Hence, there is no harm in removing `overrideFrozen` altogether. This
simplifies the code and also means that frozen objects are now indeed read-only
without exceptions, allowing further optimizations regarding locking in the
future.
2025-07-08 14:16:20 +02:00
..
application-environment.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
application-version.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
application.cpp Fix SIGABRT not causing a core dump 2025-04-23 09:13:04 +02:00
application.hpp Application::m_LastReloadFailed: if double isn't always lock free, use uint32_t 2023-07-10 10:51:02 +02:00
application.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
array-script.cpp Replace std/boost::bind() function with lambda expression 2021-03-10 16:29:40 +01:00
array.cpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
array.hpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
atomic-file.cpp Introduce AtomicFile::Write() 2023-01-27 11:36:09 +01:00
atomic-file.hpp Introduce AtomicFile#GetTempFilename() 2023-01-27 12:03:59 +01:00
atomic.hpp Atomic#Atomic(): remove superfluous atomic write 2024-11-06 11:37:02 +01:00
base64.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
base64.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
boolean-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
boolean.cpp Fix file endings 2023-05-17 18:05:13 +02:00
boolean.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
bulker.hpp Icinga DB: log amount of history kept in memory every 10s 2022-03-02 16:39:37 +01:00
CMakeLists.txt Introduce WaitGroup and StoppableWaitGroup 2025-05-23 14:53:58 +02:00
configobject-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
configobject.cpp CONTEXT: use << everywhere to unify usages 2022-11-30 11:06:51 +01:00
configobject.hpp Fix message origin for runtime created config object (create/delete events) 2019-08-13 15:05:47 +02:00
configobject.ti ConfigObject: Introduce new icingadb_identifier attr 2022-09-12 17:22:57 +02:00
configtype.cpp Make ConfigType#m_Mutex a std::shared_timed_mutex 2023-01-26 15:04:02 +01:00
configtype.hpp Add ConfigType::BeforeOnAllConfigLoaded signal 2025-03-12 11:53:30 +01:00
configuration.cpp Merge pull request #9643 from Icinga/hardware_concurrency 2023-05-23 19:23:14 +02:00
configuration.hpp Track Configuration.Concurrency modifications 2023-05-11 15:41:35 +02:00
configuration.ti Fix that MaxConcurrentChecks constant is overridden from 'checker' feature 2019-04-16 15:04:57 +02:00
configwriter.cpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
configwriter.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
console.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
console.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
context.cpp CONTEXT: lazily evaluate frames to only actually assemble when needed 2022-11-30 11:06:45 +01:00
context.hpp CONTEXT: lazily evaluate frames to only actually assemble when needed 2022-11-30 11:06:45 +01:00
convert.cpp Convert::ToString(double): handle integral values too large for long long correctly 2021-04-27 17:31:50 +02:00
convert.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
datetime-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
datetime.cpp Ensure consistent mktime() DST behavior across different implementations 2025-04-28 13:38:55 +02:00
datetime.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
datetime.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
debug.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
debuginfo.cpp Fix file endings 2023-05-17 18:05:13 +02:00
debuginfo.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
defer.hpp Defer: Allow empty initialization & add SetFunc() method 2024-08-27 14:23:41 +02:00
dependencygraph.cpp Simplify DependencyGraph:RemoveDependency() method 2025-01-07 11:07:46 +01:00
dependencygraph.hpp DependencyGraph: Allow lookups by parent & child dependencies 2025-01-07 11:07:46 +01:00
dictionary-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
dictionary.cpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
dictionary.hpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
exception.cpp Windows: output useful error message for syscall errors 2022-07-28 17:00:57 +02:00
exception.hpp Windows: output useful error message for syscall errors 2022-07-28 17:00:57 +02:00
fifo.cpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
fifo.hpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
filelogger.cpp Replace std/boost::bind() function with lambda expression 2021-03-10 16:29:40 +01:00
filelogger.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
filelogger.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
function-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
function.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
function.hpp Namespace: don't acquire shared locks on frozen namespaces 2023-01-19 17:56:44 +01:00
function.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
functionwrapper.hpp Replace std/boost::bind() function with lambda expression 2021-03-10 16:29:40 +01:00
i2-base.hpp Replace std/boost::bind() function with lambda expression 2021-03-10 16:29:40 +01:00
initialize.cpp Fix file endings 2023-05-17 18:05:13 +02:00
initialize.hpp Introduce Type::GetConfigTypesSortedByLoadDependencies() 2024-09-20 16:18:12 +02:00
intrusive-ptr.hpp Implement std::hash<boost::intrusive_ptr<T>> for old Boost versions 2025-03-12 11:53:30 +01:00
io-engine.cpp Introduce AsioDualEvent 2025-05-14 12:24:28 +02:00
io-engine.hpp Introduce AsioDualEvent 2025-05-14 12:24:28 +02:00
journaldlogger.cpp Add a JournaldLogger 2021-09-23 16:08:11 +02:00
journaldlogger.hpp Add a JournaldLogger 2021-09-23 16:08:11 +02:00
journaldlogger.ti Add a JournaldLogger 2021-09-23 16:08:11 +02:00
json-script.cpp Namespace: don't acquire shared locks on frozen namespaces 2023-01-19 17:56:44 +01:00
json.cpp Update third-party/nlohmann_json to v3.9.1 2023-02-14 16:19:44 +01:00
json.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
lazy-init.hpp Unify copyright headers 2019-05-24 16:25:32 +02:00
library.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
library.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
loader.cpp Fix file endings 2023-05-17 18:05:13 +02:00
loader.hpp InitializePriority: don't explicitly specify values 2023-01-18 15:57:32 +01:00
logger.cpp Initialize namespaces without using overrideFrozen 2023-01-19 09:53:36 +01:00
logger.hpp Log: fix some parts of messages not being discarded early 2024-09-27 14:23:05 +02:00
logger.ti Make ObjectImpl<Logger>#GetSeverity() non-virtual 2023-08-15 13:03:31 +02:00
math-script.cpp Namespace: don't acquire shared locks on frozen namespaces 2023-01-19 17:56:44 +01:00
namespace-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
namespace.cpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
namespace.hpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
netstring.cpp Fix compiler warnings don't move local variables 2022-02-22 17:51:43 +01:00
netstring.hpp Replace std::shared_ptr<AsioTlsStream> with Shared<AsioTlsStream>::Ptr 2019-10-21 16:12:35 +02:00
networkstream.cpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
networkstream.hpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
number-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
number.cpp Fix file endings 2023-05-17 18:05:13 +02:00
number.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
object-packer.cpp PackObject(): avoid one malloc() 2021-03-23 13:13:47 +01:00
object-packer.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
object-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
object.cpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
object.hpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
objectlock.cpp Make Object#m_Mutex std::recursive_mutex 2019-04-17 18:26:29 +02:00
objectlock.hpp Prevent ObjectLock from being copied 2022-12-08 15:48:01 +01:00
objecttype.cpp Fix file endings 2023-05-17 18:05:13 +02:00
objecttype.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
perfdatavalue.cpp Fix PerfdataValue Counter Parsing 2025-05-12 16:34:05 +02:00
perfdatavalue.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
perfdatavalue.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
primitivetype.cpp Fix file endings 2023-05-17 18:05:13 +02:00
primitivetype.hpp INITIALIZE_ONCE_WITH_PRIORITY: use enum for priority values 2023-01-18 15:57:27 +01:00
process.cpp Fix compiler warnings by not unnecessarily (copy-)constructing loop variables 2025-05-21 11:36:32 +02:00
process.hpp Make ProcessResult#ExitStatus and CheckResult#exit_status 64-bit ints 2024-04-23 17:45:31 +02:00
reference-script.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
reference.cpp No longer allow overriding the frozen attribute of containers 2025-07-08 14:16:20 +02:00
reference.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
registry.hpp Remove unused Registry#Clear() 2025-03-18 11:22:56 +01:00
ringbuffer.cpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
ringbuffer.hpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
scriptframe.cpp Make globals.Internal values non-const by default 2023-02-10 15:47:25 +01:00
scriptframe.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
scriptglobal.cpp Fix file endings 2023-05-17 18:05:13 +02:00
scriptglobal.hpp ScriptGlobal::Set(): remove unused bool overrideFrozen 2023-02-10 11:33:46 +01:00
scriptutils.cpp Drop System#track_parents DSL function 2025-06-03 17:09:57 +02:00
scriptutils.hpp Drop System#track_parents DSL function 2025-06-03 17:09:57 +02:00
serializer.cpp Simplify NamespaceValue class hierarchy to one struct without member functions 2023-01-19 17:55:11 +01:00
serializer.hpp icinga2 daemon: w/o --dump-objects just check for circular refs 2022-11-30 10:45:50 +01:00
shared-memory.hpp Introduce SharedMemory 2023-04-04 13:40:27 +02:00
shared-object.hpp SharedObject: delete unused methods 2025-05-23 15:47:02 +02:00
shared.hpp Implement std::hash<boost::intrusive_ptr<T>> for old Boost versions 2025-03-12 11:53:30 +01:00
singleton.hpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
socket.cpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
socket.hpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
stacktrace.cpp Add comments to stack trace formatter and test case 2021-03-01 14:07:11 +01:00
stacktrace.hpp Add comments to stack trace formatter and test case 2021-03-01 14:07:11 +01:00
statsfunction.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
stdiostream.cpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
stdiostream.hpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
stream.cpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
stream.hpp Stream#Read(): remove de facto unused param allow_partial 2023-07-13 16:55:48 +02:00
streamlogger.cpp Explicitly stop started timers and wait for them 2023-04-14 14:52:04 +02:00
streamlogger.hpp Use std::mutex, not boost::mutex 2021-02-03 09:54:57 +01:00
streamlogger.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
string-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
string.cpp Value: Add a specialized rvalue reference of Get() 2025-03-07 10:16:31 +01:00
string.hpp String: Mark move constructor & assignment op as noexcept 2025-03-06 13:02:40 +01:00
sysloglogger.cpp Initialize namespaces without using overrideFrozen 2023-01-19 09:53:36 +01:00
sysloglogger.hpp Make syslog facility handling reusable 2021-09-15 10:15:22 +02:00
sysloglogger.ti Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
tcpsocket.cpp Don't require OS headers to provide SO_REUSEPORT 2019-02-26 11:25:44 +01:00
tcpsocket.hpp Prefer icinga::String::GetData() over icinga::String::CStr() 2025-04-14 17:30:19 +02:00
threadpool.cpp Restart thread pool after freezing Configuration 2023-05-23 14:41:35 +02:00
threadpool.hpp Restart thread pool after freezing Configuration 2023-05-23 14:41:35 +02:00
timer.cpp Support multiple redundant Timer#Start() calls 2023-04-04 10:35:22 +02:00
timer.hpp Timer#Start(): don't unnecessarily unlock/lock l_TimerMutex 2023-04-04 10:35:22 +02:00
tlsstream.cpp Move Timeout instances from heap to stack 2025-01-07 18:20:50 +01:00
tlsstream.hpp AsioTlsStream: add GracefulDisconnect() and ForceDisconnect() 2024-12-12 12:10:59 +01:00
tlsutility.cpp VerifyCertificate: Work around issue in OpenSSL < 1.1.0 causing invalid certifcates being treated as valid 2025-05-21 10:50:12 +02:00
tlsutility.hpp VerifyCertificate: Work around issue in OpenSSL < 1.1.0 causing invalid certifcates being treated as valid 2025-05-21 10:50:12 +02:00
type.cpp Type: Simplify sort by load dependencies algorithm 2024-09-20 16:18:12 +02:00
type.hpp Type: Simplify sort by load dependencies algorithm 2024-09-20 16:18:12 +02:00
typetype-script.cpp Fix file endings 2023-05-17 18:05:13 +02:00
unix.hpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
unixsocket.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
unixsocket.hpp Quality: Mark NetworkStream, TcpSocket & UnixSocket classes as deprecated 2019-05-29 14:17:36 +02:00
utility.cpp Ensure consistent mktime() DST behavior across different implementations 2025-04-28 13:38:55 +02:00
utility.hpp Ensure consistent mktime() DST behavior across different implementations 2025-04-28 13:38:55 +02:00
value-operators.cpp Use simplified if conditions where applicable 2023-01-26 09:06:20 +01:00
value.cpp Value: Add a specialized rvalue reference of Get() 2025-03-07 10:16:31 +01:00
value.hpp Value: Add a specialized rvalue reference of Get() 2025-03-07 10:16:31 +01:00
wait-group.cpp Add IsLockable method to WaitGroup 2025-06-13 14:48:07 +02:00
wait-group.hpp Add IsLockable method to WaitGroup 2025-06-13 14:48:07 +02:00
win32.hpp Drop Windows VISTA from the supported platform 2025-05-28 09:39:03 +02:00
windowseventloglogger-provider.mc Add WindowsEventLogLogger 2021-06-21 15:15:54 +02:00
windowseventloglogger.cpp Write early log messages to the Windows Event Log 2021-06-21 15:15:54 +02:00
windowseventloglogger.hpp Write early log messages to the Windows Event Log 2021-06-21 15:15:54 +02:00
windowseventloglogger.ti Add WindowsEventLogLogger 2021-06-21 15:15:54 +02:00
workqueue.cpp Use Timer::Create() instead of new Timer() 2023-04-04 10:35:20 +02:00
workqueue.hpp WorkQueue#ParallelFor(): allocate lambda once per thread, not once per item 2022-11-30 11:10:24 +01:00