Skip to content
Snippets Groups Projects
  1. Jun 13, 2023
  2. May 26, 2023
  3. Apr 26, 2023
  4. Apr 25, 2023
  5. Jan 10, 2023
  6. May 25, 2022
  7. May 09, 2022
  8. Apr 20, 2022
  9. Apr 04, 2022
  10. Mar 31, 2022
  11. Mar 11, 2022
  12. Mar 03, 2022
  13. Feb 17, 2022
  14. Jan 24, 2022
  15. Jan 14, 2022
  16. Jan 10, 2022
  17. Dec 21, 2021
  18. Nov 18, 2021
  19. Nov 08, 2021
  20. Oct 29, 2021
  21. Oct 26, 2021
  22. Oct 25, 2021
  23. Oct 22, 2021
  24. Oct 20, 2021
  25. Oct 08, 2021
  26. Sep 30, 2021
  27. Sep 28, 2021
  28. Sep 21, 2021
  29. Sep 07, 2021
    • Daniel Lyons's avatar
      Fix stability issues in capability service · cfcec469
      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.
      cfcec469
  30. Aug 26, 2021
  31. Aug 25, 2021
  32. Aug 20, 2021
  33. Aug 19, 2021
  34. Aug 09, 2021
Loading