-
Notifications
You must be signed in to change notification settings - Fork 54
Closed
Labels
Description
Describe the bug
When a tome is performing an IO blocking operation like: sleeping, or making a network connection it can prevent other tomes from sending output back to tavern.
This only seems to affect tomes that finish quickly (likely within the time between claim_task and report.)
"fast" Tomes that have had this issue:
Get envShell executecmd:idProcess listmatch:*
/realm/implants/imix/src/agent.rs:78
/*
* Callback once using the configured client to claim new tasks and report available output.
*/
pub async fn callback(&mut self) -> Result<()> {
let transport = GRPC::new(self.cfg.callback_uri.clone(), self.cfg.proxy_uri.clone())?;
self.claim_tasks(transport.clone()).await?;
self.report(transport.clone()).await?;
Ok(())
}To Reproduce
- Create an IO blocking tome:
def main():
time.sleep(999999)
main()- Import it to tavern - I temporarily replaced
realm/tavern/tomes/example/main.eldritchwith the above and the start tavern. - Run a "fast" tome to make sure it works
- Run the IO blocking tome
- Run a "fast" tome again and see how it stays in the
Queuedstate
- Run a slow tome and see that it finishes as expceted
Expected behavior
Tomes should never interfere with each other. Even if a tome is infinitely blocking other tomes should be able to complete.
Reactions are currently unavailable