-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Server Programmability
-
Fully Compatible
-
ALL
-
v8.1, v8.0, v7.0, v6.0
-
Programmability 2025-03-31
-
200
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
-
None
The global `gAbortExpiredTransactionsSessionCheckoutTimeout` is a global int. Command setParameter references this int through the `IDLServerParameterWithStorage` type, which effectively wraps the global in a mutex. When the `PeriodicThreadToAbortExpiredTransactions` thread references the global, it is unprotected because it does not go through the `IDLServerParameterWithStorage` type.
Other IDL parameters that can be changed at runtime typically use an Atomic. This means that there's 2 forms of synchronization here (`IDLServerParameterWithStorage`, atomic global) which is not ideal, but I think we can just follow the precedence here considering the changes are not performance sensitive.