{
  "slug": "procrastinate-queueing-and-execution-locks",
  "version": 1,
  "project": "procrastinate",
  "title": "Procrastinate queueing locks and execution locks",
  "description": "Queueing locks reject admission of another matching pending job, while execution locks serialize matching job execution. The two checks govern different stages of the job lifecycle.",
  "config": {
    "design": "architecture-environments-parallel-lanes-aligned-rows-logo-nodes",
    "name": "queueing-and-execution-locks",
    "style": "clean",
    "palette": [
      "#286e7b"
    ],
    "parameters": {
      "lanes": [
        {
          "name": "queueing_lock only",
          "description": "Admission limit"
        },
        {
          "name": "queueing_lock + lock",
          "description": "Admission + execution limit"
        }
      ],
      "nodes": [
        {
          "id": "qtodo",
          "label": "Waiting: todo",
          "description": "At most one matching job",
          "icon": "tabler:list-numbers",
          "lane": "queueing_lock only",
          "row": 0
        },
        {
          "id": "qdoing",
          "label": "Running: doing",
          "description": "Several may run together",
          "icon": "tabler:player-play",
          "lane": "queueing_lock only",
          "row": 1
        },
        {
          "id": "btodo",
          "label": "Waiting: todo",
          "description": "At most one matching job",
          "icon": "tabler:list-numbers",
          "lane": "queueing_lock + lock",
          "row": 0
        },
        {
          "id": "bdoing",
          "label": "Running: doing",
          "description": "At most one matching job",
          "icon": "tabler:player-play",
          "lane": "queueing_lock + lock",
          "row": 1
        }
      ],
      "edges": [
        {
          "from": "qtodo",
          "to": "qdoing"
        },
        {
          "from": "btodo",
          "to": "bdoing"
        }
      ]
    },
    "accessibility": {
      "title": "Procrastinate queueing locks and execution locks",
      "description": "Queueing locks reject admission of another matching pending job, while execution locks serialize matching job execution. The two checks govern different stages of the job lifecycle."
    }
  },
  "files": {
    "svg": {
      "url": "/diagram-sources/procrastinate-queueing-and-execution-locks/v1/diagram.svg",
      "sha256": "4cda29c0d5db7039d3356d33769e007968d9fe198b6be10780c81539fe112aa6"
    },
    "png": {
      "url": "/diagram-sources/procrastinate-queueing-and-execution-locks/v1/diagram.png",
      "sha256": "af6c49aaf6de82e7d2b18d100e598a63fd7b9082468bff421988ae1f92bdcf19"
    }
  }
}
