From 13214aae3697d27d27d5c628997fd4a92b497f89 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson Date: Thu, 25 Oct 2018 13:35:12 +0200 Subject: erts: Join empty base nodes in catree The original implementation did not do this due to fear of bad performance. But we think the negative effect of "leaking" empty base nodes is more important to fix. To get the bad performance a special kind of access patterns is needed where base nodes are frequently emptied and then repopulated soon again. ets_SUITE:throughput_benchmark for example did not show any negative effect from this commit at all. --- lib/stdlib/test/ets_SUITE.erl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/stdlib/test/ets_SUITE.erl') diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl index 367c7533b4..74a4f47fa9 100644 --- a/lib/stdlib/test/ets_SUITE.erl +++ b/lib/stdlib/test/ets_SUITE.erl @@ -7393,13 +7393,14 @@ stimulate_contention(Tid) -> RState = unique_rand_start(KeyRange, Seed), stim_inserter_loop(T, RState, Num), Num = ets:info(T, size), - erts_debug:set_internal_state(ets_force_split, {T, false}), ets:match_delete(T, {'$1','$1','$1'}), + 0 = ets:info(T, size), + erts_debug:set_internal_state(ets_force_split, {T, false}), case ets:info(T,stats) of {0, _, _} -> - io:format("Houston, we got a testability problem.\n" - "Someone seems to have implemented join-on-delete\n", []), - ct:fail("Join on delete?"); + io:format("No routing nodes in table?\n" + "Debug feature 'ets_force_split' does not seem to work.\n", []), + ct:fail("No ets_force_split?"); Stats -> io:format("stimulated ordered_set: ~p\n", [Stats]) end. -- cgit v1.2.3