RingFile
The purpose of this tool is to help debug deadlock problems, that only occur under high-performance scenarios. Because writing log to disk will slow down execution, which makes deadlock hidden without racing conditions met.
This crate provides a ringbuffer like file, in order to store byte content.
Already integrated into captain-log as LogRingFile sink.
The content is kept in memory when written, when offset rewinds, new content will overwrite old content, So that memory consumption is limited to buf_size. Once deadlock encountered and process hangs, no more message will be written, you can safely dump the content to disk.
Example:
use RingFile;
let mut file = new;
file.write_all.expect;
file.dump.expect;