Crates.io | qwal |
lib.rs | qwal |
version | 0.1.0 |
source | src |
created_at | 2024-04-10 09:25:32.278995 |
updated_at | 2024-04-10 09:25:32.278995 |
description | A disk baced Write Ahead Log that can functuin as a FIFO queue |
homepage | |
repository | |
max_upload_size | |
id | 1203361 |
size | 110,838 |
Queue like disk backed WAL
Pronouced Quál
- from the german word for agony
- because it is.
uses the tokio types
uses async-std types
The basic concept is simple, qwal
supports exactly 4 operations:
push
Appends a new entry to the end of the queue, returning its index.
pop
Reads the next index from the queue, returning the previous entry and its index if one exists, or none if the queue is empty.
ack
Acknowledges processing of an entry, confirming it is enqueued.
revert
Reverts back to the last acknowledged entry in the queue - will clear/drain any entry since that point.
push
Writes the data to disk and performs a fsync. Also a seek
might be executed if a pop
was
performed since the last push
.
pop
Reads the data from disk. Also a seek
is performed if a push
since the alst reads
.
ack
No disk operations are performed, ack
's are persisted either during a push
operation or
as part of the shutdown sequence.
qwal
provides all limits as soft limits, meaning they are considered reached after an operation
has exceeded them, and not before.
chunk_size
To allow easier reclamation of space the WAL is stored in multiple chunks. The chunk size
defines the limit. A chunk is considered full once a push
makes it exceed the chunk_size
max_chunks
The soft limit of of chunks that can be active and open at the same time. The WAL is considered full when
max_chunks
+ 1 would need to be created.