mirror of
https://git.asonix.dog/asonix/background-jobs.git
synced 2024-11-21 19:40:59 +00:00
Write up TODO
This commit is contained in:
parent
dbb8144673
commit
02406de28d
1 changed files with 71 additions and 0 deletions
71
TODO
Normal file
71
TODO
Normal file
|
@ -0,0 +1,71 @@
|
|||
1.
|
||||
Gracefull Shutdown
|
||||
|
||||
2.
|
||||
base port is return port
|
||||
base port + 1 is port mapping port
|
||||
base port + 2 is first queue port
|
||||
|
||||
server creates port mapping ON START, and moves jobs started more than 24 hours prior to now into QUEUE from RUNNING
|
||||
|
||||
server supplies an infinite push of port mapping on base_port + 1
|
||||
worker gets port mapping from server using pull on base_port + 1
|
||||
|
||||
QueuePort bucket
|
||||
key: PortNum
|
||||
Value: QueueName
|
||||
|
||||
get access:
|
||||
Cursor iterates over Key/Value pairs
|
||||
|
||||
set access:
|
||||
Ports are never overwritten, but new ports can be added
|
||||
|
||||
interaction:
|
||||
base_port: usize,
|
||||
queues: BTreeSet<String>
|
||||
|
||||
queue_port_bucket = store.bucket();
|
||||
|
||||
store = store.write_lock();
|
||||
|
||||
let read_txn = store.read_txn();
|
||||
let write_txn = store.write_txn();
|
||||
|
||||
let queue_map = lock(write_txn, |write_txn| {
|
||||
let cursor = read_txn.cursor();
|
||||
|
||||
let (unused_queues, queue_map) = cursor
|
||||
.iter()
|
||||
.fold(Ok((queues, BTreeMap::new())), |acc, (port, queue)| {
|
||||
acc.and_then(|(mut queues, mut bm)| {
|
||||
port = parse_port(port)?;
|
||||
queue = parse_queue(queue)?;
|
||||
|
||||
queues.remove(queue);
|
||||
bm.insert(queue, port);
|
||||
|
||||
Ok((queues, bm))
|
||||
})
|
||||
})?;
|
||||
|
||||
let start_port = queue_map.iter().max_by(|(_, v)| v).unwrap_or(base_port + 2);
|
||||
|
||||
let (queue_map, _) = unused_queues
|
||||
.into_iter()
|
||||
.fold(Ok((queue_map, start_port)), |acc, queue_name| {
|
||||
acc.and_then(|(mut bm, port_num)| {
|
||||
write_txn.set(port_num, queue_name)?;
|
||||
bm.insert(queue_name, port_num);
|
||||
|
||||
Ok((bm, port_num + 1))
|
||||
})
|
||||
})?;
|
||||
|
||||
Ok(queue_map)
|
||||
})?;
|
||||
|
||||
write_txn.commit();
|
||||
read_txn.commit();
|
||||
|
||||
Ok(queue_map)
|
Loading…
Reference in a new issue