From c2ec0b2e4980dee3d28134df34b1bc664c7a7cac Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 27 Jun 2014 16:13:24 -0700 Subject: [PATCH] Add a conductor considerations section Add a small section in the conductor docs about the cycling issue and give some resolutions that can be applied as well as link to the better solution which is garbage collection for jobs that are not working out. Also includes some tiny tweaks to other docs. Change-Id: I73e9f8f5a8888eaf967d62723f6ffb45b02887c9 --- doc/source/conductors.rst | 34 ++++++++++++++++++++++++++++- doc/source/img/conductor_cycle.png | Bin 0 -> 36940 bytes doc/source/jobs.rst | 6 ++--- doc/source/workers.rst | 4 ++-- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 doc/source/img/conductor_cycle.png diff --git a/doc/source/conductors.rst b/doc/source/conductors.rst index 4dfa3e33..25eb75c8 100644 --- a/doc/source/conductors.rst +++ b/doc/source/conductors.rst @@ -24,9 +24,41 @@ They are responsible for the following: .. note:: - They are inspired by and have similar responsiblities + They are inspired by and have similar responsibilities as `railroad conductors`_. +Considerations +============== + +Some usage considerations should be used when using a conductor to make sure +it's used in a safe and reliable manner. Eventually we hope to make these +non-issues but for now they are worth mentioning. + +Endless cycling +--------------- + +**What:** Jobs that fail (due to some type of internal error) on one conductor +will be abandoned by that conductor and then another conductor may experience +those same errors and abandon it (and repeat). This will create a job +abandonment cycle that will continue for as long as the job exists in an +claimable state. + +**Example:** + +.. image:: img/conductor_cycle.png + :scale: 70% + :alt: Conductor cycling + +**Alleviate by:** + +#. Forcefully delete jobs that have been failing continuously after a given + number of conductor attempts. This can be either done manually or + automatically via scripts (or other associated monitoring). +#. Resolve the internal error's cause (storage backend failure, other...). +#. Help implement `jobboard garbage binning`_. + +.. _jobboard garbage binning: https://blueprints.launchpad.net/taskflow/+spec/jobboard-garbage-bin + Interfaces ========== diff --git a/doc/source/img/conductor_cycle.png b/doc/source/img/conductor_cycle.png new file mode 100644 index 0000000000000000000000000000000000000000..b09d71b4ccfe1f92df25eaf477db80ec5773502d GIT binary patch literal 36940 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ě@VNwAkgIm4ZE^h_$C~DS7KB0{zYE;977%D74rBp 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 transports). +connected via `amqp`_ (or other supported `kombu`_ transports). .. note:: @@ -18,6 +17,7 @@ connected via `amqp`_ (or other supported `kombu production ready. .. _blueprint page: https://blueprints.launchpad.net/taskflow?searchtext=wbe +.. _kombu: http://kombu.readthedocs.org/ Terminology -----------