Выдать свободное задание, пока первое уже занято

Ответы получены от MySQL через X Protocol. Созданные программой учебные объекты после чтения удалены.

Наблюдаемый результат программы
НаблюдениеРезультат
Задание worker-A1
Задание worker-B2
Владелец задания 1worker-A
Владелец задания 2worker-B
Задание 3 осталосьpending
Строки и дополнительные наблюдения
{
    "connection_ids": [
        86,
        87
    ],
    "held_candidate": {
        "id": 1,
        "task": "preview_LED"
    },
    "available_candidates": [
        {
            "id": 2,
            "task": "preview_BOX"
        }
    ],
    "saved_rows": [
        {
            "id": 1,
            "status": "processing",
            "claimed_by": "worker-A"
        },
        {
            "id": 2,
            "status": "processing",
            "claimed_by": "worker-B"
        },
        {
            "id": 3,
            "status": "pending",
            "claimed_by": null
        }
    ]
}

Полный JSON результата, включая реальные идентификаторы, сохранён рядом в result.json.