From b1507e2c89fe4dec76417c87e2cb72ce71cfa0d0 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 9 Apr 2026 17:24:17 -0700 Subject: [PATCH 1/3] Add TASK_QUEUE_KIND_INTERNAL for server-internal task queues Co-Authored-By: Claude Opus 4.6 --- temporal/api/enums/v1/task_queue.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index b54f8f18b..d506ffb7f 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -31,6 +31,10 @@ enum TaskQueueKind { // // Sticky queues are only for workflow tasks. There are no sticky task queues for activities. TASK_QUEUE_KIND_STICKY = 2; + // An internal task queue is used for server-to-worker communication (e.g. activity + // cancellations via worker commands). These queues are per-worker and only exist for the + // lifetime of the worker process. + TASK_QUEUE_KIND_INTERNAL = 3; } enum TaskQueueType { From 11dd11491d7f516e5006834e9b34451be5626e38 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 9 Apr 2026 17:27:20 -0700 Subject: [PATCH 2/3] Rename to TASK_QUEUE_KIND_WORKER_COMMANDS Co-Authored-By: Claude Opus 4.6 --- temporal/api/enums/v1/task_queue.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index d506ffb7f..87102aa10 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -31,10 +31,10 @@ enum TaskQueueKind { // // Sticky queues are only for workflow tasks. There are no sticky task queues for activities. TASK_QUEUE_KIND_STICKY = 2; - // An internal task queue is used for server-to-worker communication (e.g. activity - // cancellations via worker commands). These queues are per-worker and only exist for the - // lifetime of the worker process. - TASK_QUEUE_KIND_INTERNAL = 3; + // A worker-commands task queue is used for server-to-worker communication (e.g. activity + // cancellations). These queues are per-worker and only exist for the lifetime of the worker + // process. + TASK_QUEUE_KIND_WORKER_COMMANDS = 3; } enum TaskQueueType { From 0193c0dd45e572711f404ddebcfa32fdb46fe179 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 9 Apr 2026 17:39:04 -0700 Subject: [PATCH 3/3] Regenerate OpenAPI files for TASK_QUEUE_KIND_WORKER_COMMANDS Co-Authored-By: Claude Opus 4.6 --- openapi/openapiv2.json | 15 +++++++++------ openapi/openapiv3.yaml | 3 +++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index bf8692b66..7715ad6a7 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -1895,14 +1895,15 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess.", "in": "query", "required": false, "type": "string", "enum": [ "TASK_QUEUE_KIND_UNSPECIFIED", "TASK_QUEUE_KIND_NORMAL", - "TASK_QUEUE_KIND_STICKY" + "TASK_QUEUE_KIND_STICKY", + "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED" }, @@ -6632,14 +6633,15 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess.", "in": "query", "required": false, "type": "string", "enum": [ "TASK_QUEUE_KIND_UNSPECIFIED", "TASK_QUEUE_KIND_NORMAL", - "TASK_QUEUE_KIND_STICKY" + "TASK_QUEUE_KIND_STICKY", + "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED" }, @@ -16739,10 +16741,11 @@ "enum": [ "TASK_QUEUE_KIND_UNSPECIFIED", "TASK_QUEUE_KIND_NORMAL", - "TASK_QUEUE_KIND_STICKY" + "TASK_QUEUE_KIND_STICKY", + "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED", - "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities." + "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess." }, "v1TaskQueueReachability": { "type": "object", diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index c4ee8a0b6..a92f63a1e 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -1812,6 +1812,7 @@ paths: - TASK_QUEUE_KIND_UNSPECIFIED - TASK_QUEUE_KIND_NORMAL - TASK_QUEUE_KIND_STICKY + - TASK_QUEUE_KIND_WORKER_COMMANDS type: string format: enum - name: taskQueue.normalName @@ -6046,6 +6047,7 @@ paths: - TASK_QUEUE_KIND_UNSPECIFIED - TASK_QUEUE_KIND_NORMAL - TASK_QUEUE_KIND_STICKY + - TASK_QUEUE_KIND_WORKER_COMMANDS type: string format: enum - name: taskQueue.normalName @@ -14759,6 +14761,7 @@ components: - TASK_QUEUE_KIND_UNSPECIFIED - TASK_QUEUE_KIND_NORMAL - TASK_QUEUE_KIND_STICKY + - TASK_QUEUE_KIND_WORKER_COMMANDS type: string description: 'Default: TASK_QUEUE_KIND_NORMAL.' format: enum