Mechanizm stary jak systemy kolejkowe, który przy grafach agentowych wraca w nowym przebraniu — i bez którego graf potrafi zatrzymać się w sposób niewidoczny dla żadnego monitoringu opartego na błędach.
Czym jest dzierżawa zadania
Sposób przydzielania pracy, w którym wykonawca nie zajmuje zadania na stałe, tylko na określony czas, i musi ten czas odnawiać. Jeśli przestanie, zadanie wraca do kolejki i może je podjąć ktoś inny.
Problem, który rozwiązuje
Wykonawca zajmuje zadanie i przestaje istnieć — pada proces, kończy się kontener, zrywa połączenie. Zadanie ma status „w toku” i nikt go nie zwolni. Reszta grafu czeka na wynik, który nigdy nie przyjdzie.
Żaden monitoring oparty na błędach tego nie zgłosi, bo błędu nie było. Graf stoi i wygląda, jakby pracował.
Powiązany mechanizm: atomowe zajęcie
Osobna sprawa, choć zwykle wdrażana razem. Wykonawca nie „bierze zadania”, tylko próbuje je zająć w jednej operacji, która albo się powiedzie, albo nie, bez stanu pośredniego. Bez tego dwóch wykonawców może sięgnąć po to samo w tej samej chwili i wykonać je dwukrotnie.
Rozstrzygnięcie musi być po stronie magazynu stanu, nie po stronie agenta. Agent poproszony o sprawdzenie, czy ktoś już to wziął, sprawdzi — a między sprawdzeniem a zajęciem zmieści się drugi agent.
Kiedy jest potrzebna
W przepływie jednościeżkowym problem zwykle nie istnieje, bo nie ma dwóch chętnych. Zaczyna istnieć w momencie, gdy niezależnych wykonawców jest dwóch — i wtedy albo masz mechanizm, albo budujesz go sam.