diff --git a/docs/deployment.md b/docs/deployment.md index ac831d5b26c..45b3e1d6715 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -268,6 +268,33 @@ command-level Compose examples in the [Official Image + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose) section. +### Upgrading to Server 3.10.0 {#native-schema-upgrade-3-10} + +Native 3.10.0 requires an explicit additive schema upgrade from 3.9.x: + +| Backend | Schema transition from 3.9.x | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +Stop every Server replica, keep the database running, and back up the database +and external-payload storage. Select the 3.10.0 image and run its +`schema-upgrade` once before restarting every replica on the same version. +Check readiness, reported version and worker registration. Startup does not +upgrade an old schema automatically. Older versions require the intervening +steps too. The [published 3.10.0 upgrade instructions](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback) +provide the Compose commands. Worker protocol 1.20 and control plane 2 are unchanged. + +The nullable schedule summary is not backfilled from legacy action arrays. +Existing schedules remain unavailable until an owning transition records a +valid summary; see [dispatch-summary authority](./polyglot/server-api-reference.md#schedule-dispatch-summary). +MySQL and MariaDB resume interrupted upgrades; SQLite and PostgreSQL apply the +step transactionally. Rollback to an older binary requires restoring the +pre-upgrade database and storage backup. Do not run an older binary against +the newer schema. + ### Upgrading to Server 3.9.2 {#native-schema-upgrade-3-9} Upgrading from native 3.8.x or earlier requires a schema upgrade on every diff --git a/docs/polyglot/server-api-reference.md b/docs/polyglot/server-api-reference.md index 6dc5d4101a6..9ba5b802165 100644 --- a/docs/polyglot/server-api-reference.md +++ b/docs/polyglot/server-api-reference.md @@ -849,6 +849,37 @@ Search attribute names and types are part of the namespace search contract. Avoid using high-cardinality attributes for operator dashboards or metric labels. +### Schedule dispatch-summary authority {#schedule-dispatch-summary} + +Published native Server 3.10.0 adds a complete `dispatch_summary` with +`version: 1`, `state`, `last_outcome` and `buffered_actions_count` to schedule +list items and describe responses. Older producers omit it; an empty list +does not establish support. Inspect the complete field rather than infer +support from a version. The [tagged schedule contract](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules) +defines the exact shape. + +| State | Last outcome | Current buffer count | +|---|---|---| +| `known` | Complete recorded dispatch | Integer from 0 through 9007199254740991 | +| `never` | `null`, established only by new creation | `0` | +| `unavailable` | `null`, including legacy or invalid stored authority | `null` | + +Known outcomes are `started`, `buffered`, `skipped` or `failed`, with the +complete outcome ID, recording time, reason and applicable workflow/run +identities. The current buffer count is separate: a later drain can leave a +recorded buffered outcome with count zero. The latest workflow's execution +status is also separate; a Started dispatch may point to a workflow that later Failed. + +Each summary is bounded to 4096 serialized UTF-8 bytes. A transition that +cannot record the complete contract stores unavailable authority, without +truncating its reason or changing the scheduling operation. Absent, null, +partial or unsupported data is not v1 authority. A valid unavailable summary +overrides legacy evidence. A later describe owns the whole summary, including +absence or null; never merge it field by field with an older list result. +Schema upgrades do not reconstruct authority from legacy arrays. The bounded +list-page read needs no per-row describe requests. This is producer behavior; +Waterline's published consumer and visible-refresh acceptance remain separately qualified. + ### Schedule list filters and continuation {#schedule-list-filters} `GET /api/schedules` reads the request namespace. The [normal published PHP Server qualification](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227) verifies combined filters and continuation. Send the following query parameters, with normal URL encoding: diff --git a/docs/polyglot/server.md b/docs/polyglot/server.md index d8138164671..9810a3c3c16 100644 --- a/docs/polyglot/server.md +++ b/docs/polyglot/server.md @@ -175,10 +175,10 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ The stack is the native Server and MySQL. Compose refuses to start until `DW_AUTH_TOKEN` is set. The [deployment guide](/docs/deployment#single-node-production) covers the production env file, backups and upgrades. -Upgrades from native 3.8.x or earlier to 3.9.2 require the -[explicit schema upgrade](../deployment.md#native-schema-upgrade-3-9) before restart. -From 3.9.0 or 3.9.1, no additional schema step is needed; follow the same -backup, restart and readiness checks. +Upgrading to native 3.10.0, including from 3.9.x, requires the +[explicit schema upgrade](../deployment.md#native-schema-upgrade-3-10) before restart. +Older versions also need their intervening schema steps. Back up both the +database and external-payload storage; rollback restores that backup. ### Ports diff --git a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md index c03f02df5aa..c4fe271f8de 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md @@ -195,6 +195,21 @@ Upgrade-Reihenfolge: Der native Server prüft sein Schema beim Start. Patch-Veröffentlichungen innerhalb einer nativen Minor-Linie behalten das Schema bei, daher genügt ein Image-Wechsel. Eine Veröffentlichung, deren Hinweise eine Schemaänderung ankündigen, benötigt zusätzlich den Befehl `schema-upgrade` des Images, ausgeführt nach einer Datenbanksicherung, während alle Server gestoppt sind. Die Server-Referenz enthält aktuelle Compose-Befehlsbeispiele unter [Offizielles Image + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose). +### Upgrade auf Server 3.10.0 {#native-schema-upgrade-3-10} + +Native 3.10.0 benötigt von 3.9.x ein explizites additives Schema-Upgrade. + +| Backend | Schemaübergang von 3.9.x | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +Stoppen Sie alle Server-Replikate, lassen Sie die Datenbank laufen und sichern Sie Datenbank sowie externen Payload-Speicher. Wählen Sie das 3.10.0-Image und führen Sie dessen `schema-upgrade` einmal aus, bevor alle Replikate mit derselben Version neu starten. Prüfen Sie Readiness, gemeldete Version und Worker-Registrierung. Der Start aktualisiert kein altes Schema automatisch. Ältere Versionen benötigen auch die Zwischenschritte. Die [veröffentlichten 3.10.0-Upgrade-Anweisungen](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback) enthalten die Compose-Befehle. Worker-Protokoll 1.20 und Control Plane 2 bleiben unverändert. + +Die nullable Schedule-Zusammenfassung wird nicht aus alten Action-Arrays nachgetragen. Bestehende Schedules bleiben unverfügbar, bis ein zuständiger Übergang eine gültige Zusammenfassung aufzeichnet; siehe [Dispatch-Summary-Autorität](./polyglot/server-api-reference.md#schedule-dispatch-summary). MySQL und MariaDB setzen unterbrochene Upgrades fort; SQLite und PostgreSQL wenden den Schritt transaktional an. Rollback auf ein älteres Binary erfordert die Wiederherstellung der Datenbank- und Speicher-Sicherung vor dem Upgrade. Führen Sie kein älteres Binary mit dem neueren Schema aus. + ### Upgrade auf Server 3.9.2 {#native-schema-upgrade-3-9} Ein Upgrade von native 3.8.x oder früher erfordert auf jedem Backend ein Schema-Upgrade. Server 3.9.1 fügt die leere Tabelle `dw_command_intents` hinzu: diff --git a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index a9fb24498e1..30a705db1a9 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -797,6 +797,20 @@ Zeitplanrouten sind Control-Plane-Routen. Suchattributnamen und -typen gehören zum Namespace-Suchvertrag. Vermeiden Sie Attribute mit hoher Kardinalität für Betriebsdashboards oder Metrikbezeichnungen. +### Dispatch-Summary-Autorität für Schedules {#schedule-dispatch-summary} + +Der veröffentlichte native Server 3.10.0 ergänzt Schedule-Listeneinträge und Describe-Antworten um ein vollständiges `dispatch_summary` mit `version: 1`, `state`, `last_outcome` und `buffered_actions_count`. Ältere Produzenten lassen es weg; eine leere Liste belegt keine Unterstützung. Prüfen Sie das vollständige Feld, statt Unterstützung aus einer Version abzuleiten. Der [getaggte Schedule-Vertrag](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules) definiert die genaue Form. + +| Zustand | Letztes Ergebnis | Aktueller Pufferstand | +|---|---|---| +| `known` | Vollständig aufgezeichneter Dispatch | Ganzzahl von 0 bis 9007199254740991 | +| `never` | `null`, nur durch Neuanlage belegt | `0` | +| `unavailable` | `null`, einschließlich alter oder ungültiger gespeicherter Autorität | `null` | + +Bekannte Ergebnisse sind `started`, `buffered`, `skipped` oder `failed`, mit vollständiger Ergebnis-ID, Aufzeichnungszeit, Begründung und zutreffenden Workflow-/Run-Identitäten. Der aktuelle Pufferstand ist separat: Nach späterem Leeren kann ein aufgezeichnetes buffered-Ergebnis mit Zählerstand 0 verbleiben. Der Ausführungsstatus des neuesten Workflows ist ebenfalls separat; ein Started-Dispatch kann auf einen später Failed-Workflow zeigen. + +Jede Zusammenfassung ist auf 4096 serialisierte UTF-8-Bytes begrenzt. Kann ein Übergang den vollständigen Vertrag nicht speichern, wird unverfügbare Autorität gespeichert, ohne Begründungskürzung oder Änderung der Scheduling-Operation. Fehlende, null, unvollständige oder nicht unterstützte Daten sind keine v1-Autorität. Eine gültige unavailable-Zusammenfassung überschreibt alte Nachweise. Ein späteres Describe besitzt die gesamte Zusammenfassung einschließlich Fehlen oder null; mischen Sie sie nie feldweise mit einem älteren Listenergebnis. Schema-Upgrades rekonstruieren keine Autorität aus alten Arrays. Die begrenzte Listenseite benötigt keine Describe-Anfrage pro Zeile. Dies ist Produzentenverhalten; Waterlines veröffentlichter Consumer und sichtbare Aktualisierung werden separat qualifiziert. + ### Filter und Fortsetzung für Zeitplanlisten {#schedule-list-filters} `GET /api/schedules` liest den Namespace der Anfrage. Die [Prüfung des regulär veröffentlichten PHP Servers](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227) bestätigt kombinierte Filter und Fortsetzung. Senden Sie folgende Abfrageparameter mit normaler URL-Kodierung: diff --git a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md index 6109f4df905..569ab99072a 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -135,8 +135,7 @@ Der Stack besteht aus dem nativen Server und MySQL. Compose verweigert den Start `DW_AUTH_TOKEN` nicht gesetzt ist. Der [Bereitstellungsleitfaden](/docs/deployment#single-node-production) behandelt die Produktions-Env-Datei, Sicherungen und Upgrades. -Upgrades von native 3.8.x oder früher auf 3.9.2 benötigen vor dem Neustart das [explizite Schema-Upgrade](../deployment.md#native-schema-upgrade-3-9). -Von 3.9.0 oder 3.9.1 ist kein zusätzlicher Schemaschritt nötig; führen Sie dieselben Backup-, Neustart- und Readiness-Prüfungen aus. +Ein Upgrade auf native 3.10.0, auch von 3.9.x, erfordert vor dem Neustart das [explizite Schema-Upgrade](../deployment.md#native-schema-upgrade-3-10). Ältere Versionen benötigen auch ihre Zwischenschritte. Sichern Sie Datenbank und externen Payload-Speicher; ein Rollback stellt diese Sicherung wieder her. ### Ports {#ports} diff --git a/i18n/de/source-hashes.json b/i18n/de/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/de/source-hashes.json +++ b/i18n/de/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md index a487cf195ac..a16a3c82cbc 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md @@ -263,6 +263,21 @@ la base de datos y con todos los Server detenidos. La referencia de Server mantiene los comandos Compose actualizados en [Imagen oficial + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose). +### Actualizar a Server 3.10.0 {#native-schema-upgrade-3-10} + +El runtime nativo 3.10.0 requiere una actualización aditiva explícita del esquema desde 3.9.x. + +| Backend | Transición de esquema desde 3.9.x | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +Detenga todas las réplicas del Server, mantenga la base activa y haga una copia de la base y del almacenamiento de payloads externos. Seleccione la imagen 3.10.0 y ejecute su `schema-upgrade` una vez antes de reiniciar todas las réplicas con la misma versión. Verifique readiness, versión declarada y registro de workers. El inicio no actualiza esquemas antiguos automáticamente. Las versiones anteriores también requieren los pasos intermedios. Las [instrucciones publicadas de actualización a 3.10.0](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback) incluyen los comandos Compose. El protocolo de workers 1.20 y el plano de control 2 no cambian. + +El resumen nullable de la programación no se rellena a partir de arrays antiguos de acciones. Las programaciones existentes siguen no disponibles hasta que una transición responsable registre un resumen válido; vea la [autoridad del resumen de despacho](./polyglot/server-api-reference.md#schedule-dispatch-summary). MySQL y MariaDB reanudan actualizaciones interrumpidas; SQLite y PostgreSQL aplican el paso en una transacción. Volver a un binario anterior exige restaurar la copia previa de base y almacenamiento. No ejecute un binario antiguo contra el esquema nuevo. + ### Actualizar a Server 3.9.2 {#native-schema-upgrade-3-9} Actualizar desde native 3.8.x o anterior exige actualizar el esquema en todos los backends. Server 3.9.1 añade la tabla vacía `dw_command_intents`: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index 8b6f2620c12..b60afd3b235 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -611,6 +611,20 @@ Las programaciones son rutas del plano de control. Los nombres y tipos de atributos forman parte del contrato de búsqueda del espacio. Evita atributos de alta cardinalidad en paneles operativos o etiquetas de métricas. +### Autoridad del resumen de despacho de programaciones {#schedule-dispatch-summary} + +El Server nativo 3.10.0 publicado añade un `dispatch_summary` completo con `version: 1`, `state`, `last_outcome` y `buffered_actions_count` a los elementos de lista y respuestas describe de programaciones. Los productores antiguos lo omiten; una lista vacía no demuestra soporte. Inspeccione el campo completo en vez de inferir soporte por versión. El [contrato de programaciones etiquetado](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules) define la forma exacta. + +| Estado | Último resultado | Recuento actual del búfer | +|---|---|---| +| `known` | Despacho completo registrado | Entero de 0 a 9007199254740991 | +| `never` | `null`, establecido solo al crear | `0` | +| `unavailable` | `null`, incluida autoridad antigua o almacenada inválida | `null` | + +Los resultados conocidos son `started`, `buffered`, `skipped` o `failed`, con ID de resultado, instante de registro, motivo e identidades workflow/run aplicables completos. El recuento actual del búfer es independiente: vaciarlo después puede dejar un resultado buffered registrado con recuento cero. El estado de ejecución del workflow más reciente también es independiente; un despacho Started puede apuntar a un workflow que después Failed. + +Cada resumen está limitado a 4096 bytes UTF-8 serializados. Una transición incapaz de registrar el contrato completo guarda autoridad no disponible, sin truncar el motivo ni cambiar la operación de programación. Datos ausentes, null, parciales o no soportados no son autoridad v1. Un resumen unavailable válido prevalece sobre evidencia antigua. Un describe posterior es dueño del resumen completo, incluso ausencia o null; nunca lo combine campo por campo con una lista anterior. Las actualizaciones de esquema no reconstruyen autoridad a partir de arrays antiguos. La lectura acotada de la página no necesita describir cada fila. Es comportamiento del productor; el consumidor publicado y la actualización visible de Waterline se cualifican por separado. + ### Filtros y continuación de listas de programaciones {#schedule-list-filters} `GET /api/schedules` lee el espacio de nombres de la solicitud. La [verificación de PHP Server publicado mediante instalación normal](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227) confirma los filtros combinados y la continuación. Envíe estos parámetros de consulta con la codificación URL habitual: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md index a329085a3cf..7d9e5d94cac 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -124,8 +124,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ El conjunto contiene el Server nativo y MySQL. Compose se niega a arrancar hasta que se defina `DW_AUTH_TOKEN`. La [guía de despliegue](/docs/deployment#single-node-production) cubre el archivo de entorno de producción, las copias de seguridad y las actualizaciones. -Actualizar desde native 3.8.x o anterior a 3.9.2 exige la [actualización explícita del esquema](../deployment.md#native-schema-upgrade-3-9) antes de reiniciar. -Desde 3.9.0 o 3.9.1 no hace falta otro paso de esquema; siga las mismas comprobaciones de copia, reinicio y readiness. +Actualizar a native 3.10.0, incluso desde 3.9.x, exige la [actualización explícita del esquema](../deployment.md#native-schema-upgrade-3-10) antes de reiniciar. Las versiones anteriores también necesitan sus pasos intermedios. Copie tanto la base como el almacenamiento de payloads externos; la reversión restaura esa copia. ### Puertos {#ports} diff --git a/i18n/es/source-hashes.json b/i18n/es/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/es/source-hashes.json +++ b/i18n/es/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md index c12650eece8..c664baa7717 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md @@ -269,6 +269,21 @@ pendant que tous les Servers sont arrêtés. La référence Server conserve les exemples Compose actuels au niveau des commandes dans la section [Official Image + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose). +### Mise à niveau vers Server 3.10.0 {#native-schema-upgrade-3-10} + +Le runtime natif 3.10.0 exige une mise à niveau additive explicite du schéma depuis 3.9.x. + +| Backend | Transition du schéma depuis 3.9.x | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +Arrêtez toutes les répliques du Server, laissez la base active et sauvegardez la base ainsi que le stockage des payloads externes. Sélectionnez l’image 3.10.0 et exécutez son `schema-upgrade` une fois avant de redémarrer toutes les répliques sur la même version. Vérifiez readiness, version annoncée et enregistrement des Workers. Le démarrage ne met pas automatiquement à niveau un ancien schéma. Les versions antérieures exigent aussi les étapes intermédiaires. Les [instructions publiées pour 3.10.0](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback) donnent les commandes Compose. Le protocole Worker 1.20 et le plan de contrôle 2 restent inchangés. + +Le résumé nullable de la programmation n’est pas rempli à partir des anciens tableaux d’actions. Les programmations existantes restent indisponibles jusqu’à ce qu’une transition responsable enregistre un résumé valide ; voir [l’autorité du résumé de dispatch](./polyglot/server-api-reference.md#schedule-dispatch-summary). MySQL et MariaDB reprennent les mises à niveau interrompues ; SQLite et PostgreSQL appliquent l’étape dans une transaction. Revenir à un ancien binaire exige de restaurer la sauvegarde préalable de base et de stockage. N’exécutez pas un ancien binaire sur le nouveau schéma. + ### Mise à niveau vers Server 3.9.2 {#native-schema-upgrade-3-9} Passer de native 3.8.x ou antérieur exige une mise à niveau du schéma sur chaque backend. Server 3.9.1 ajoute la table vide `dw_command_intents` : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index bfad0a194c7..691c00d7930 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -820,6 +820,20 @@ Les noms et types d'attributs font partie du contrat de recherche de l'espace de noms. Évitez les attributs à forte cardinalité dans les tableaux de bord opérateurs et les étiquettes de métriques. +### Autorité du résumé de dispatch des programmations {#schedule-dispatch-summary} + +Le Server natif 3.10.0 publié ajoute un `dispatch_summary` complet avec `version: 1`, `state`, `last_outcome` et `buffered_actions_count` aux éléments de liste et aux réponses describe des programmations. Les anciens producteurs l’omettent ; une liste vide ne prouve pas la prise en charge. Examinez le champ complet au lieu de déduire le support d’une version. Le [contrat de programmation taggé](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules) définit la forme exacte. + +| État | Dernier résultat | Nombre actuel en tampon | +|---|---|---| +| `known` | Dispatch enregistré complet | Entier de 0 à 9007199254740991 | +| `never` | `null`, établi seulement à la création | `0` | +| `unavailable` | `null`, y compris autorité ancienne ou stockée invalide | `null` | + +Les résultats connus sont `started`, `buffered`, `skipped` ou `failed`, avec l’ID de résultat, l’heure d’enregistrement, le motif et les identités workflow/run applicables complets. Le nombre actuel en tampon est distinct : un vidage ultérieur peut laisser un résultat buffered enregistré avec un compteur à 0. Le statut d’exécution du dernier workflow est aussi distinct ; un dispatch Started peut pointer vers un workflow ensuite Failed. + +Chaque résumé est borné à 4096 octets UTF-8 sérialisés. Une transition incapable d’enregistrer le contrat complet stocke une autorité indisponible, sans tronquer le motif ni changer l’opération de programmation. Des données absentes, null, partielles ou non prises en charge ne sont pas une autorité v1. Un résumé unavailable valide prévaut sur les preuves anciennes. Un describe ultérieur possède le résumé entier, absence ou null inclus ; ne le fusionnez jamais champ par champ avec une ancienne liste. Les mises à niveau ne reconstruisent pas l’autorité depuis les anciens tableaux. La lecture bornée de la page ne nécessite pas un describe par ligne. Il s’agit du producteur ; le consommateur publié et l’actualisation visible de Waterline sont qualifiés séparément. + ### Filtres et continuation des listes de planifications {#schedule-list-filters} `GET /api/schedules` lit l’espace de noms de la requête. La [qualification de PHP Server publié avec une installation normale](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227) vérifie les filtres combinés et la continuation. Envoyez les paramètres suivants avec l’encodage URL habituel : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md index c2acde3b6a4..57e3c86e3c7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -124,8 +124,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ La stack comprend le Server natif et MySQL. Compose refuse de démarrer tant que `DW_AUTH_TOKEN` n’est pas défini. Le [guide de déploiement](/docs/deployment#single-node-production) décrit le fichier d’environnement de production, les sauvegardes et les mises à niveau. -Passer de native 3.8.x ou antérieur à 3.9.2 exige la [mise à niveau explicite du schéma](../deployment.md#native-schema-upgrade-3-9) avant redémarrage. -Depuis 3.9.0 ou 3.9.1, aucune étape de schéma supplémentaire n’est nécessaire ; suivez les mêmes contrôles de sauvegarde, redémarrage et readiness. +Passer à native 3.10.0, y compris depuis 3.9.x, exige la [mise à niveau explicite du schéma](../deployment.md#native-schema-upgrade-3-10) avant redémarrage. Les versions antérieures exigent aussi leurs étapes intermédiaires. Sauvegardez base et stockage des payloads externes ; le retour arrière restaure cette sauvegarde. ### Ports {#ports} diff --git a/i18n/fr/source-hashes.json b/i18n/fr/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/fr/source-hashes.json +++ b/i18n/fr/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md index 8865ea2b272..78d5299e54b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md @@ -170,6 +170,21 @@ docker compose --env-file durable-workflow.prod.env \ ネイティブ Server は起動時にスキーマを確認します。ネイティブの同一マイナー系列内のパッチリリースはスキーマを維持するため、イメージの変更だけで済みます。リリースノートでスキーマ変更が告知されたリリースでは、データベースをバックアップし、全 Server を停止した状態で、イメージの `schema-upgrade` コマンドも実行する必要があります。最新のコマンド例は Server リファレンスの[公式イメージと Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose)にあります。 +### Server 3.10.0 への更新 {#native-schema-upgrade-3-10} + +Native 3.10.0 は 3.9.x からの明示的な追加スキーマ更新を必要とします。 + +| バックエンド | 3.9.x からのスキーマ遷移 | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +すべての Server レプリカを停止し、DB は稼働させたまま、DB と外部 payload ストレージをバックアップします。3.10.0 イメージを選び、その `schema-upgrade` を一度実行してから全レプリカを同じバージョンで再起動します。readiness、報告バージョン、Worker 登録を確認します。起動時に旧スキーマを自動更新しません。さらに古いバージョンでは途中の更新手順も必要です。[公開済み 3.10.0 更新手順](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback)に Compose コマンドがあります。Worker protocol 1.20 と control plane 2 は変わりません。 + +null 許容のスケジュール要約は古い action 配列から埋め戻しません。既存スケジュールは、その更新を担う遷移が有効な要約を記録するまで unavailable のままです。[dispatch-summary の権威](./polyglot/server-api-reference.md#schedule-dispatch-summary)を参照してください。MySQL と MariaDB は中断した更新を再開し、SQLite と PostgreSQL はトランザクションで適用します。旧バイナリへ戻すには更新前の DB・ストレージのバックアップを復元します。新しいスキーマで古いバイナリを実行しないでください。 + ### Server 3.9.2 への更新 {#native-schema-upgrade-3-9} native 3.8.x 以前からの更新では、すべてのバックエンドでスキーマ更新が必要です。Server 3.9.1 は空の `dw_command_intents` テーブルを追加します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index 768279b51b6..5b63e1b1caf 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -611,6 +611,20 @@ Worker はリース ID、試行、タスク ID、ハートビートエンドポ 検索属性名と型は名前空間検索契約の一部です。運用ダッシュボードやメトリクスラベルに、値の種類が多い高カーディナリティ属性を使うのは避けてください。 +### スケジュール dispatch-summary の権威 {#schedule-dispatch-summary} + +公開済み native Server 3.10.0 は、スケジュール一覧項目と describe 応答に `version: 1`、`state`、`last_outcome`、`buffered_actions_count` を持つ完全な `dispatch_summary` を追加します。古い producer は省略します。空の一覧では対応を証明できません。バージョンから推測せず、フィールド全体を確認してください。[タグ固定のスケジュール契約](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules)に正確な形式があります。 + +| 状態 | 直近の結果 | 現在のバッファ件数 | +|---|---|---| +| `known` | 完全に記録された dispatch | 0 から 9007199254740991 の整数 | +| `never` | `null`、新規作成時のみ確定 | `0` | +| `unavailable` | `null`、旧データや不正な保存済み権威を含む | `null` | + +既知の結果は `started`、`buffered`、`skipped`、`failed` で、完全な結果 ID、記録時刻、理由、該当する workflow/run ID を含みます。現在のバッファ件数は別です。後で排出されても、記録済み buffered 結果と件数ゼロが共存できます。最新 workflow の実行状態も別で、Started の dispatch が後で Failed になった workflow を指す場合があります。 + +要約はシリアライズ後の UTF-8 で 4096 バイト以下です。遷移が完全な契約を記録できなければ、理由を切り詰めたりスケジュール処理を変更したりせず unavailable の権威を保存します。欠落、null、部分的、未対応のデータは v1 の権威ではありません。有効な unavailable 要約は旧証拠より優先されます。後の describe が欠落や null も含む要約全体を所有し、古い一覧の各フィールドと結合してはいけません。スキーマ更新は旧配列から権威を再構築しません。サイズを制限した一覧ページの読み取りでは、行ごとの describe は不要です。これは producer の動作で、Waterline の公開済み consumer と画面更新の検証は別です。 + ### スケジュール一覧のフィルターと継続 {#schedule-list-filters} `GET /api/schedules` はリクエストの名前空間を読み取ります。[通常の公開 PHP Server の検証](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227)で、フィルターの組み合わせと継続取得を確認しています。次のクエリパラメーターを通常の URL エンコードで送信します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md index 7c4212dd278..8c8088f7976 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -114,8 +114,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ このスタックはネイティブ Server と MySQL で構成されます。`DW_AUTH_TOKEN` が設定されるまで Compose は起動を拒否します。本番用 env ファイル、バックアップ、アップグレードは [デプロイガイド](/docs/deployment#single-node-production)で説明しています。 -native 3.8.x 以前から 3.9.2 への更新では、再起動前に[明示的なスキーマ更新](../deployment.md#native-schema-upgrade-3-9)が必要です。 -3.9.0 または 3.9.1 からは追加のスキーマ更新は不要です。同じバックアップ・再起動・readiness 確認を行ってください。 +3.9.x からを含む native 3.10.0 への更新では、再起動前に[明示的なスキーマ更新](../deployment.md#native-schema-upgrade-3-10)が必要です。さらに古いバージョンは途中の手順も必要です。DB と外部 payload ストレージをバックアップし、ロールバック時はそのバックアップを復元します。 ### ポート {#ports} diff --git a/i18n/ja/source-hashes.json b/i18n/ja/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/ja/source-hashes.json +++ b/i18n/ja/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md index bbc031f4699..d7251ade138 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md @@ -275,6 +275,21 @@ todos os Servers parados. A referência do Server mantém os exemplos mais recentes de comandos Compose na seção [Imagem oficial + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose). +### Atualizar para Server 3.10.0 {#native-schema-upgrade-3-10} + +O runtime nativo 3.10.0 exige upgrade aditivo explícito do esquema a partir de 3.9.x. + +| Backend | Transição de esquema desde 3.9.x | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +Pare todas as réplicas do Server, mantenha o banco ativo e faça backup do banco e do armazenamento de payloads externos. Selecione a imagem 3.10.0 e execute seu `schema-upgrade` uma vez antes de reiniciar todas as réplicas na mesma versão. Verifique readiness, versão informada e registro dos Workers. A inicialização não atualiza esquemas antigos automaticamente. Versões anteriores também exigem as etapas intermediárias. As [instruções publicadas de upgrade para 3.10.0](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback) trazem os comandos Compose. O protocolo Worker 1.20 e o plano de controle 2 não mudam. + +O resumo nullable do agendamento não é preenchido a partir de arrays legados de ações. Agendamentos existentes ficam indisponíveis até uma transição responsável registrar um resumo válido; veja a [autoridade do resumo de despacho](./polyglot/server-api-reference.md#schedule-dispatch-summary). MySQL e MariaDB retomam upgrades interrompidos; SQLite e PostgreSQL aplicam a etapa em transação. Voltar para um binário anterior exige restaurar o backup pré-upgrade de banco e armazenamento. Não execute um binário antigo no esquema novo. + ### Atualizar para Server 3.9.2 {#native-schema-upgrade-3-9} Atualizar do native 3.8.x ou anterior exige upgrade do esquema em todos os backends. Server 3.9.1 adiciona a tabela vazia `dw_command_intents`: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index f3d24a8f93c..536425c464a 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -792,6 +792,20 @@ Rotas de agendamento são rotas do plano de controle. Nomes e tipos de atributos fazem parte do contrato de busca do namespace. Evite atributos de alta cardinalidade em painéis de operação ou rótulos de métricas. +### Autoridade do resumo de despacho dos agendamentos {#schedule-dispatch-summary} + +O Server nativo 3.10.0 publicado adiciona um `dispatch_summary` completo com `version: 1`, `state`, `last_outcome` e `buffered_actions_count` aos itens de listagem e respostas describe dos agendamentos. Produtores anteriores omitem o campo; lista vazia não comprova suporte. Inspecione o campo completo em vez de inferir suporte pela versão. O [contrato de agendamentos da tag](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules) define o formato exato. + +| Estado | Último resultado | Contagem atual do buffer | +|---|---|---| +| `known` | Despacho registrado completo | Inteiro de 0 até 9007199254740991 | +| `never` | `null`, estabelecido apenas na criação | `0` | +| `unavailable` | `null`, incluindo autoridade legada ou armazenada inválida | `null` | + +Resultados conhecidos são `started`, `buffered`, `skipped` ou `failed`, com ID do resultado, instante de registro, motivo e identidades workflow/run aplicáveis completos. A contagem atual do buffer é separada: drená-lo depois pode manter um resultado buffered registrado com contagem zero. O estado de execução do workflow mais recente também é separado; um despacho Started pode apontar para um workflow que depois Failed. + +Cada resumo é limitado a 4096 bytes UTF-8 serializados. Se a transição não puder registrar o contrato completo, armazena autoridade indisponível, sem truncar o motivo nem alterar o agendamento. Dados ausentes, null, parciais ou não suportados não são autoridade v1. Um resumo unavailable válido prevalece sobre evidências legadas. Um describe posterior é dono do resumo inteiro, incluindo ausência ou null; nunca o mescle campo a campo com uma lista anterior. Upgrades não reconstroem autoridade de arrays legados. A leitura limitada da página dispensa describe por linha. Esse é o comportamento do produtor; o consumidor publicado e a atualização visível do Waterline são qualificados separadamente. + ### Filtros e continuação da listagem de agendamentos {#schedule-list-filters} `GET /api/schedules` lê o namespace da requisição. A [qualificação do PHP Server publicado com instalação normal](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227) verifica filtros combinados e continuação. Envie os seguintes parâmetros de consulta com a codificação URL habitual: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md index 3ffa51f7698..849e1b870f4 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -124,8 +124,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ O conjunto é formado pelo Server nativo e pelo MySQL. O Compose se recusa a iniciar até que `DW_AUTH_TOKEN` seja definido. O [guia de implantação](/docs/deployment#single-node-production) trata do arquivo de ambiente de produção, de backups e de atualizações. -Atualizar do native 3.8.x ou anterior para 3.9.2 exige o [upgrade explícito do esquema](../deployment.md#native-schema-upgrade-3-9) antes de reiniciar. -A partir de 3.9.0 ou 3.9.1, não é necessária etapa extra de esquema; siga as mesmas verificações de backup, reinício e readiness. +Atualizar para native 3.10.0, inclusive de 3.9.x, exige o [upgrade explícito do esquema](../deployment.md#native-schema-upgrade-3-10) antes de reiniciar. Versões anteriores também precisam das etapas intermediárias. Faça backup do banco e do armazenamento externo de payloads; o rollback restaura esse backup. ### Portas {#ports} diff --git a/i18n/pt-BR/source-hashes.json b/i18n/pt-BR/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/pt-BR/source-hashes.json +++ b/i18n/pt-BR/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md index 554fa40629a..e68442e2e89 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md @@ -269,6 +269,21 @@ docker compose --env-file durable-workflow.prod.env \ розділі [Official Image + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose). +### Оновлення до Server 3.10.0 {#native-schema-upgrade-3-10} + +Нативний 3.10.0 потребує явного адитивного оновлення схеми з 3.9.x. + +| Backend | Перехід схеми з 3.9.x | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +Зупиніть усі репліки Server, залиште базу активною та створіть резервні копії бази й зовнішнього сховища payload. Виберіть образ 3.10.0 і виконайте його `schema-upgrade` один раз перед перезапуском усіх реплік на тій самій версії. Перевірте readiness, оголошену версію та реєстрацію Worker. Запуск не оновлює стару схему автоматично. Старіші версії також потребують проміжних кроків. [Опубліковані інструкції 3.10.0](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback) містять команди Compose. Протокол Worker 1.20 і control plane 2 не змінюються. + +Nullable-підсумок розкладу не заповнюється зі старих масивів дій. Наявні розклади залишаються недоступними, доки відповідальний перехід не запише коректний підсумок; див. [авторитетність підсумку dispatch](./polyglot/server-api-reference.md#schedule-dispatch-summary). MySQL і MariaDB продовжують перервані оновлення; SQLite та PostgreSQL застосовують крок транзакційно. Відкат до старішого бінарного файлу потребує відновлення передоновлювальної копії бази й сховища. Не запускайте старий бінарний файл із новою схемою. + ### Оновлення до Server 3.9.2 {#native-schema-upgrade-3-9} Оновлення з native 3.8.x або ранішої версії потребує оновлення схеми на кожному бекенді. Server 3.9.1 додає порожню таблицю `dw_command_intents`: diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index 81d036c21bc..9a9d706a9e2 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -763,6 +763,20 @@ poll завдань workflow, activity і query містить машиночи Назви й типи атрибутів пошуку є контрактом namespace. Не використовуйте атрибути з великою кількістю унікальних значень для панелей чи міток метрик. +### Авторитетність підсумку dispatch розкладу {#schedule-dispatch-summary} + +Опублікований нативний Server 3.10.0 додає повний `dispatch_summary` із `version: 1`, `state`, `last_outcome` та `buffered_actions_count` до елементів списку й відповідей describe розкладів. Старіші producer пропускають його; порожній список не підтверджує підтримки. Перевіряйте ціле поле замість висновку з версії. [Контракт розкладів із тега](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules) визначає точну форму. + +| Стан | Останній результат | Поточна кількість у буфері | +|---|---|---| +| `known` | Повний записаний dispatch | Ціле від 0 до 9007199254740991 | +| `never` | `null`, підтверджується лише створенням | `0` | +| `unavailable` | `null`, включно зі старою чи некоректною збереженою авторитетністю | `null` | + +Відомі результати — `started`, `buffered`, `skipped` або `failed` із повними ID результату, часом запису, причиною та застосовними workflow/run ID. Поточна кількість у буфері окрема: після спорожнення записаний buffered-результат може співіснувати з нульовою кількістю. Стан виконання останнього workflow теж окремий: dispatch Started може вказувати на workflow, який пізніше Failed. + +Кожен підсумок обмежено 4096 серіалізованими байтами UTF-8. Перехід, що не може записати цілий контракт, зберігає недоступну авторитетність, не обрізаючи причину й не змінюючи операцію розкладу. Відсутні, null, часткові чи непідтримувані дані не є авторитетністю v1. Коректний unavailable-підсумок переважає старі докази. Пізніший describe володіє цілим підсумком, включно з відсутністю чи null; ніколи не зливайте його по полях зі старішим списком. Оновлення схеми не відновлює авторитетність зі старих масивів. Обмежене читання сторінки не потребує describe для кожного рядка. Це поведінка producer; опублікований consumer Waterline і видиме оновлення перевіряються окремо. + ### Фільтри списку розкладів і продовження {#schedule-list-filters} `GET /api/schedules` читає простір імен запиту. [Перевірка звичайного опублікованого PHP Server](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227) підтверджує поєднання фільтрів і продовження. Передавайте такі параметри запиту зі звичайним URL-кодуванням: diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md index a273e779407..2682c4fe907 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -171,8 +171,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ задано `DW_AUTH_TOKEN`. [Посібник розгортання](/docs/deployment#single-node-production) описує production-файл env, резервні копії та оновлення. -Оновлення з native 3.8.x або ранішої версії до 3.9.2 потребує [явного оновлення схеми](../deployment.md#native-schema-upgrade-3-9) перед перезапуском. -Із 3.9.0 або 3.9.1 додатковий крок схеми не потрібен; виконайте ті самі перевірки резервування, перезапуску та readiness. +Оновлення до native 3.10.0, зокрема з 3.9.x, потребує [явного оновлення схеми](../deployment.md#native-schema-upgrade-3-10) до перезапуску. Старіші версії також потребують проміжних кроків. Створіть резервні копії бази та зовнішнього сховища payload; відкат відновлює ці копії. ### Порти {#ports} diff --git a/i18n/uk/source-hashes.json b/i18n/uk/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/uk/source-hashes.json +++ b/i18n/uk/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md index 91b5688435d..faa220f4ab9 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md @@ -169,6 +169,21 @@ docker compose --env-file durable-workflow.prod.env \ 原生 Server 在启动时检查其数据库模式。同一原生次版本线内的补丁发布保持模式不变,因此只需更换镜像。发布说明中宣布模式变更的版本还需要运行镜像的 `schema-upgrade` 命令,须在备份数据库后、所有 Server 都已停止时执行。Server 参考文档的[官方镜像 + Compose](https://github.com/durable-workflow/server/blob/main/docs/server-reference.md#official-image--compose)部分维护最新命令级 Compose 示例。 +### 升级到 Server 3.10.0 {#native-schema-upgrade-3-10} + +原生 3.10.0 要求从 3.9.x 显式执行增量 schema 升级。 + +| 后端 | 从 3.9.x 的 schema 迁移 | +|---|---| +| SQLite | 13 → 14 | +| PostgreSQL | 14 → 15 | +| MariaDB | 14 → 15 | +| MySQL | 15 → 16 | + +停止所有 Server 副本,保持数据库运行,并备份数据库及外部 payload 存储。选择 3.10.0 镜像,运行一次该镜像的 `schema-upgrade`,然后以同一版本重启所有副本。检查 readiness、报告版本和 Worker 注册。启动不会自动升级旧 schema。更早版本还需执行中间步骤。[已发布的 3.10.0 升级说明](https://github.com/durable-workflow/server/releases/tag/3.10.0#upgrade-and-rollback)提供 Compose 命令。Worker protocol 1.20 和 control plane 2 不变。 + +可空的调度摘要不会从旧 action 数组回填。已有调度保持 unavailable,直到负责该数据的状态转换记录有效摘要;参见[调度摘要权威](./polyglot/server-api-reference.md#schedule-dispatch-summary)。MySQL 和 MariaDB 可继续中断的升级;SQLite 和 PostgreSQL 在事务中执行。回退到旧二进制必须恢复升级前的数据库与存储备份。不要让旧二进制使用新 schema。 + ### 升级到 Server 3.9.2 {#native-schema-upgrade-3-9} 从 native 3.8.x 或更早版本升级时,所有后端都必须升级 schema。Server 3.9.1 添加空的 `dw_command_intents` 表: diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md index 9eaa5e3d52b..bf0ba807bc5 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-api-reference.md @@ -610,6 +610,20 @@ Worker 应将租约 ID、尝试、任务 ID 和心跳端点视为 Server 签发 搜索属性名称和类型是命名空间搜索契约的一部分。避免在运维仪表盘或指标标签中使用高基数属性。 +### 调度派发摘要的权威 {#schedule-dispatch-summary} + +已发布的原生 Server 3.10.0 为调度列表项和 describe 响应添加完整的 `dispatch_summary`,包含 `version: 1`、`state`、`last_outcome`、`buffered_actions_count`。旧 producer 省略该字段;空列表不代表支持。应检查完整字段,而不是根据版本推断。[标签固定的调度契约](https://github.com/durable-workflow/server/blob/3.10.0/docs/server-reference.md#schedules)定义确切结构。 + +| 状态 | 最近结果 | 当前缓冲数量 | +|---|---|---| +| `known` | 完整记录的派发 | 0 到 9007199254740991 的整数 | +| `never` | `null`,仅新建时确立 | `0` | +| `unavailable` | `null`,包括旧数据或无效的已存储权威 | `null` | + +已知结果为 `started`、`buffered`、`skipped`、`failed`,保留完整结果 ID、记录时间、原因以及适用的 workflow/run 标识。当前缓冲数量独立:之后清空缓冲仍可保留 buffered 结果而数量为零。最新 workflow 的执行状态也独立;Started 派发可能指向后来 Failed 的 workflow。 + +每个摘要最多为 4096 个序列化 UTF-8 字节。转换若无法记录完整契约,则存储 unavailable 权威,不截断原因,也不改变调度操作。缺失、null、部分或不支持的数据均不是 v1 权威。有效 unavailable 摘要覆盖旧证据。后续 describe 拥有整个摘要,包括缺失或 null;切勿逐字段与旧列表结果合并。schema 升级不会从旧数组重建权威。有界列表页读取不需要每行单独 describe。这是 producer 行为;Waterline 已发布 consumer 与可见刷新验收仍需单独验证。 + ### 计划列表筛选与继续读取 {#schedule-list-filters} `GET /api/schedules` 读取请求所属的命名空间。[常规发布 PHP Server 的验证](https://github.com/durable-workflow/durable-workflow.github.io/issues/402#issuecomment-6370122227)已确认组合筛选和继续读取行为。以下查询参数使用正常的 URL 编码发送: diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md index 037e3677f87..ea581db452c 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -113,8 +113,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ 该栈包含原生 Server 和 MySQL。未设置 `DW_AUTH_TOKEN` 时,Compose 会拒绝启动。生产 env 文件、备份和升级见[部署指南](/docs/deployment#single-node-production)。 -从 native 3.8.x 或更早版本升级到 3.9.2 时,必须在重启前[显式升级 schema](../deployment.md#native-schema-upgrade-3-9)。 -从 3.9.0 或 3.9.1 升级不需要额外的 schema 步骤;请执行相同的备份、重启与 readiness 检查。 +升级到 native 3.10.0(包括从 3.9.x)必须在重启前[显式升级 schema](../deployment.md#native-schema-upgrade-3-10)。更早版本还需中间步骤。请备份数据库和外部 payload 存储;回退会恢复此备份。 ### 端口 {#ports} diff --git a/i18n/zh-Hans/source-hashes.json b/i18n/zh-Hans/source-hashes.json index a6afeeaf79c..c0e7460a207 100644 --- a/i18n/zh-Hans/source-hashes.json +++ b/i18n/zh-Hans/source-hashes.json @@ -28,7 +28,7 @@ "defining-workflows/workflow-id.md": "ca3b43253a748b27dca1af9f82fcf8c4c133e14f13e1b82eaa1ca2ed0996d4bf", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", + "deployment.md": "adf903d1e27b5ef6291020571cde52f176dfc0ca8addbd72e5da3e0cd88b62e5", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -88,10 +88,10 @@ "polyglot/runtime-migration.md": "5a78713bb8cb74aea58f6d5d826400d968a405f69c6ff17fdf2f7decb1d14b71", "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", - "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", + "polyglot/server-api-reference.md": "ecd6d358d6e5bde442ebf0e1ec8a072779089e2a5c4427e31eef646f42c6c03c", "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", + "polyglot/server.md": "156d641693f44880b4003f0d20872dfda54f803f6a9415bbff3ddb37423ec66a", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/scripts/check-platform-protocol-page.js b/scripts/check-platform-protocol-page.js index 9b57c869b63..e5e5a17fe06 100644 --- a/scripts/check-platform-protocol-page.js +++ b/scripts/check-platform-protocol-page.js @@ -18,13 +18,12 @@ const pagePath = path.join( repoRoot, 'build', 'docs', - '2.0', 'platform-protocol-specs', 'index.html', ); const llmPaths = [ + path.join(repoRoot, 'build', 'llms-full.txt'), path.join(repoRoot, 'build', 'llms-full-2.0.txt'), - path.join(repoRoot, 'build', '2.0', 'llms-full.txt'), ]; function read(filePath) { @@ -198,7 +197,7 @@ function assertRenderedPage() { .map(match => parseAttributes(match[1])) .find(attributes => attributes['data-platform-protocol-catalog']); if (!root) { - throw new Error('Rendered 2.0 protocol page is missing its catalog root'); + throw new Error('Rendered protocol page is missing its catalog root'); } assertEqual( root['data-platform-protocol-catalog'], @@ -266,7 +265,7 @@ function assertModelRetrievalSurfaces() { function main() { assertRenderedPage(); assertModelRetrievalSurfaces(); - console.log('Rendered 2.0 protocol page and model-retrieval catalog data are aligned.'); + console.log('Rendered protocol page and model-retrieval catalog data are aligned.'); } if (require.main === module) { diff --git a/static/platform-protocol-specs/control-plane-api.openapi.yaml b/static/platform-protocol-specs/control-plane-api.openapi.yaml index 766ed29efcd..e6bf02c022a 100644 --- a/static/platform-protocol-specs/control-plane-api.openapi.yaml +++ b/static/platform-protocol-specs/control-plane-api.openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: durable-workflow.v2.control-plane-api - version: "12" + version: "15" summary: Durable Workflow control-plane HTTP+JSON API description: > Normative OpenAPI specification for the standalone Durable Workflow @@ -338,6 +338,11 @@ paths: "404": { $ref: "#/components/responses/ControlPlaneError" } "409": { $ref: "#/components/responses/ControlPlaneError" } "422": { $ref: "#/components/responses/ControlPlaneError" } + "503": + description: The original Nexus target temporarily has no eligible live Worker. No cancellation was admitted. Retryable availability diagnostics distinguish absence from known incompatibility. + content: + application/json: + schema: { $ref: "#/components/schemas/ControlPlaneError" } /workflows/{workflowId}/runs/{runId}/request-cancellation: post: tags: [workflows] @@ -359,6 +364,11 @@ paths: "404": { $ref: "#/components/responses/ControlPlaneError" } "409": { $ref: "#/components/responses/ControlPlaneError" } "422": { $ref: "#/components/responses/ControlPlaneError" } + "503": + description: The original Nexus target temporarily has no eligible live Worker. No cancellation was admitted. Retryable availability diagnostics distinguish absence from known incompatibility. + content: + application/json: + schema: { $ref: "#/components/schemas/ControlPlaneError" } /workflows/{workflowId}/terminate: post: tags: [workflows] @@ -486,6 +496,61 @@ paths: - $ref: "#/components/parameters/PageTokenQuery" responses: "200": { $ref: "#/components/responses/ControlPlaneEnvelope" } + /workflows/{workflowId}/runs/{runId}/activities/{activityId}/result: + get: + tags: [workflows] + operationId: inspectWorkflowActivityResult + summary: Inspect one activity's canonical result in an exact workflow run. + description: > + Requires operator access and the workflow_activity_result_inspection + discovery capability. Bind the listing's activity ID to the selected + namespace, workflow and run. Read one canonical activity snapshot and + fetch no unrelated payloads. Mutable rows never replace missing history. + Local activity inspection is explicitly unsupported until qualified. + Available null results carry an encoded Avro null, not a missing field. + parameters: + - $ref: "#/components/parameters/ControlPlaneVersionHeader" + - $ref: "#/components/parameters/WorkflowIdPath" + - $ref: "#/components/parameters/RunIdPath" + - name: activityId + in: path + required: true + schema: { type: string, minLength: 1 } + responses: + "200": + description: The retained result or an explicit unavailable state. + headers: + X-Durable-Workflow-Control-Plane-Version: + schema: { type: string, const: "2" } + content: + application/json: + schema: + type: object + required: [workflow_id, run_id, activity_id, state, available, reason] + properties: + workflow_id: { type: string } + run_id: { type: string } + activity_id: { type: string } + history_sequence: { type: integer, minimum: 1 } + state: { enum: [available, pending, failed, cancelled, pruned, unsupported, unavailable] } + available: { type: boolean } + reason: { type: [string, "null"] } + result_envelope: + type: object + description: Present only for available results. Uses the existing inline or authenticated runtime-external Avro envelope. + required: [codec] + properties: + codec: { type: string, const: avro } + blob: { type: string } + external_payload: { type: object } + "400": { $ref: "#/components/responses/JsonEnvelope" } + "401": { $ref: "#/components/responses/JsonEnvelope" } + "403": { $ref: "#/components/responses/JsonEnvelope" } + "404": + description: The selected run or activity does not belong to the authenticated scope. + content: + application/json: + schema: { $ref: "#/components/schemas/JsonObject" } /workflows/{workflowId}/runs/{runId}/history/export: get: tags: [workflows] @@ -652,10 +717,64 @@ paths: - name: intent in: path required: true - schema: { type: string, enum: [drain, resume] } + schema: { type: string, enum: [promote, drain, resume] } requestBody: { $ref: "#/components/requestBodies/JsonObject" } responses: "200": { $ref: "#/components/responses/ControlPlaneEnvelope" } + /task-queues/{taskQueue}/activity-dispatch: + get: + tags: [task-queues] + operationId: getTaskQueueActivityDispatch + summary: Read whether activity dispatch on the queue is paused. + description: > + Native Server only, advertised by cluster info + capabilities.task_queue_activity_dispatch_pause (Server #577). The + answer carries namespace, task_queue and activity_dispatch: state + (paused or active), paused, reason, paused_at, paused_by, resumed_at + and resumed_by of the last pause cycle. See + docs/contracts/task-queue-activity-dispatch-pause.md. + x-durable-workflow-server-capability: task_queue_activity_dispatch_pause + parameters: + - $ref: "#/components/parameters/ControlPlaneVersionHeader" + - $ref: "#/components/parameters/TaskQueuePath" + responses: + "200": { $ref: "#/components/responses/ControlPlaneEnvelope" } + "422": { $ref: "#/components/responses/ControlPlaneError" } + /task-queues/{taskQueue}/activity-dispatch/{action}: + post: + tags: [task-queues] + operationId: setTaskQueueActivityDispatch + summary: Pause or resume activity dispatch on the queue. + description: > + Native Server only, advertised by cluster info + capabilities.task_queue_activity_dispatch_pause (Server #577). pause + accepts an optional reason (at most 1000 characters) and answers + outcome paused or already_paused; resume takes no fields and answers + resumed or not_paused. Both are idempotent and record the + authenticated principal. While paused no activity task on the queue + is leased, ready tasks keep their attempt count, activity deadlines + keep running, and workflow, signal, query and update delivery is + unchanged. A concurrency cap of 0 is never a pause. + x-durable-workflow-server-capability: task_queue_activity_dispatch_pause + parameters: + - $ref: "#/components/parameters/ControlPlaneVersionHeader" + - $ref: "#/components/parameters/TaskQueuePath" + - name: action + in: path + required: true + schema: { type: string, enum: [pause, resume] } + requestBody: + required: false + content: + application/json: + schema: + type: object + additionalProperties: true + properties: + reason: { type: [string, "null"], maxLength: 1000 } + responses: + "200": { $ref: "#/components/responses/ControlPlaneEnvelope" } + "422": { $ref: "#/components/responses/ControlPlaneError" } /deployments: get: tags: [deployments] @@ -1098,10 +1217,74 @@ components: spec: { type: [object, "null"], additionalProperties: true } action: { type: [object, "null"], additionalProperties: true } search_attributes: { type: [object, "null"], additionalProperties: true } + dispatch_summary: { $ref: "#/components/schemas/ScheduleDispatchSummary" } created_at: { type: string, format: date-time } updated_at: { type: string, format: date-time } schedule_count: { type: integer, minimum: 0, maximum: 200 } next_page_token: { type: [string, "null"] } + ScheduleDispatchSummary: + description: >- + Native bounded dispatch authority, also at the top level of describe. + Older producers omit this member. Partial, null or unsupported objects + supply no v1 authority. A valid unavailable object overrides legacy + outcome evidence. A later describe owns its entire summary. + type: object + additionalProperties: false + required: [version, state, last_outcome, buffered_actions_count] + properties: + version: { type: integer, const: 1 } + state: { type: string, enum: [known, never, unavailable] } + last_outcome: + oneOf: + - { $ref: "#/components/schemas/ScheduleDispatchOutcome" } + - { type: "null" } + buffered_actions_count: { type: [integer, "null"], minimum: 0, maximum: 9007199254740991 } + oneOf: + - properties: + state: { const: known } + last_outcome: { $ref: "#/components/schemas/ScheduleDispatchOutcome" } + buffered_actions_count: { type: integer } + - properties: + state: { const: never } + last_outcome: { type: "null" } + buffered_actions_count: { const: 0 } + - properties: + state: { const: unavailable } + last_outcome: { type: "null" } + buffered_actions_count: { type: "null" } + ScheduleDispatchOutcome: + description: >- + Last committed dispatch, independently of current execution status. + Reason strings retain all text within 64 Unicode scalars and 256 UTF-8 + bytes. Oversized or incomplete outcomes produce unavailable, without + changing the underlying scheduling operation. The complete summary is + at most 4096 serialized UTF-8 bytes. + type: object + additionalProperties: false + required: [id, outcome, recorded_at, reason, workflow_instance_id, workflow_run_id] + properties: + id: { type: string, pattern: "^[0-7][0-9A-HJKMNP-TV-Z]{25}$" } + outcome: { type: string, enum: [started, buffered, skipped, failed] } + recorded_at: { type: string, format: date-time, pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}Z$' } + reason: { type: [string, "null"], maxLength: 64 } + workflow_instance_id: { type: [string, "null"], pattern: "^[0-7][0-9A-HJKMNP-TV-Z]{25}$" } + workflow_run_id: { type: [string, "null"], pattern: "^[0-7][0-9A-HJKMNP-TV-Z]{25}$" } + oneOf: + - properties: + outcome: { const: started } + reason: { type: "null" } + workflow_instance_id: { type: string } + workflow_run_id: { type: string } + - properties: + outcome: { const: buffered } + reason: { type: "null" } + workflow_instance_id: { type: "null" } + workflow_run_id: { type: "null" } + - properties: + outcome: { enum: [skipped, failed] } + reason: { type: string } + workflow_instance_id: { type: "null" } + workflow_run_id: { type: "null" } ScheduleListError: type: object additionalProperties: true diff --git a/static/stable-releases.json b/static/stable-releases.json index 56b225aa8e6..0b411f67243 100644 --- a/static/stable-releases.json +++ b/static/stable-releases.json @@ -4,20 +4,20 @@ "updated_at": "2026-11-13", "artifacts": { "cli": "2.8.0", - "helm-chart": "1.7.1", + "helm-chart": "2.0.0", "sdk-php": "3.18.2", "sdk-python": "2.17.2", "sdk-rust": "4.16.0", - "server": "3.9.2", + "server": "3.10.0", "waterline": "2.18.0", "workflow": "2.28.0" }, "helm_chart": { - "app_version": "3.9.2", + "app_version": "3.10.0", "repository": "oci://ghcr.io/durable-workflow/charts/durable-workflow", - "oci_manifest_digest": "sha256:1275bdf200878c292bad204edbd30478574c5c60ee30293281605d5ab551b980", - "package_digest": "sha256:ca2a3b60d01b33a9474e28932b41a8e64ac1c21931a9af45c8763b378938490d", - "source_commit": "f2edaa30e4dd330d8dbc408bb96cbf133c33484a", - "qualification_url": "https://github.com/durable-workflow/server/actions/runs/43465478903" + "oci_manifest_digest": "sha256:182616f8edbaf056b2f6047fd1501e0790ec5087c42470b03ad5d2c8b89cd67b", + "package_digest": "sha256:1b5a550b2f65c60c2ffe4c2d975c9578106abc6fe8396c31b1e41d1cf94aac7b", + "source_commit": "ac22629c078e8f1b240ead07b1561c99077753ac", + "qualification_url": "https://github.com/durable-workflow/server/actions/runs/43487220214" } }