aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_db.c
diff options
context:
space:
mode:
authorKjell Winblad <[email protected]>2019-04-18 11:33:56 +0200
committerKjell Winblad <[email protected]>2019-04-18 13:27:20 +0200
commit57905f018f7710ce8951bda2dc24cd4f87c8e488 (patch)
tree1b636412f9583fe48519783e724c746133c7227f /erts/emulator/beam/erl_db.c
parentc4484ca7754a98c0f7d31ab945f1d18881b0d5be (diff)
downloadotp-57905f018f7710ce8951bda2dc24cd4f87c8e488.tar.gz
otp-57905f018f7710ce8951bda2dc24cd4f87c8e488.tar.bz2
otp-57905f018f7710ce8951bda2dc24cd4f87c8e488.zip
Fix broken ETS test case
This commit fixes an ETS test case that tests the decentralized memory counter in tables of type ordered_set with the write_concurrency option turned on. The test case assumed that the memory consumption of the table would only grow monotonically when terms are inserted. However, this was not the case when the emulator was compiled in debug mode as random splits and joins of CA tree nodes could happen. This commit fixes the test case by disabling random splits and joins in the tested table.
Diffstat (limited to 'erts/emulator/beam/erl_db.c')
-rw-r--r--erts/emulator/beam/erl_db.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_db.c b/erts/emulator/beam/erl_db.c
index c0f5c506f4..d24f30f126 100644
--- a/erts/emulator/beam/erl_db.c
+++ b/erts/emulator/beam/erl_db.c
@@ -4573,3 +4573,16 @@ int erts_ets_force_split(Eterm tid, int on)
db_unlock(tb, LCK_WRITE);
return 1;
}
+
+int erts_ets_debug_random_split_join(Eterm tid, int on)
+{
+ DbTable* tb = tid2tab(tid);
+ if (!tb || !IS_CATREE_TABLE(tb->common.type))
+ return 0;
+
+ db_lock(tb, LCK_WRITE);
+ if (!(tb->common.status & DB_DELETE))
+ db_catree_debug_random_split_join(&tb->catree, on);
+ db_unlock(tb, LCK_WRITE);
+ return 1;
+}