diff options
author | John Högberg <[email protected]> | 2018-02-09 10:24:43 +0100 |
---|---|---|
committer | John Högberg <[email protected]> | 2018-02-12 13:32:11 +0100 |
commit | ab965710d014912cbd3c4ef8f9c3acc0dffa1d30 (patch) | |
tree | 6112ec8183b7daf0f70dbd5e6bf976d03bc1a320 /lib | |
parent | 9be186620d86b60791f20ddf5d051c63d576e737 (diff) | |
download | otp-ab965710d014912cbd3c4ef8f9c3acc0dffa1d30.tar.gz otp-ab965710d014912cbd3c4ef8f9c3acc0dffa1d30.tar.bz2 otp-ab965710d014912cbd3c4ef8f9c3acc0dffa1d30.zip |
Automatically start lcnt server on first use
lcnt:collect is documented as implicitly starting the lcnt server
but didn't do so prior to this commit. I've decided to extend this
behavior to all operations as the overhead is negligible and it's
a bit more convenient to use.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tools/src/lcnt.erl | 7 | ||||
-rw-r--r-- | lib/tools/test/lcnt_SUITE.erl | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/lib/tools/src/lcnt.erl b/lib/tools/src/lcnt.erl index 139b3d8a4a..20b031a7ad 100644 --- a/lib/tools/src/lcnt.erl +++ b/lib/tools/src/lcnt.erl @@ -218,9 +218,11 @@ raw() -> call(raw). set(Option, Value) -> call({set, Option, Value}). set({Option, Value}) -> call({set, Option, Value}). save(Filename) -> call({save, Filename}). -load(Filename) -> ok = start_internal(), call({load, Filename}). +load(Filename) -> call({load, Filename}). -call(Msg) -> gen_server:call(?MODULE, Msg, infinity). +call(Msg) -> + ok = start_internal(), + gen_server:call(?MODULE, Msg, infinity). %% -------------------------------------------------------------------- %% %% @@ -237,7 +239,6 @@ apply(Fun) when is_function(Fun) -> lcnt:apply(Fun, []). apply(Fun, As) when is_function(Fun) -> - ok = start_internal(), Opt = lcnt:rt_opt({copy_save, true}), lcnt:clear(), Res = erlang:apply(Fun, As), diff --git a/lib/tools/test/lcnt_SUITE.erl b/lib/tools/test/lcnt_SUITE.erl index 146c915087..4a92abb5c8 100644 --- a/lib/tools/test/lcnt_SUITE.erl +++ b/lib/tools/test/lcnt_SUITE.erl @@ -30,6 +30,7 @@ t_conflicts/1, t_locations/1, t_swap_keys/1, + t_implicit_start/1, smoke_lcnt/1]). init_per_testcase(_Case, Config) -> @@ -44,7 +45,7 @@ suite() -> {timetrap,{minutes,4}}]. all() -> - [t_load, t_conflicts, t_locations, t_swap_keys, + [t_load, t_conflicts, t_locations, t_swap_keys, t_implicit_start, smoke_lcnt]. %%---------------------------------------------------------------------- @@ -149,6 +150,11 @@ t_swap_keys_file([File|Files]) -> ok = lcnt:stop(), t_swap_keys_file(Files). +%% Prior to OTP-14913 this would crash with 'noproc' as the lcnt server hadn't +%% been started yet. +t_implicit_start(Config) when is_list(Config) -> + ok = lcnt:conflicts(). + %% Simple smoke test of actual lock-counting, if running on %% a run-time with lock-counting enabled. smoke_lcnt(Config) -> |