Fix deadlock in dictionary cleanup (#20679)
Fix deadlock in dictionary cleanup by using trylock
Stelios Fragkakis committed
Jul 15, 2025 at 16:12 UTC
432e1bb716dee3bb879caa55ca9cff06317e4369
1 file changed
+5
-2
src/libnetdata/dictionary/dictionary.c
+5
-2
@@ -346,8 +346,11 @@ size_t dictionary_destroy_delayed_count(void) {
346
return count;
347
}
348
349
-size_t cleanup_destroyed_dictionaries(bool shutdown __maybe_unused) {
350
- netdata_mutex_lock(&dictionaries_waiting_to_be_destroyed_mutex);
349
+size_t cleanup_destroyed_dictionaries(bool shutdown __maybe_unused)
350
+{
351
+ if (netdata_mutex_trylock(&dictionaries_waiting_to_be_destroyed_mutex) != 0)
352
+ return 0;
353
+
354
if (!dictionaries_waiting_to_be_destroyed) {
355
netdata_mutex_unlock(&dictionaries_waiting_to_be_destroyed_mutex);
356
return 0;