LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File 0278-Disregard-locks-that-can-t-be-toggled-in-lcnt_SUITE.patch of Package erlang (Project home:Ledest:erlang:20)

From 6d281624128b5877283df2e91e2c116c3a142f16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org>
Date: Mon, 16 Apr 2018 17:54:57 +0200
Subject: [PATCH] Disregard locks that can't be toggled in lcnt_SUITE

---
 erts/emulator/test/lcnt_SUITE.erl | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/erts/emulator/test/lcnt_SUITE.erl b/erts/emulator/test/lcnt_SUITE.erl
index 4e52c2813c..dfffd662e2 100644
--- a/erts/emulator/test/lcnt_SUITE.erl
+++ b/erts/emulator/test/lcnt_SUITE.erl
@@ -87,8 +87,9 @@ wait_for_empty_lock_list() ->
     wait_for_empty_lock_list(10).
 wait_for_empty_lock_list(Tries) when Tries > 0 ->
     try_flush_cleanup_ops(),
-    case erts_debug:lcnt_collect() of
-        [{duration, _}, {locks, []}] ->
+    [{duration, _}, {locks, Locks}] = erts_debug:lcnt_collect(),
+    case remove_untoggleable_locks(Locks) of
+        [] ->
             ok;
         _ ->
             timer:sleep(50),
@@ -124,7 +125,7 @@ toggle_lock_counting(Config) when is_list(Config) ->
 get_lock_info_for(Categories) when is_list(Categories) ->
     ok = erts_debug:lcnt_control(mask, Categories),
     [{duration, _}, {locks, Locks}] = erts_debug:lcnt_collect(),
-    Locks;
+    remove_untoggleable_locks(Locks);
 
 get_lock_info_for(Category) when is_atom(Category) ->
     get_lock_info_for([Category]).
@@ -178,3 +179,13 @@ registered_db_tables(Config) when is_list(Config) ->
             (_Lock) -> false
         end, DbLocks),
     ok.
+
+%% Not all locks can be toggled on or off due to technical limitations, so we
+%% need to filter them out when checking whether we successfully disabled lock
+%% counting.
+remove_untoggleable_locks([]) ->
+    [];
+remove_untoggleable_locks([{resource_monitors, _, _, _} | T]) ->
+    remove_untoggleable_locks(T);
+remove_untoggleable_locks([H | T]) ->
+    [H | remove_untoggleable_locks(T)].
-- 
2.16.3