-
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
Debug assert "filter->addr != 0" trips in trunk_flush_into_bundle() -> trunk_inc_filter(): test_issue_458_mini_destroy_unused_debug_assert test case #570
Comments
Hi @gapisback , I also ran into the issue of this message while inserting 20M kv pairs (each 16 bytes large) in a single thread. Any idea how to address this? Thanks :) P.S. If I increase the size of kv to 128 bytes (8 bytes key and 120 bytes value), this issue could not be reproduced. |
Thanks for reporting this @chrisxu333 -- I'm afraid that I don't have much more to add. In your failing repro situation: There were some set of known instabilities around trunk bundle mgmt, and at some point (~ 12 months ago) these were discussed internally with Splinter dev engineers. I have since moved on from that project and this repo, so am not able to provide any meaningful suggestions. Cc:'ing @rtjohnso who is the gate-keepeer for this repo now and may have been doing some work to stabilize some of these areas. |
@gapisback Thanks for your kindly reply and explanation. Regarding the key and value size for the failing scenario, I used 8 byte key and 8 byte value. Moreover, I also opened a new issue about another likely deadlock bug regarding O_DIRECT that I encountered (#620). It would be really helpful if you or whoever is working on this take a look at your convenience :) Thank you! |
I believe I've seen the issue with small kv-pairs before. It is due to an estimate of the maximum number of items that might be in a trunk node: Line 9632 in 9359c9a
It assumes kv-pairs are at least 32 bytes. You could try changing the divisor from 32 to 16, or you could just pad out your kv-pairs to 32 bytes. This is a long-term item to fix due to limitations in other parts of the code. |
The test case
splinterdb_stress_test.c:test_issue_458_mini_destroy_unused_debug_assert
is currently commented out.It was added as part of commit SHA f3c92ef to fix issue #545 (under PR #561). The test case is a simple workload of a single client loading 100M short k/v pairs.
Repro has been provided as part of this branch: agurajada/570-filter-addr-ne-0-assert
When enabled, that test runs into the following assertion. Repro'ed on
/main
@ SHA b2245ac:A possibly related issue that should be investigated as part of this item is that while the workload is running, we see these messages:
These messages also do appear with release binary, but the test case seems to succeed. (Of course, it's a debug assert that is tripping.)
Historical note: This specific assertion has been reported and is mixed-up in the annals of issue #545 (bug in routing_filter_prefetch()). That bug has been fixed separately, so I'm peeling off this different failure to its own issue.
The text was updated successfully, but these errors were encountered: