Skip to content

fix: race condition in on_shutdown

Georgy Moshkin requested to merge 120-race-condition-in-on_shutdown into master

Tarantool remote requests are handled in a IProto thread, and on_shutdown triggers are handled in the TX thread.

During shutdown we send a request to the leader, which introduces a race condition in case we are the leader. If iproto thread shuts down before the request is sent, it will never be handled.

The fix is simple: in case we are the leader during shutdown, don't send the request, instead handle the request directly in the TX thread.

The bug could be reproduced by adding a ::tarantool::fiber::sleep(std::time::Duration::from_secs(1)) in the beginning of the on_shutdown handler.

Closes #120 (closed)

Edited by Georgy Moshkin

Merge request reports