-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Assertion failure while running multi-thread concurrent inserts workload: trunk_split_leaf(): "(num_leaves + trunk_num_pivot_keys(spl, parent) <= spl->cfg.max_pivot_keys)" #467
Comments
gapisback
added a commit
that referenced
this issue
Oct 28, 2022
@ajhconway - Update of re-running all test cases in this new test with different parameters:
Stack at this point of failure when running just this one test case under gdb is:
This shows that there is no gross instability, but there may be lurking timing- / concurrency-related issues which would only surface upon multiple repeated re-runs, with different combinations of |
gapisback
added a commit
that referenced
this issue
Oct 28, 2022
Rework large_inserts_bugs_stress test to generate assertion failure. This commit slightly enhances do_inserts_n_threads() in this test case to cajole an assertion seen from BTree split code, or thereabouts: OS-pid=1839020, Thread-ID=5, Assertion failed at src/trunk.c:5521:trunk_split_leaf(): "(num_leaves + trunk_num_pivot_keys(spl, parent) <= spl->cfg.max_pivot_keys)". num_leaves=6, trunk_num_pivot_keys()=9, cfg.max_pivot_keys=14 The changes are: - Provide options to use same / diff start-key for each thread. - Increase TEST_KEY_SIZE to 30 and TEST_VALUE_SIZE to 256 bytes. - Provide an option to either generate sequential values or to use fully-packed values for each key. The latter seems to be the condition that triggers this assertion. Many diff variations of test cases are provided in this one large framework. See large_inserts_bugs_stress_test --list for names of individual test cases.
gapisback
added a commit
that referenced
this issue
Dec 7, 2022
Rework large_inserts_bugs_stress test to generate assertion failure. This commit slightly enhances do_inserts_n_threads() in this test case to cajole an assertion seen from BTree split code, or thereabouts: OS-pid=1839020, Thread-ID=5, Assertion failed at src/trunk.c:5521:trunk_split_leaf(): "(num_leaves + trunk_num_pivot_keys(spl, parent) <= spl->cfg.max_pivot_keys)". num_leaves=6, trunk_num_pivot_keys()=9, cfg.max_pivot_keys=14 The changes are: - Provide options to use same / diff start-key for each thread. - Increase TEST_KEY_SIZE to 30 and TEST_VALUE_SIZE to 256 bytes. - Provide an option to either generate sequential values or to use fully-packed values for each key. The latter seems to be the condition that triggers this assertion. Many diff variations of test cases are provided in this one large framework. See large_inserts_bugs_stress_test --list for names of individual test cases.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In dev branch
agurajada/467-large-inserts-trunk-assert-bug
off of /main, a new collection of multi-threaded heavy-inserts workload is being developed. One of the cases runs into this assertion:NOTE: Before you can repro this you need to pull-in in-flight fix for issue #458; Otherwise you will run into that assertion first. The dev-branch where this repro has been constructed,
agurajada/467-large-inserts-trunk-assert-bug
, pulls-in that commit already.This test case was synthesized to reliably repro this problem that was seen during manual testing and test-dev.
The key-points needed for the repro are:
--num-inserts
arg. Works with upwards of 1-2 Million inserts / thread--num-threads 4
also.See this internal slack thread where this issue was aired out on a private dev branch first, before repro'ing this off of /main.
The other thing about this test is this part of the configuration:
I was trying with 64MiB cache and that some times works. Often times, we will run into unable to find a free buffer error from clockcache.c, ... so to avoid those noise errors, I settled on 256MiB cache, which should be small enough to induce lots of IOs to disk.
The text was updated successfully, but these errors were encountered: