- Jun 13, 2023
-
-
Charlotte Hausman authored
-
- May 26, 2023
-
-
- Apr 26, 2023
-
-
- Apr 25, 2023
-
-
Daniel Lyons authored
-
- Jan 10, 2023
-
-
Nathan Bockisch authored
-
- May 25, 2022
-
-
Charlotte Hausman authored
-
- May 09, 2022
-
-
Nathan Bockisch authored
-
- Apr 20, 2022
-
-
Charlotte Hausman authored
-
- Apr 04, 2022
-
-
Daniel Lyons authored
-
- Mar 31, 2022
-
-
Charlotte Hausman authored
-
- Mar 11, 2022
-
-
Daniel Lyons authored
-
- Mar 03, 2022
-
- Feb 17, 2022
-
-
Janet Goldstein authored
-
- Jan 24, 2022
-
-
Andrew Kapuscinski authored
-
- Jan 14, 2022
-
-
Nathan Hertz authored
-
- Jan 10, 2022
-
-
Nathan Hertz authored
-
- Dec 21, 2021
-
-
Nathan Hertz authored
-
- Nov 18, 2021
-
-
Janet Goldstein authored
-
Janet Goldstein authored
-
- Nov 08, 2021
-
-
Nathan Hertz authored
-
- Oct 29, 2021
-
-
Nathan Hertz authored
-
Andrew Kapuscinski authored
-
- Oct 26, 2021
-
-
Nathan Hertz authored
-
- Oct 25, 2021
-
-
Nathan Hertz authored
-
- Oct 22, 2021
-
-
Janet Goldstein authored
-
- Oct 20, 2021
-
-
Andrew Kapuscinski authored
-
-
Andrew Kapuscinski authored
-
- Oct 08, 2021
-
-
Janet Goldstein authored
-
- Sep 30, 2021
-
-
Janet Goldstein authored
-
Charlotte Hausman authored
-
- Sep 28, 2021
-
-
Janet Goldstein authored
-
- Sep 21, 2021
-
-
- Sep 07, 2021
-
-
Daniel Lyons authored
This is two lines of thought combined into one merge: 1. AMQP clients should either receive messages or send messages 2. Capability queues are based on a database-backed queue manager rather than keeping state in-memory Most of the work relating to the first idea comes in refactoring the Router to not be a message sender. Many places in the code now either instantiate a MessageSender instead, or use both a Router and a MessageSender if they truly needed both functionalities. The previous implementation appears to have caused messages to arrive out of order because facilities like `wf_monitor` that only send messages were also trying to receive messages, and either not handling them at all or putting them into a buffer of some kind to be dropped on the floor when the process ended. The work relating to the second idea changes the way that steps are processed in the capability service and eliminates the capability engine concept. Now when PrepareAndRunWorkflow steps are reached, the capability is simply moved into the Waiting state and the queue manager is signaled. Whenever the queue manager is awakened, it checks to see if any queues have slots available and requests waiting. If they do, the number of available slots are used to get requests and start executing them. When an execution exits the cluster, the queue manager is signaled again, so the process continues until all the jobs are processed. As a stability benefit, we check this on startup as well.
-
- Aug 26, 2021
-
-
Charlotte Hausman authored
-
Charlotte Hausman authored
-
- Aug 25, 2021
-
-
Janet Goldstein authored
-
- Aug 20, 2021
-
-
Daniel Lyons authored
-
- Aug 19, 2021
-
-
- Aug 09, 2021
-
-
Nathan Hertz authored
-