diff options
author | Kjell Winblad <[email protected]> | 2019-04-18 11:33:56 +0200 |
---|---|---|
committer | Kjell Winblad <[email protected]> | 2019-04-18 13:27:20 +0200 |
commit | 57905f018f7710ce8951bda2dc24cd4f87c8e488 (patch) | |
tree | 1b636412f9583fe48519783e724c746133c7227f /erts/emulator/beam/erl_db.c | |
parent | c4484ca7754a98c0f7d31ab945f1d18881b0d5be (diff) | |
download | otp-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.c | 13 |
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; +} |