Skip to content
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

Jepsen: assertion failure in vfs.c #541

Closed
cole-miller opened this issue Nov 22, 2023 · 1 comment · Fixed by canonical/raft#488 or #545
Closed

Jepsen: assertion failure in vfs.c #541

cole-miller opened this issue Nov 22, 2023 · 1 comment · Fixed by canonical/raft#488 or #545
Labels
Bug Confirmed to be a bug

Comments

@cole-miller
Copy link
Contributor

This Jepsen job:

https://github.com/canonical/jepsen.dqlite/actions/runs/6950544166/job/18910920901

Tripped this assertion:

dqlite/src/vfs.c

Line 2343 in 09108b8

assert(shm->shared[i] == 0);

@cole-miller cole-miller added the Bug Confirmed to be a bug label Nov 22, 2023
@freeekanayaka
Copy link
Contributor

This should be due to the fact that if the process is paused the kernel will still accumulate incoming data in the tcp buffers of open connections, when the process resumes the uv loop might consume that data immediately, without given the monitor_cb function in server.c the chance to run as soon as leadership is lost (because monitor_cb is uv_prepare_t handle callback).

Trying to fire monitor_cb as soon as leadership is lost should fix it, similarly to what was done here cowsql/cowsql#12.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Confirmed to be a bug
Projects
None yet
2 participants