-
Notifications
You must be signed in to change notification settings - Fork 8
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
Get assertion failed #15
Comments
Oh weird — that assertion seems legitimate to me, and hasn't changed in the original benchmark. The only change there is efficient/libcuckoo#161, which appears unrelated. It could of course be a rare bug in the underlying algorithm, hard to say without being able to reproduce. |
Hey 👋 I am running into a similar error while running bustle against my KV store implementation. Using the The same assertion fails without having any deletes or updates on that particular key. The comment on the assertion says in the original implementation:
In my case, This is the output after my improving the assertion output
If my understanding is correct, this could be explained by the presence of duplicated keys in the vector of generate keys. That is, the key at index The documentation for
However the code for generating values does not seem to prevent any kind of duplicate. With additional logging I can see that the I have also been able to remove the error by cleaning the generators.push(std::thread::spawn(move || {
let mut rng: rand::rngs::SmallRng = rand::SeedableRng::from_seed(thread_seed);
let mut keys: Vec<<T::Handle as CollectionHandle>::Key> =
Vec::with_capacity(insert_keys_per_thread as usize);
keys.extend((0..insert_keys_per_thread).map(|_| rng.next_u32().into()));
+ keys.sort();
+ keys.dedup();
+ keys.shuffle(&mut rng);
keys
})); WDYT? |
Oh, interesting — good catch! Yes indeed, I think you're right that especially for large numbers of keys, we need to actually enforce no duplicates. Would love a PR. |
I happened to run into this error running
papaya
under bustle.I cannot reproduce it and I have no idea how it occur because it seems to indicate that
get
returned a value even thoughremove
succeeded on the same thread. I'm not completely familiar with how bustle chooses operations, is it possible that I ran into a rare bug wherebustle
allowed another thread to insert the same key again?The workload did not include any updates or upserts, if that simplifies things.
The text was updated successfully, but these errors were encountered: