diff --git a/docs/deployment.md b/docs/deployment.md index 5e71eb7353b..ac831d5b26c 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -268,7 +268,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### 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 backend. Server 3.9.1 adds the empty `dw_command_intents` table: @@ -281,18 +281,22 @@ backend. Server 3.9.1 adds the empty `dw_command_intents` table: | MySQL | 14 → 15 | Stop every Server replica, keep the database running, back up the database and -Server storage, then select and pull the 3.9.1 image. Run that image's +Server storage, then select and pull the 3.9.2 image. Run that image's `schema-upgrade` once before restarting every replica on the same version. Server does not upgrade an existing schema at startup: it refuses an old schema with `native_schema_upgrade_required`. Verify readiness, reported version and worker registration after restart. The -[qualified 3.9.1 release instructions](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade) +[qualified 3.9.2 release instructions](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback) provide the source-free Compose commands. MySQL and MariaDB upgrades resume after interruption; SQLite and PostgreSQL apply the step transactionally. Rollback to 3.8.x requires restoring the backup: 3.8.0 refuses the upgraded database with `native_schema_newer_than_binary`. -From 3.9.0, no further schema step is needed. From older versions, +From 3.9.0 or 3.9.1, no further schema step is needed: stop replicas, back up, +select the new image, restart and verify readiness, version and worker +registration. Physical schema and existing command/intent rows are unchanged. +Rollback to 3.9.1 uses the same schema but restores the Unicode-key/receipt +metadata defects and removes observation-owner hardening. From older versions, `schema-upgrade` applies the earlier steps too, including the [3.7 JSON rebuild](#native-schema-upgrade-3-7) where applicable. Worker protocol 1.20 and control plane 2 are unchanged. diff --git a/docs/polyglot/server-config-reference.md b/docs/polyglot/server-config-reference.md index 4fdb601699b..54bd3947e7f 100644 --- a/docs/polyglot/server-config-reference.md +++ b/docs/polyglot/server-config-reference.md @@ -92,8 +92,16 @@ Readiness also returns 503 while database health can remain 200. The [published 3.9.1 file-consumer controls](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) verify these cases and recovery after atomic file replacement. They do not qualify physical quota measurement or a production Cloud mapping. This is -admission control, not a write fence or byte reservation. Owner-UID hardening -and draining completion-upload work remain separate from this published scope. +admission control, not a write fence or byte reservation. + +Native 3.9.2 additionally requires the already-opened observation descriptor to +belong to root or the effective Server UID. A foreign owner fails closed as +`storage_admission_unavailable`; the owner/type/mode/content checks use the same +descriptor. Operators must still provide trusted ancestors and the intended +read-only container mapping: the runtime does not enforce ancestor ownership. +The [published 3.9.2 correction](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership) +does not establish physical collector or Cloud adoption acceptance and adds no +draining completion-upload allowance. Native has no server-side task-queue lease or dispatch caps, budget groups, namespace request admission, namespace durable-state quotas or held-poll caps, @@ -380,11 +388,23 @@ listed in its [implementation notes](#native-server-3x). On native 3.8.0, workflow-task completions, rejecting nonempty bodies. Its operation-name ceiling is fixed at 256 bytes. -Native 3.9.1 still applies a 255-byte UTF-8 check to signal `request_id`. -A 255-character multibyte key can therefore return `422 invalid_request_id`. -The [installed CLI qualification](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056) -tracks this published limitation; it does not establish full request-key -acceptance under shared #216. +Native 3.9.2 applies the existing 255 Unicode code-point limit to signal and +update command keys throughout admission. A 255-character multibyte +`request_id` is accepted; 256 characters are refused without admission. This +corrects the [3.9.1 UTF-8 byte-count refusal](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056). +Use the body `request_id` as the retry key; the HTTP `X-Request-Id` header is +not a command key. + +Fresh keyed signal and accepted update receipts in 3.9.2 echo the literal +`request_id` with `retained:false` and `intent_verified:true`. Retained receipts +echo that key with `retained:true` and preserve the original command, run and +update identities. Modern intent proof reports `intent_verified:true`; +compatible pre-intent legacy readback reports `intent_verified:false`. +Unkeyed and bridge receipts keep their existing behavior. The +[published correction](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts) +does not establish every installed client cohort under +[shared #216](https://github.com/durable-workflow/.github/issues/216); earlier +3.9.1 failures must be rerun on the exact corrected tuple. The currently-configured values are published under `limits` on the `GET /api/cluster/info` response, so clients can discover them at runtime: diff --git a/docs/polyglot/server.md b/docs/polyglot/server.md index af2ab309bee..d8138164671 100644 --- a/docs/polyglot/server.md +++ b/docs/polyglot/server.md @@ -175,8 +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.1 require the +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. ### Ports diff --git a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md index 394e125ca98..c03f02df5aa 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md @@ -195,7 +195,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### 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: @@ -206,9 +206,9 @@ Ein Upgrade von native 3.8.x oder früher erfordert auf jedem Backend ein Schema | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -Stoppen Sie alle Server-Replikate, lassen Sie die Datenbank laufen, sichern Sie Datenbank und Server-Speicher und wählen und laden Sie dann das Image 3.9.1. Führen Sie dessen `schema-upgrade` einmal aus, bevor alle Replikate auf derselben Version neu starten. Server aktualisiert ein vorhandenes Schema nicht beim Start: Ein altes Schema wird mit `native_schema_upgrade_required` abgelehnt. Prüfen Sie danach Readiness, gemeldete Version und Worker-Registrierung. Die [qualifizierte Release-Anleitung für 3.9.1](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade) enthält die Compose-Befehle ohne Quellcode-Checkout. +Stoppen Sie alle Server-Replikate, lassen Sie die Datenbank laufen, sichern Sie Datenbank und Server-Speicher und wählen und laden Sie dann das Image 3.9.2. Führen Sie dessen `schema-upgrade` einmal aus, bevor alle Replikate auf derselben Version neu starten. Server aktualisiert ein vorhandenes Schema nicht beim Start: Ein altes Schema wird mit `native_schema_upgrade_required` abgelehnt. Prüfen Sie danach Readiness, gemeldete Version und Worker-Registrierung. Die [qualifizierte Release-Anleitung für 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback) enthält die Compose-Befehle ohne Quellcode-Checkout. -MySQL und MariaDB setzen unterbrochene Upgrades fort; SQLite und PostgreSQL führen den Schritt transaktional aus. Ein Rollback auf 3.8.x erfordert das Backup: 3.8.0 lehnt die aktualisierte Datenbank mit `native_schema_newer_than_binary` ab. Von 3.9.0 ist kein weiterer Schemaschritt nötig. Von älteren Versionen führt `schema-upgrade` auch die vorherigen Schritte aus, gegebenenfalls einschließlich des [JSON-Neuaufbaus aus 3.7](#native-schema-upgrade-3-7). Worker-Protokoll 1.20 und Control Plane 2 bleiben unverändert. +MySQL und MariaDB setzen unterbrochene Upgrades fort; SQLite und PostgreSQL führen den Schritt transaktional aus. Ein Rollback auf 3.8.x erfordert das Backup: 3.8.0 lehnt die aktualisierte Datenbank mit `native_schema_newer_than_binary` ab. Von 3.9.0 oder 3.9.1 ist kein weiterer Schemaschritt nötig: Replikate stoppen, sichern, neues Image wählen, neu starten und Readiness, Version sowie Worker-Registrierung prüfen. Physisches Schema und vorhandene Command-/Intent-Zeilen bleiben unverändert. Ein Rollback auf 3.9.1 nutzt dasselbe Schema, stellt aber Unicode-Key-/Belegmetadatenfehler wieder her und entfernt die Beobachtungseigentümer-Härtung. Von älteren Versionen führt `schema-upgrade` auch die vorherigen Schritte aus, gegebenenfalls einschließlich des [JSON-Neuaufbaus aus 3.7](#native-schema-upgrade-3-7). Worker-Protokoll 1.20 und Control Plane 2 bleiben unverändert. ### Upgrade auf Server 3.8.0 {#native-schema-upgrade-3-8} diff --git a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 1858b10d24e..cb704a1bada 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -62,7 +62,9 @@ Der native Server lehnt diese Einstellungen ab, sofern sie nicht den aufgeführt Der native Server akzeptiert, ignoriert aber: `DW_ADMIN_SIGNATURE_KEY`, `DW_AUTH_METHOD_HEADER`, `DW_AUTH_STATUS_HEADER`, `DW_BOOTSTRAP_DELAY_SECONDS`, `DW_BOOTSTRAP_RETRIES`, `DW_CALLER_LABEL_HEADER`, `DW_CALLER_TYPE_HEADER`, `DW_COMPRESSION_ENABLED`, `DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`, `DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`, `DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`, `DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`, `DW_EXTERNAL_PAYLOAD_S3_REGION`, `DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`, `DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`, `DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`, `DW_MAX_HISTORY_EVENTS`, `DW_MAX_TASKS_PER_POLL`, `DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`, `DW_OBSERVABILITY_CONTEXT_ENABLED`, `DW_OPERATOR_SIGNATURE_KEY`, `DW_PACKAGE_PROVENANCE_PATH`, `DW_POLLING_CACHE_PATH`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_SIGNATURE_KEY`, `DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`, `DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`, `DW_V2_CACHE_VALIDATION_MODE`, `DW_V2_GUARDRAILS_BOOT`, `DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`, `DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`, `DW_V2_MATCHING_ROLE_QUEUE_WAKE`, `DW_V2_TASK_DISPATCH_MODE`, `DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`, `DW_V2_TENANCY_ENVIRONMENT`, `DW_V2_TENANCY_ORGANIZATION`, `DW_V2_TENANCY_PROJECT`, `DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`, `DW_V2_VALIDATE_CACHE_BACKEND`, `DW_WAKE_SIGNAL_TTL_SECONDS`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`, `DW_WORKER_POLL_INTERVAL_MS`, `DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`, `DW_WORKER_SIGNATURE_KEY`. -Native 3.9.1 unterstützt optionale Storage-Admission anhand einer vom Betreiber veröffentlichten lokalen Beobachtung. Setzen Sie `DW_STORAGE_ADMISSION_FILE` auf den absoluten Pfad und `DW_STORAGE_ADMISSION_SOURCE` auf die erwartete Quellidentität. `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` ist standardmäßig 15 (Bereich 1–300). Sind Pfad und Quelle beide nicht gesetzt, ist die Funktion deaktiviert. Fehlende, ungültige oder veraltete Beobachtungen verweigern neue Arbeit mit `503 storage_admission_unavailable`; `draining` oder `fenced` verweigern sie mit `503 storage_pressure`. Readiness liefert ebenfalls 503, während der Datenbankzustand 200 bleiben kann. Die [veröffentlichten Dateiverbraucher-Kontrollen für 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) prüfen diese Fälle und die Erholung nach atomarem Dateiaustausch. Sie qualifizieren weder physische Kontingentmessung noch eine produktive Cloud-Zuordnung. Dies ist Admission-Control, keine Schreibsperre oder Byte-Reservierung. Owner-UID-Härtung und Completion-Uploads beim Draining bleiben außerhalb dieses veröffentlichten Umfangs. +Native 3.9.1 unterstützt optionale Storage-Admission anhand einer vom Betreiber veröffentlichten lokalen Beobachtung. Setzen Sie `DW_STORAGE_ADMISSION_FILE` auf den absoluten Pfad und `DW_STORAGE_ADMISSION_SOURCE` auf die erwartete Quellidentität. `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` ist standardmäßig 15 (Bereich 1–300). Sind Pfad und Quelle beide nicht gesetzt, ist die Funktion deaktiviert. Fehlende, ungültige oder veraltete Beobachtungen verweigern neue Arbeit mit `503 storage_admission_unavailable`; `draining` oder `fenced` verweigern sie mit `503 storage_pressure`. Readiness liefert ebenfalls 503, während der Datenbankzustand 200 bleiben kann. Die [veröffentlichten Dateiverbraucher-Kontrollen für 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) prüfen diese Fälle und die Erholung nach atomarem Dateiaustausch. Sie qualifizieren weder physische Kontingentmessung noch eine produktive Cloud-Zuordnung. Dies ist Admission-Control, keine Schreibsperre oder Byte-Reservierung. + +Native 3.9.2 verlangt zusätzlich, dass der bereits geöffnete Beobachtungsdeskriptor root oder der effektiven Server-UID gehört. Ein fremder Eigentümer wird mit `storage_admission_unavailable` abgewiesen; Eigentümer-, Typ-, Modus- und Inhaltsprüfungen verwenden denselben Deskriptor. Betreiber müssen weiterhin vertrauenswürdige Vorfahren und die vorgesehene schreibgeschützte Container-Zuordnung bereitstellen: Die Laufzeit erzwingt keine Eigentümerschaft der Vorfahren. Die [veröffentlichte 3.9.2-Korrektur](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership) qualifiziert weder physischen Collector noch Cloud-Einsatz und erlaubt keine Completion-Uploads beim Draining. Der native Server hat keine serverseitigen Lease- oder Zustellungsgrenzen für Task-Warteschlangen, keine Budgetgruppen, keine Anfragezulassung pro Namespace, keine Kontingente für dauerhaften Namespace-Zustand und keine Grenzen für gehaltene Polls; ein natives Gegenstück gibt es dafür noch nicht. Jeder native Server-Prozess öffnet höchstens vier Datenbankverbindungen. Abfrageaufgaben haben eine feste Grenze von 16 ausstehenden oder geleasten Aufgaben pro Namespace; darüber hinaus werden neue Abfragen wie bei PHP mit HTTP `429` und `query_task_queue_full` abgelehnt. Diese Grenze ist nicht konfigurierbar. Um die Task-Nebenläufigkeit auf dem nativen Server zu begrenzen, dimensionieren Sie die Slots jedes SDK-Workers und die Anzahl der Worker. [Task-Warteschlangenzulassung](/docs/polyglot/task-queue-admission) beschreibt die Steuerungen von PHP 2.x. @@ -294,7 +296,9 @@ Grenze für gewöhnliche Anfragen und Workflow-Task-Completions auf null Bytes, sodass nichtleere Bodys abgelehnt werden. Die Grenze für Operationsnamen ist fest auf 256 Bytes gesetzt. -Native 3.9.1 prüft Signal-`request_id` weiterhin gegen 255 UTF-8-Bytes. Ein mehrbyteiger Schlüssel mit 255 Zeichen kann daher `422 invalid_request_id` auslösen. Die [Qualifikation der installierten CLI](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056) verfolgt diese veröffentlichte Einschränkung; sie belegt keine vollständige Request-Key-Akzeptanz unter dem gemeinsamen #216. +Native 3.9.2 wendet die bestehende Grenze von 255 Unicode-Codepunkten auf Signal- und Update-Command-Keys durchgehend bei der Annahme an. Ein mehrbyteiges `request_id` mit 255 Zeichen wird akzeptiert, 256 Zeichen werden ohne Annahme abgewiesen. Das korrigiert die [UTF-8-Byte-Ablehnung aus 3.9.1](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056). Verwenden Sie das `request_id` im Body als Retry-Key; der HTTP-Header `X-Request-Id` ist kein Command-Key. + +Neue Signal-Belege mit Schlüssel und Belege akzeptierter Updates in 3.9.2 geben das literale `request_id` mit `retained:false` und `intent_verified:true` zurück. Aufbewahrte Belege geben den Schlüssel mit `retained:true` zurück und behalten ursprüngliche Command-, Run- und Update-Identitäten. Moderner Intent-Nachweis meldet `intent_verified:true`, kompatibles Legacy-Readback ohne Intent meldet `intent_verified:false`. Belege ohne Schlüssel und Bridge-Belege bleiben unverändert. Die [veröffentlichte Korrektur](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts) qualifiziert nicht alle installierten Client-Kohorten unter [gemeinsamem #216](https://github.com/durable-workflow/.github/issues/216); frühere 3.9.1-Fehlschläge müssen auf dem exakten korrigierten Tupel wiederholt werden. Die aktuell konfigurierten Werte werden unter `limits` in der Antwort von `GET /api/cluster/info` veröffentlicht. Clients können sie dadurch zur Laufzeit 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 79ccdfc91ae..6109f4df905 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -135,7 +135,8 @@ 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.1 benötigen vor dem Neustart das [explizite Schema-Upgrade](../deployment.md#native-schema-upgrade-3-9). +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. ### Ports {#ports} diff --git a/i18n/de/source-hashes.json b/i18n/de/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "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 888d6f10da0..a487cf195ac 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md @@ -263,7 +263,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### 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`: @@ -274,9 +274,9 @@ Actualizar desde native 3.8.x o anterior exige actualizar el esquema en todos lo | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -Detenga todas las réplicas del Server, mantenga la base de datos en ejecución, haga copia de la base de datos y del almacenamiento del Server, y seleccione y descargue la imagen 3.9.1. Ejecute una vez su `schema-upgrade` antes de reiniciar todas las réplicas con la misma versión. Server no actualiza un esquema existente al arrancar: rechaza el antiguo con `native_schema_upgrade_required`. Compruebe readiness, versión y registro del Worker después del reinicio. Las [instrucciones cualificadas de la versión 3.9.1](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade) incluyen los comandos Compose sin checkout del código fuente. +Detenga todas las réplicas del Server, mantenga la base de datos en ejecución, haga copia de la base de datos y del almacenamiento del Server, y seleccione y descargue la imagen 3.9.2. Ejecute una vez su `schema-upgrade` antes de reiniciar todas las réplicas con la misma versión. Server no actualiza un esquema existente al arrancar: rechaza el antiguo con `native_schema_upgrade_required`. Compruebe readiness, versión y registro del Worker después del reinicio. Las [instrucciones cualificadas de la versión 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback) incluyen los comandos Compose sin checkout del código fuente. -MySQL y MariaDB reanudan las actualizaciones interrumpidas; SQLite y PostgreSQL aplican el paso en una transacción. Volver a 3.8.x requiere restaurar la copia: 3.8.0 rechaza la base actualizada con `native_schema_newer_than_binary`. Desde 3.9.0 no hace falta otro paso de esquema. Desde versiones anteriores, `schema-upgrade` aplica también los pasos previos, incluida la [reconstrucción JSON de 3.7](#native-schema-upgrade-3-7) cuando corresponda. El protocolo de workers 1.20 y el plano de control 2 no cambian. +MySQL y MariaDB reanudan las actualizaciones interrumpidas; SQLite y PostgreSQL aplican el paso en una transacción. Volver a 3.8.x requiere restaurar la copia: 3.8.0 rechaza la base actualizada con `native_schema_newer_than_binary`. Desde 3.9.0 o 3.9.1 no hace falta otro paso de esquema: detenga réplicas, haga una copia, seleccione la imagen nueva, reinicie y verifique readiness, versión y registro de workers. El esquema físico y las filas existentes de comandos/intenciones no cambian. Volver a 3.9.1 usa el mismo esquema, pero restaura los defectos de claves Unicode/metadatos de recibos y elimina el endurecimiento del propietario de observaciones. Desde versiones anteriores, `schema-upgrade` aplica también los pasos previos, incluida la [reconstrucción JSON de 3.7](#native-schema-upgrade-3-7) cuando corresponda. El protocolo de workers 1.20 y el plano de control 2 no cambian. ### Actualizar a Server 3.8.0 {#native-schema-upgrade-3-8} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 17dc861a2c3..176a855bbfa 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -62,7 +62,9 @@ El Server nativo rechaza estos ajustes salvo que conserven el valor indicado: El Server nativo acepta pero ignora: `DW_ADMIN_SIGNATURE_KEY`, `DW_AUTH_METHOD_HEADER`, `DW_AUTH_STATUS_HEADER`, `DW_BOOTSTRAP_DELAY_SECONDS`, `DW_BOOTSTRAP_RETRIES`, `DW_CALLER_LABEL_HEADER`, `DW_CALLER_TYPE_HEADER`, `DW_COMPRESSION_ENABLED`, `DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`, `DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`, `DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`, `DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`, `DW_EXTERNAL_PAYLOAD_S3_REGION`, `DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`, `DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`, `DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`, `DW_MAX_HISTORY_EVENTS`, `DW_MAX_TASKS_PER_POLL`, `DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`, `DW_OBSERVABILITY_CONTEXT_ENABLED`, `DW_OPERATOR_SIGNATURE_KEY`, `DW_PACKAGE_PROVENANCE_PATH`, `DW_POLLING_CACHE_PATH`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_SIGNATURE_KEY`, `DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`, `DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`, `DW_V2_CACHE_VALIDATION_MODE`, `DW_V2_GUARDRAILS_BOOT`, `DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`, `DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`, `DW_V2_MATCHING_ROLE_QUEUE_WAKE`, `DW_V2_TASK_DISPATCH_MODE`, `DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`, `DW_V2_TENANCY_ENVIRONMENT`, `DW_V2_TENANCY_ORGANIZATION`, `DW_V2_TENANCY_PROJECT`, `DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`, `DW_V2_VALIDATE_CACHE_BACKEND`, `DW_WAKE_SIGNAL_TTL_SECONDS`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`, `DW_WORKER_POLL_INTERVAL_MS`, `DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`, `DW_WORKER_SIGNATURE_KEY`. -El runtime nativo 3.9.1 admite control de admisión de almacenamiento opcional mediante una observación local publicada por el operador. Configure `DW_STORAGE_ADMISSION_FILE` con su ruta absoluta y `DW_STORAGE_ADMISSION_SOURCE` con la identidad de origen esperada; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` vale 15 por defecto (rango 1–300). Si ruta y origen no están definidos, se desactiva. Las observaciones ausentes, inválidas o caducadas rechazan trabajo nuevo con `503 storage_admission_unavailable`; `draining` o `fenced` lo rechazan con `503 storage_pressure`. Readiness también devuelve 503 mientras la salud de la base puede seguir en 200. Los [controles publicados del consumidor de archivos 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) verifican estos casos y la recuperación tras reemplazar el archivo atómicamente. No cualifican medición física de cuotas ni un mapeo de Cloud en producción. Esto controla la admisión; no es una barrera de escritura ni una reserva de bytes. El endurecimiento del UID propietario y las cargas de finalización durante draining quedan fuera de este alcance publicado. +El runtime nativo 3.9.1 admite control de admisión de almacenamiento opcional mediante una observación local publicada por el operador. Configure `DW_STORAGE_ADMISSION_FILE` con su ruta absoluta y `DW_STORAGE_ADMISSION_SOURCE` con la identidad de origen esperada; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` vale 15 por defecto (rango 1–300). Si ruta y origen no están definidos, se desactiva. Las observaciones ausentes, inválidas o caducadas rechazan trabajo nuevo con `503 storage_admission_unavailable`; `draining` o `fenced` lo rechazan con `503 storage_pressure`. Readiness también devuelve 503 mientras la salud de la base puede seguir en 200. Los [controles publicados del consumidor de archivos 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) verifican estos casos y la recuperación tras reemplazar el archivo atómicamente. No cualifican medición física de cuotas ni un mapeo de Cloud en producción. Esto controla la admisión; no es una barrera de escritura ni una reserva de bytes. + +El runtime nativo 3.9.2 exige además que el descriptor de observación ya abierto pertenezca a root o al UID efectivo del Server. Un propietario ajeno provoca `storage_admission_unavailable`; las comprobaciones de propietario/tipo/modo/contenido usan el mismo descriptor. El operador debe proporcionar ancestros de confianza y el mapeo de contenedor de solo lectura previsto: el runtime no valida la propiedad de los ancestros. La [corrección publicada en 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership) no cualifica el recolector físico ni la adopción de Cloud, ni permite cargas de finalización durante draining. El Server nativo no tiene límites del lado del servidor para leases ni despachos de colas de tareas, grupos de presupuesto, admisión de peticiones por namespace, cuotas de estado duradero por namespace ni límites de sondeos retenidos, y todavía no existe un equivalente nativo. Cada proceso de Server nativo abre como máximo cuatro conexiones de base de datos. Las tareas de consulta tienen un límite fijo de 16 tareas pendientes o arrendadas por namespace; por encima de él, las nuevas consultas se rechazan con HTTP `429` y `query_task_queue_full`, como en PHP. Este límite no es configurable. Para acotar la concurrencia de tareas en el Server nativo, dimensione los slots de cada worker del SDK y el número de workers. [Admisión en colas de tareas](/docs/polyglot/task-queue-admission) describe los controles de PHP 2.x. @@ -288,7 +290,9 @@ En native 3.8.0, `DW_MAX_PAYLOAD_BYTES=0` establece un techo de cero bytes para solicitudes normales y finalizaciones de tareas de workflow, rechazando cuerpos no vacíos. El límite de nombres de operación es fijo: 256 bytes. -El runtime nativo 3.9.1 sigue comprobando `request_id` de señales contra 255 bytes UTF-8. Una clave multibyte de 255 caracteres puede devolver `422 invalid_request_id`. La [cualificación de la CLI instalada](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056) registra esta limitación publicada; no establece aceptación completa de claves de solicitud bajo el #216 compartido. +El runtime nativo 3.9.2 aplica el límite existente de 255 puntos de código Unicode a las claves de comandos de señal y actualización durante toda la admisión. Un `request_id` multibyte de 255 caracteres se acepta; 256 se rechazan sin admisión. Esto corrige el [rechazo por bytes UTF-8 de 3.9.1](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056). Use el `request_id` del cuerpo como clave de reintento; la cabecera HTTP `X-Request-Id` no es una clave de comando. + +Los recibos nuevos de señales con clave y actualizaciones aceptadas en 3.9.2 devuelven el `request_id` literal con `retained:false` e `intent_verified:true`. Los recibos retenidos devuelven esa clave con `retained:true` y conservan las identidades originales de comando, run y actualización. Una prueba moderna de intención indica `intent_verified:true`; una lectura heredada compatible anterior a las intenciones indica `intent_verified:false`. Los recibos sin clave y del puente no cambian. La [corrección publicada](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts) no cualifica todas las cohortes de clientes instalados del [#216 compartido](https://github.com/durable-workflow/.github/issues/216); los fallos anteriores de 3.9.1 deben repetirse con el conjunto exacto corregido. Los valores configurados actualmente se publican bajo `limits` en la respuesta de `GET /api/cluster/info`, de modo que los clientes pueden descubrirlos durante la ejecución: 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 f5035532f35..a329085a3cf 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -124,7 +124,8 @@ 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.1 exige la [actualización explícita del esquema](../deployment.md#native-schema-upgrade-3-9) antes de reiniciar. +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. ### Puertos {#ports} diff --git a/i18n/es/source-hashes.json b/i18n/es/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "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 8156a5b5d74..c12650eece8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md @@ -269,7 +269,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### 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` : @@ -280,9 +280,9 @@ Passer de native 3.8.x ou antérieur exige une mise à niveau du schéma sur cha | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -Arrêtez toutes les répliques du Server, laissez tourner la base de données, sauvegardez la base et le stockage du Server, puis sélectionnez et téléchargez l’image 3.9.1. Exécutez son `schema-upgrade` une fois avant de redémarrer toutes les répliques sur la même version. Server ne met pas à niveau un schéma existant au démarrage : il refuse l’ancien avec `native_schema_upgrade_required`. Vérifiez readiness, version et enregistrement du Worker après redémarrage. Les [instructions qualifiées de la version 3.9.1](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade) fournissent les commandes Compose sans checkout des sources. +Arrêtez toutes les répliques du Server, laissez tourner la base de données, sauvegardez la base et le stockage du Server, puis sélectionnez et téléchargez l’image 3.9.2. Exécutez son `schema-upgrade` une fois avant de redémarrer toutes les répliques sur la même version. Server ne met pas à niveau un schéma existant au démarrage : il refuse l’ancien avec `native_schema_upgrade_required`. Vérifiez readiness, version et enregistrement du Worker après redémarrage. Les [instructions qualifiées de la version 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback) fournissent les commandes Compose sans checkout des sources. -MySQL et MariaDB reprennent une mise à niveau interrompue ; SQLite et PostgreSQL appliquent l’étape dans une transaction. Revenir à 3.8.x exige de restaurer la sauvegarde : 3.8.0 refuse la base mise à niveau avec `native_schema_newer_than_binary`. Depuis 3.9.0, aucune étape de schéma supplémentaire n’est nécessaire. Depuis une version plus ancienne, `schema-upgrade` applique aussi les étapes antérieures, y compris la [reconstruction JSON de 3.7](#native-schema-upgrade-3-7) si nécessaire. Le protocole Worker 1.20 et le plan de contrôle 2 restent inchangés. +MySQL et MariaDB reprennent une mise à niveau interrompue ; SQLite et PostgreSQL appliquent l’étape dans une transaction. Revenir à 3.8.x exige de restaurer la sauvegarde : 3.8.0 refuse la base mise à niveau avec `native_schema_newer_than_binary`. Depuis 3.9.0 ou 3.9.1, aucune étape de schéma supplémentaire n’est nécessaire : arrêtez les répliques, sauvegardez, sélectionnez la nouvelle image, redémarrez et vérifiez readiness, version et enregistrement des Workers. Le schéma physique et les lignes de commandes/intention existantes sont inchangés. Revenir à 3.9.1 utilise le même schéma, mais rétablit les défauts de clés Unicode/métadonnées des reçus et retire le durcissement du propriétaire des observations. Depuis une version plus ancienne, `schema-upgrade` applique aussi les étapes antérieures, y compris la [reconstruction JSON de 3.7](#native-schema-upgrade-3-7) si nécessaire. Le protocole Worker 1.20 et le plan de contrôle 2 restent inchangés. ### Mettre à niveau vers Server 3.8.0 {#native-schema-upgrade-3-8} diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 6d43cb420e3..bab31b01488 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -62,7 +62,9 @@ Le natif refuse ces paramètres sauf s’ils conservent la valeur indiquée : Paramètres acceptés mais ignorés par le natif : `DW_ADMIN_SIGNATURE_KEY`, `DW_AUTH_METHOD_HEADER`, `DW_AUTH_STATUS_HEADER`, `DW_BOOTSTRAP_DELAY_SECONDS`, `DW_BOOTSTRAP_RETRIES`, `DW_CALLER_LABEL_HEADER`, `DW_CALLER_TYPE_HEADER`, `DW_COMPRESSION_ENABLED`, `DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`, `DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`, `DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`, `DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`, `DW_EXTERNAL_PAYLOAD_S3_REGION`, `DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`, `DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`, `DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`, `DW_MAX_HISTORY_EVENTS`, `DW_MAX_TASKS_PER_POLL`, `DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`, `DW_OBSERVABILITY_CONTEXT_ENABLED`, `DW_OPERATOR_SIGNATURE_KEY`, `DW_PACKAGE_PROVENANCE_PATH`, `DW_POLLING_CACHE_PATH`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_SIGNATURE_KEY`, `DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`, `DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`, `DW_V2_CACHE_VALIDATION_MODE`, `DW_V2_GUARDRAILS_BOOT`, `DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`, `DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`, `DW_V2_MATCHING_ROLE_QUEUE_WAKE`, `DW_V2_TASK_DISPATCH_MODE`, `DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`, `DW_V2_TENANCY_ENVIRONMENT`, `DW_V2_TENANCY_ORGANIZATION`, `DW_V2_TENANCY_PROJECT`, `DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`, `DW_V2_VALIDATE_CACHE_BACKEND`, `DW_WAKE_SIGNAL_TTL_SECONDS`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`, `DW_WORKER_POLL_INTERVAL_MS`, `DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`, `DW_WORKER_SIGNATURE_KEY`. -Le runtime natif 3.9.1 prend en charge l’admission de stockage optionnelle à partir d’une observation locale publiée par l’opérateur. Définissez `DW_STORAGE_ADMISSION_FILE` avec son chemin absolu et `DW_STORAGE_ADMISSION_SOURCE` avec l’identité de source attendue ; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` vaut 15 par défaut (plage 1–300). Sans chemin ni source, la fonction est désactivée. Une observation absente, invalide ou périmée refuse le nouveau travail avec `503 storage_admission_unavailable` ; `draining` ou `fenced` le refuse avec `503 storage_pressure`. Readiness renvoie aussi 503 tandis que la santé de la base peut rester à 200. Les [contrôles publiés du consommateur de fichier 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) vérifient ces cas et la reprise après remplacement atomique du fichier. Ils ne qualifient ni la mesure physique des quotas, ni un mappage Cloud en production. Il s’agit d’un contrôle d’admission, pas d’une barrière d’écriture ou d’une réservation d’octets. Le durcissement de l’UID propriétaire et les téléversements de finalisation pendant draining restent distincts de ce périmètre publié. +Le runtime natif 3.9.1 prend en charge l’admission de stockage optionnelle à partir d’une observation locale publiée par l’opérateur. Définissez `DW_STORAGE_ADMISSION_FILE` avec son chemin absolu et `DW_STORAGE_ADMISSION_SOURCE` avec l’identité de source attendue ; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` vaut 15 par défaut (plage 1–300). Sans chemin ni source, la fonction est désactivée. Une observation absente, invalide ou périmée refuse le nouveau travail avec `503 storage_admission_unavailable` ; `draining` ou `fenced` le refuse avec `503 storage_pressure`. Readiness renvoie aussi 503 tandis que la santé de la base peut rester à 200. Les [contrôles publiés du consommateur de fichier 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) vérifient ces cas et la reprise après remplacement atomique du fichier. Ils ne qualifient ni la mesure physique des quotas, ni un mappage Cloud en production. Il s’agit d’un contrôle d’admission, pas d’une barrière d’écriture ou d’une réservation d’octets. + +Le runtime natif 3.9.2 exige aussi que le descripteur d’observation déjà ouvert appartienne à root ou à l’UID effectif du Server. Un autre propriétaire entraîne `storage_admission_unavailable` ; les contrôles propriétaire/type/mode/contenu utilisent le même descripteur. Les opérateurs doivent fournir des ancêtres de confiance et le mappage de conteneur en lecture seule prévu : le runtime n’impose pas la propriété des ancêtres. La [correction publiée en 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership) ne qualifie ni le collecteur physique ni l’adoption Cloud et n’ajoute pas de téléversement de finalisation pendant draining. Le natif n’a ni plafonds côté serveur de baux ou de distribution des files de tâches, ni groupes de budget, ni admission des requêtes par namespace, ni quotas d’état durable par namespace, ni plafonds des polls en attente, et il n’en existe encore aucun équivalent natif. Chaque processus Server natif ouvre au plus quatre connexions à la base de données. Les tâches de requête de lecture ont une borne fixe de 16 tâches en attente ou louées par namespace ; au-delà, les nouvelles requêtes de lecture sont refusées avec HTTP `429` et `query_task_queue_full`, comme sur PHP. Cette borne n’est pas configurable. Pour borner la concurrence des tâches sur le natif, dimensionnez les emplacements de chaque worker SDK et le nombre de workers. [Admission des files de tâches](/docs/polyglot/task-queue-admission) décrit les contrôles de PHP 2.x. @@ -288,7 +290,9 @@ Sur native 3.8.0, `DW_MAX_PAYLOAD_BYTES=0` fixe un plafond de zéro octet pour les requêtes ordinaires et les complétions de tâches de workflow, refusant les corps non vides. Le plafond des noms d'opérations est fixé à 256 octets. -Le runtime natif 3.9.1 vérifie encore le `request_id` des signaux contre 255 octets UTF-8. Une clé multioctet de 255 caractères peut donc renvoyer `422 invalid_request_id`. La [qualification de la CLI installée](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056) suit cette limite publiée ; elle ne prouve pas l’acceptation complète des clés de requête du #216 partagé. +Le runtime natif 3.9.2 applique la limite existante de 255 points de code Unicode aux clés de commandes signal et update durant toute l’admission. Un `request_id` multioctet de 255 caractères est accepté ; 256 caractères sont refusés sans admission. Cela corrige le [refus en octets UTF-8 de 3.9.1](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056). Utilisez le `request_id` du corps comme clé de nouvelle tentative ; l’en-tête HTTP `X-Request-Id` n’est pas une clé de commande. + +Les nouveaux reçus de signaux avec clé et d’updates acceptées en 3.9.2 renvoient le `request_id` littéral avec `retained:false` et `intent_verified:true`. Les reçus conservés renvoient cette clé avec `retained:true` et gardent les identités d’origine de commande, run et update. La preuve moderne d’intention indique `intent_verified:true` ; une relecture héritée compatible antérieure aux intentions indique `intent_verified:false`. Les reçus sans clé et ceux du pont restent inchangés. La [correction publiée](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts) ne qualifie pas toutes les cohortes de clients installés du [#216 partagé](https://github.com/durable-workflow/.github/issues/216) ; les échecs antérieurs de 3.9.1 doivent être réexécutés sur le tuple corrigé exact. Les valeurs actuellement configurées sont publiées sous `limits` dans la réponse de `GET /api/cluster/info`, pour permettre leur découverte par les clients : 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 c2aaf777f1c..c2acde3b6a4 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -124,7 +124,8 @@ 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.1 exige la [mise à niveau explicite du schéma](../deployment.md#native-schema-upgrade-3-9) avant redémarrage. +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. ### Ports {#ports} diff --git a/i18n/fr/source-hashes.json b/i18n/fr/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "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 2a77559904b..8865ea2b272 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md @@ -170,7 +170,7 @@ 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.9.1 への更新 {#native-schema-upgrade-3-9} +### Server 3.9.2 への更新 {#native-schema-upgrade-3-9} native 3.8.x 以前からの更新では、すべてのバックエンドでスキーマ更新が必要です。Server 3.9.1 は空の `dw_command_intents` テーブルを追加します。 @@ -181,9 +181,9 @@ native 3.8.x 以前からの更新では、すべてのバックエンドでス | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -すべての Server レプリカを停止し、データベースは動かしたまま、データベースと Server ストレージをバックアップしてから、3.9.1 イメージを選んで取得します。そのイメージの `schema-upgrade` を 1 回実行した後、全レプリカを同じバージョンで再起動します。Server は起動時に既存スキーマを更新せず、古いスキーマでは `native_schema_upgrade_required` で拒否します。再起動後に readiness、報告バージョン、Worker 登録を確認してください。[検証済み 3.9.1 リリースの手順](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade)に、ソースの checkout が不要な Compose コマンドがあります。 +すべての Server レプリカを停止し、データベースは動かしたまま、データベースと Server ストレージをバックアップしてから、3.9.2 イメージを選んで取得します。そのイメージの `schema-upgrade` を 1 回実行した後、全レプリカを同じバージョンで再起動します。Server は起動時に既存スキーマを更新せず、古いスキーマでは `native_schema_upgrade_required` で拒否します。再起動後に readiness、報告バージョン、Worker 登録を確認してください。[検証済み 3.9.2 リリースの手順](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback)に、ソースの checkout が不要な Compose コマンドがあります。 -MySQL と MariaDB は中断後の更新を再開でき、SQLite と PostgreSQL はトランザクションでこのステップを適用します。3.8.x へのロールバックにはバックアップの復元が必要です。3.8.0 は更新済みデータベースを `native_schema_newer_than_binary` で拒否します。3.9.0 からは追加のスキーマ更新は不要です。さらに古いバージョンでは、`schema-upgrade` が該当する [3.7 の JSON 再構築](#native-schema-upgrade-3-7)などの以前の手順も適用します。Worker protocol 1.20 と control plane 2 は変わりません。 +MySQL と MariaDB は中断後の更新を再開でき、SQLite と PostgreSQL はトランザクションでこのステップを適用します。3.8.x へのロールバックにはバックアップの復元が必要です。3.8.0 は更新済みデータベースを `native_schema_newer_than_binary` で拒否します。3.9.0 または 3.9.1 からは追加のスキーマ更新は不要です。レプリカを停止し、バックアップ後に新しいイメージを選択して再起動し、readiness、バージョン、Worker 登録を確認します。物理スキーマと既存のコマンド・intent 行は変わりません。3.9.1 に戻す場合は同じスキーマを使えますが、Unicode キー・レシートメタデータの不具合が戻り、観測ファイル所有者の強化が失われます。さらに古いバージョンでは、`schema-upgrade` が該当する [3.7 の JSON 再構築](#native-schema-upgrade-3-7)などの以前の手順も適用します。Worker protocol 1.20 と control plane 2 は変わりません。 ### Server 3.8.0 へのアップグレード {#native-schema-upgrade-3-8} diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index ff735873b5c..c30195f694d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -62,7 +62,9 @@ PHP 2.x Server は `DB_*`、`REDIS_*`、`QUEUE_CONNECTION`、`CACHE_STORE` な ネイティブが受け付けるが無視する設定:`DW_ADMIN_SIGNATURE_KEY`、`DW_AUTH_METHOD_HEADER`、`DW_AUTH_STATUS_HEADER`、`DW_BOOTSTRAP_DELAY_SECONDS`、`DW_BOOTSTRAP_RETRIES`、`DW_CALLER_LABEL_HEADER`、`DW_CALLER_TYPE_HEADER`、`DW_COMPRESSION_ENABLED`、`DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`、`DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`、`DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`、`DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`、`DW_EXTERNAL_PAYLOAD_S3_REGION`、`DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`、`DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`、`DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`、`DW_MAX_HISTORY_EVENTS`、`DW_MAX_TASKS_PER_POLL`、`DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`、`DW_OBSERVABILITY_CONTEXT_ENABLED`、`DW_OPERATOR_SIGNATURE_KEY`、`DW_PACKAGE_PROVENANCE_PATH`、`DW_POLLING_CACHE_PATH`、`DW_QUERY_TASK_POLL_MAX_CONCURRENT`、`DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`、`DW_SIGNATURE_KEY`、`DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`、`DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`、`DW_V2_CACHE_VALIDATION_MODE`、`DW_V2_GUARDRAILS_BOOT`、`DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`、`DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`、`DW_V2_MATCHING_ROLE_QUEUE_WAKE`、`DW_V2_TASK_DISPATCH_MODE`、`DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`、`DW_V2_TENANCY_ENVIRONMENT`、`DW_V2_TENANCY_ORGANIZATION`、`DW_V2_TENANCY_PROJECT`、`DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`、`DW_V2_VALIDATE_CACHE_BACKEND`、`DW_WAKE_SIGNAL_TTL_SECONDS`、`DW_WORKER_LONG_POLL_MAX_CONCURRENT`、`DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`、`DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`、`DW_WORKER_POLL_INTERVAL_MS`、`DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`、`DW_WORKER_SIGNATURE_KEY`。 -Native 3.9.1 は、オペレーターが公開するローカル観測ファイルによる任意のストレージ受け入れ制御に対応します。`DW_STORAGE_ADMISSION_FILE` に絶対パス、`DW_STORAGE_ADMISSION_SOURCE` に期待するソース識別子を設定します。`DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` は既定 15、範囲 1–300 です。パスとソースの両方が未設定なら無効です。観測が欠落、不正、期限切れなら新しい処理を `503 storage_admission_unavailable` で拒否し、`draining` または `fenced` なら `503 storage_pressure` で拒否します。Readiness も 503 になりますが、DB health は 200 のままの場合があります。[公開済み 3.9.1 ファイル読み取りの検証](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351)では、これらのケースとファイルのアトミックな置換後の復旧を確認しています。物理的な容量制限の計測や本番 Cloud の対応付けを検証したものではありません。これは受け入れ制御であり、書き込みフェンスやバイト予約ではありません。所有者 UID の強化と draining 中の完了アップロードは、この公開済み範囲とは別です。 +Native 3.9.1 は、オペレーターが公開するローカル観測ファイルによる任意のストレージ受け入れ制御に対応します。`DW_STORAGE_ADMISSION_FILE` に絶対パス、`DW_STORAGE_ADMISSION_SOURCE` に期待するソース識別子を設定します。`DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` は既定 15、範囲 1–300 です。パスとソースの両方が未設定なら無効です。観測が欠落、不正、期限切れなら新しい処理を `503 storage_admission_unavailable` で拒否し、`draining` または `fenced` なら `503 storage_pressure` で拒否します。Readiness も 503 になりますが、DB health は 200 のままの場合があります。[公開済み 3.9.1 ファイル読み取りの検証](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351)では、これらのケースとファイルのアトミックな置換後の復旧を確認しています。物理的な容量制限の計測や本番 Cloud の対応付けを検証したものではありません。これは受け入れ制御であり、書き込みフェンスやバイト予約ではありません。 + +Native 3.9.2 では、開いた観測ファイルのディスクリプターの所有者が root または実効 Server UID である必要もあります。別の所有者なら `storage_admission_unavailable` で拒否し、所有者・型・モード・内容の検査は同じディスクリプターを使います。オペレーターは信頼できる親ディレクトリ群と意図した読み取り専用コンテナーマッピングを用意する必要があります。ランタイムは親ディレクトリ群の所有者を検証しません。[公開済み 3.9.2 修正](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership)は物理 Collector や Cloud 導入の検証ではなく、draining 中の完了アップロードも追加しません。 ネイティブには、Server 側のタスクキューのリース上限・ディスパッチ上限、予算グループ、namespace のリクエスト受付制限、namespace の永続状態クォータ、保持中の poll の上限がなく、現時点ではネイティブの代替手段もありません。ネイティブ Server の各プロセスは最大4本のデータベース接続を開きます。クエリタスクには namespace ごとに保留中またはリース中16件という固定の上限があり、それを超える新規クエリは、PHP と同様に HTTP `429` と `query_task_queue_full` で拒否されます。この上限は設定できません。ネイティブでタスクの並行数を制限するには、各 SDK Worker のスロット数と Worker 数を調整してください。PHP 2.x の制御は[タスクキューの受け入れ制御](/docs/polyglot/task-queue-admission)で説明しています。 @@ -283,7 +285,9 @@ Sticky 実行には Server イメージ専用の環境変数はありません PHP Server 2.x の設定可能な上限には、文書化された `DW_*` 設定を使ってください。コントローラーの検証上限は固定です。Native Server 3.x が対応する設定は、[実装上の注意](#native-server-3x)に記載されています。native 3.8.0 の `DW_MAX_PAYLOAD_BYTES=0` は、通常のリクエストとワークフロータスクの完了に対して 0 バイトの上限を設定し、空でないボディーを拒否します。操作名の上限は 256 バイトに固定されています。 -native 3.9.1 は、シグナルの `request_id` に 255 UTF-8 バイトのチェックを引き続き適用します。そのため、255 文字のマルチバイトキーでも `422 invalid_request_id` になる場合があります。[インストール済み CLI の検証](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056)でこの公開版の制限を追跡しています。共有 #216 のリクエストキー全体の合格を示すものではありません。 +Native 3.9.2 は Signal と Update のコマンドキーに対し、受理処理全体で既存の 255 Unicode コードポイント上限を適用します。255 文字のマルチバイト `request_id` は受理し、256 文字は受理せず拒否します。これは [3.9.1 の UTF-8 バイト数による拒否](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056)を修正します。再試行キーには body の `request_id` を使います。HTTP `X-Request-Id` ヘッダーはコマンドキーではありません。 + +3.9.2 の新規のキー付き Signal と受理済み Update のレシートは、リテラルの `request_id` を `retained:false`、`intent_verified:true` とともに返します。保持済みレシートはそのキーを `retained:true` とともに返し、元のコマンド・run・Update ID を保持します。現在の intent 証明は `intent_verified:true`、intent 導入前の互換 legacy 読み取りは `intent_verified:false` です。キーなしと bridge のレシートは従来どおりです。[公開済み修正](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts)は[共有 #216](https://github.com/durable-workflow/.github/issues/216)の全クライアントのインストール後検証を意味しません。以前の 3.9.1 の失敗は、正確な修正済み組み合わせで再検証する必要があります。 `GET /api/cluster/info` の `limits` に現在値を公開し、クライアントが実行時に確認できます。 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 a7749d93216..7c4212dd278 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -114,7 +114,8 @@ 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.1 への更新では、再起動前に[明示的なスキーマ更新](../deployment.md#native-schema-upgrade-3-9)が必要です。 +native 3.8.x 以前から 3.9.2 への更新では、再起動前に[明示的なスキーマ更新](../deployment.md#native-schema-upgrade-3-9)が必要です。 +3.9.0 または 3.9.1 からは追加のスキーマ更新は不要です。同じバックアップ・再起動・readiness 確認を行ってください。 ### ポート {#ports} diff --git a/i18n/ja/source-hashes.json b/i18n/ja/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "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 051bf82bddc..bbc031f4699 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md @@ -275,7 +275,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### 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`: @@ -286,9 +286,9 @@ Atualizar do native 3.8.x ou anterior exige upgrade do esquema em todos os backe | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -Pare todas as réplicas do Server, mantenha o banco ativo, faça backup do banco e do armazenamento do Server e selecione e baixe a imagem 3.9.1. Execute o `schema-upgrade` dessa imagem uma vez antes de reiniciar todas as réplicas na mesma versão. Server não atualiza um esquema existente na inicialização: recusa o antigo com `native_schema_upgrade_required`. Verifique readiness, versão e registro do Worker após reiniciar. As [instruções qualificadas da versão 3.9.1](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade) fornecem comandos Compose sem checkout do código-fonte. +Pare todas as réplicas do Server, mantenha o banco ativo, faça backup do banco e do armazenamento do Server e selecione e baixe a imagem 3.9.2. Execute o `schema-upgrade` dessa imagem uma vez antes de reiniciar todas as réplicas na mesma versão. Server não atualiza um esquema existente na inicialização: recusa o antigo com `native_schema_upgrade_required`. Verifique readiness, versão e registro do Worker após reiniciar. As [instruções qualificadas da versão 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback) fornecem comandos Compose sem checkout do código-fonte. -MySQL e MariaDB retomam upgrades interrompidos; SQLite e PostgreSQL aplicam a etapa em transação. Voltar para 3.8.x exige restaurar o backup: 3.8.0 recusa o banco atualizado com `native_schema_newer_than_binary`. A partir de 3.9.0, nenhuma etapa extra de esquema é necessária. De versões anteriores, `schema-upgrade` também aplica as etapas passadas, incluindo a [reconstrução JSON da 3.7](#native-schema-upgrade-3-7) quando aplicável. O protocolo Worker 1.20 e o plano de controle 2 não mudam. +MySQL e MariaDB retomam upgrades interrompidos; SQLite e PostgreSQL aplicam a etapa em transação. Voltar para 3.8.x exige restaurar o backup: 3.8.0 recusa o banco atualizado com `native_schema_newer_than_binary`. A partir de 3.9.0 ou 3.9.1, nenhuma etapa extra de esquema é necessária: pare réplicas, faça backup, selecione a nova imagem, reinicie e verifique readiness, versão e registro de Workers. O esquema físico e as linhas existentes de comandos/intenções não mudam. Voltar para 3.9.1 usa o mesmo esquema, mas restaura os defeitos de chaves Unicode/metadados dos recibos e remove o reforço do proprietário das observações. De versões anteriores, `schema-upgrade` também aplica as etapas passadas, incluindo a [reconstrução JSON da 3.7](#native-schema-upgrade-3-7) quando aplicável. O protocolo Worker 1.20 e o plano de controle 2 não mudam. ### Atualizar para o Server 3.8.0 {#native-schema-upgrade-3-8} diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index e4637b70fd2..962d5337d6d 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -62,7 +62,9 @@ O Server nativo recusa estas configurações, a menos que mantenham o valor indi O Server nativo aceita, mas ignora: `DW_ADMIN_SIGNATURE_KEY`, `DW_AUTH_METHOD_HEADER`, `DW_AUTH_STATUS_HEADER`, `DW_BOOTSTRAP_DELAY_SECONDS`, `DW_BOOTSTRAP_RETRIES`, `DW_CALLER_LABEL_HEADER`, `DW_CALLER_TYPE_HEADER`, `DW_COMPRESSION_ENABLED`, `DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`, `DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`, `DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`, `DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`, `DW_EXTERNAL_PAYLOAD_S3_REGION`, `DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`, `DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`, `DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`, `DW_MAX_HISTORY_EVENTS`, `DW_MAX_TASKS_PER_POLL`, `DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`, `DW_OBSERVABILITY_CONTEXT_ENABLED`, `DW_OPERATOR_SIGNATURE_KEY`, `DW_PACKAGE_PROVENANCE_PATH`, `DW_POLLING_CACHE_PATH`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_SIGNATURE_KEY`, `DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`, `DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`, `DW_V2_CACHE_VALIDATION_MODE`, `DW_V2_GUARDRAILS_BOOT`, `DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`, `DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`, `DW_V2_MATCHING_ROLE_QUEUE_WAKE`, `DW_V2_TASK_DISPATCH_MODE`, `DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`, `DW_V2_TENANCY_ENVIRONMENT`, `DW_V2_TENANCY_ORGANIZATION`, `DW_V2_TENANCY_PROJECT`, `DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`, `DW_V2_VALIDATE_CACHE_BACKEND`, `DW_WAKE_SIGNAL_TTL_SECONDS`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`, `DW_WORKER_POLL_INTERVAL_MS`, `DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`, `DW_WORKER_SIGNATURE_KEY`. -O runtime nativo 3.9.1 suporta admissão de armazenamento opcional a partir de uma observação local publicada pelo operador. Defina `DW_STORAGE_ADMISSION_FILE` com o caminho absoluto e `DW_STORAGE_ADMISSION_SOURCE` com a identidade de origem esperada; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` tem padrão 15 (intervalo 1–300). Sem caminho nem origem definidos, fica desativada. Observações ausentes, inválidas ou vencidas recusam trabalho novo com `503 storage_admission_unavailable`; `draining` ou `fenced` recusam com `503 storage_pressure`. Readiness também retorna 503 enquanto a saúde do banco pode continuar em 200. Os [controles publicados do consumidor de arquivo 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) verificam esses casos e a recuperação após substituição atômica do arquivo. Não qualificam medição física de quota nem mapeamento de Cloud em produção. Isso controla admissão; não é uma barreira de gravação ou reserva de bytes. O reforço do UID proprietário e uploads de conclusão durante draining continuam separados desse escopo publicado. +O runtime nativo 3.9.1 suporta admissão de armazenamento opcional a partir de uma observação local publicada pelo operador. Defina `DW_STORAGE_ADMISSION_FILE` com o caminho absoluto e `DW_STORAGE_ADMISSION_SOURCE` com a identidade de origem esperada; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` tem padrão 15 (intervalo 1–300). Sem caminho nem origem definidos, fica desativada. Observações ausentes, inválidas ou vencidas recusam trabalho novo com `503 storage_admission_unavailable`; `draining` ou `fenced` recusam com `503 storage_pressure`. Readiness também retorna 503 enquanto a saúde do banco pode continuar em 200. Os [controles publicados do consumidor de arquivo 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) verificam esses casos e a recuperação após substituição atômica do arquivo. Não qualificam medição física de quota nem mapeamento de Cloud em produção. Isso controla admissão; não é uma barreira de gravação ou reserva de bytes. + +O runtime nativo 3.9.2 também exige que o descritor da observação já aberto pertença a root ou ao UID efetivo do Server. Um proprietário diferente causa `storage_admission_unavailable`; as verificações de proprietário/tipo/modo/conteúdo usam o mesmo descritor. Operadores ainda devem fornecer ancestrais confiáveis e o mapeamento de contêiner somente leitura pretendido: o runtime não verifica a propriedade dos ancestrais. A [correção publicada em 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership) não qualifica coletor físico nem adoção do Cloud e não permite uploads de conclusão durante draining. O Server nativo não tem limites de lease ou de despacho de filas de tarefas no servidor, grupos de orçamento, admissão de requisições por namespace, cotas de estado durável por namespace nem limites de polling mantido em espera, e ainda não há equivalente nativo para eles. Cada processo do Server nativo abre no máximo quatro conexões de banco de dados. As tarefas de consulta têm um limite fixo de 16 tarefas pendentes ou com lease por namespace; acima dele, novas consultas são recusadas com HTTP `429` e `query_task_queue_full`, como no PHP. Esse limite não é configurável. Para limitar a concorrência de tarefas no Server nativo, dimensione os slots de cada worker do SDK e o número de workers. [Admissão de filas de tarefas](/docs/polyglot/task-queue-admission) descreve os controles do PHP 2.x. @@ -288,7 +290,9 @@ No native 3.8.0, `DW_MAX_PAYLOAD_BYTES=0` define um teto de zero bytes para requisições comuns e conclusões de tarefas de workflow, recusando corpos não vazios. O teto para nomes de operações é fixo em 256 bytes. -O runtime nativo 3.9.1 ainda verifica `request_id` de sinais contra 255 bytes UTF-8. Uma chave multibyte de 255 caracteres pode retornar `422 invalid_request_id`. A [qualificação da CLI instalada](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056) registra essa limitação publicada; ela não estabelece aceitação completa de chaves sob o #216 compartilhado. +O runtime nativo 3.9.2 aplica o limite existente de 255 pontos de código Unicode às chaves de comandos de sinais e atualizações durante toda a admissão. Um `request_id` multibyte de 255 caracteres é aceito; 256 caracteres são recusados sem admissão. Isso corrige a [recusa por bytes UTF-8 do 3.9.1](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056). Use o `request_id` do corpo como chave de nova tentativa; o cabeçalho HTTP `X-Request-Id` não é uma chave de comando. + +Recibos novos de sinais com chave e de atualizações aceitas no 3.9.2 devolvem o `request_id` literal com `retained:false` e `intent_verified:true`. Recibos retidos devolvem a chave com `retained:true` e preservam as identidades originais de comando, run e atualização. Prova moderna de intenção indica `intent_verified:true`; leitura legada compatível anterior às intenções indica `intent_verified:false`. Recibos sem chave e da ponte não mudam. A [correção publicada](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts) não qualifica todas as coortes de clientes instalados do [#216 compartilhado](https://github.com/durable-workflow/.github/issues/216); falhas anteriores do 3.9.1 devem ser repetidas no conjunto exato corrigido. Os valores configurados atualmente são publicados em `limits` na resposta de `GET /api/cluster/info`, para que clientes possam descobri-los em tempo de execução: 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 75c810cf0e0..3ffa51f7698 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,7 +124,8 @@ 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.1 exige o [upgrade explícito do esquema](../deployment.md#native-schema-upgrade-3-9) antes de reiniciar. +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. ### Portas {#ports} diff --git a/i18n/pt-BR/source-hashes.json b/i18n/pt-BR/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "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 3508f381ab7..554fa40629a 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md @@ -269,7 +269,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### Оновлення до Server 3.9.2 {#native-schema-upgrade-3-9} Оновлення з native 3.8.x або ранішої версії потребує оновлення схеми на кожному бекенді. Server 3.9.1 додає порожню таблицю `dw_command_intents`: @@ -280,9 +280,9 @@ docker compose --env-file durable-workflow.prod.env \ | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -Зупиніть усі репліки Server, залиште базу даних працювати, створіть резервні копії бази та сховища Server, а тоді виберіть і завантажте образ 3.9.1. Запустіть його `schema-upgrade` один раз перед перезапуском усіх реплік на тій самій версії. Server не оновлює наявну схему при запуску: він відмовляє зі старою схемою через `native_schema_upgrade_required`. Після перезапуску перевірте readiness, версію та реєстрацію Worker. [Кваліфіковані інструкції релізу 3.9.1](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade) містять команди Compose без checkout вихідного коду. +Зупиніть усі репліки Server, залиште базу даних працювати, створіть резервні копії бази та сховища Server, а тоді виберіть і завантажте образ 3.9.2. Запустіть його `schema-upgrade` один раз перед перезапуском усіх реплік на тій самій версії. Server не оновлює наявну схему при запуску: він відмовляє зі старою схемою через `native_schema_upgrade_required`. Після перезапуску перевірте readiness, версію та реєстрацію Worker. [Кваліфіковані інструкції релізу 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback) містять команди Compose без checkout вихідного коду. -MySQL і MariaDB продовжують перерване оновлення; SQLite та PostgreSQL застосовують крок транзакційно. Відкат до 3.8.x потребує відновлення резервної копії: 3.8.0 відмовляє з оновленою базою через `native_schema_newer_than_binary`. Із 3.9.0 додатковий крок схеми не потрібен. Для старіших версій `schema-upgrade` застосовує також попередні кроки, зокрема [перебудову JSON у 3.7](#native-schema-upgrade-3-7), якщо вона потрібна. Протокол Worker 1.20 і control plane 2 не змінюються. +MySQL і MariaDB продовжують перерване оновлення; SQLite та PostgreSQL застосовують крок транзакційно. Відкат до 3.8.x потребує відновлення резервної копії: 3.8.0 відмовляє з оновленою базою через `native_schema_newer_than_binary`. Із 3.9.0 або 3.9.1 додатковий крок схеми не потрібен: зупиніть репліки, створіть резервну копію, виберіть новий образ, перезапустіть і перевірте readiness, версію та реєстрацію Worker. Фізична схема й наявні рядки команд/намірів не змінюються. Відкат до 3.9.1 використовує ту саму схему, але повертає дефекти ключів Unicode/метаданих квитанцій та прибирає посилення власника спостережень. Для старіших версій `schema-upgrade` застосовує також попередні кроки, зокрема [перебудову JSON у 3.7](#native-schema-upgrade-3-7), якщо вона потрібна. Протокол Worker 1.20 і control plane 2 не змінюються. ### Оновлення до Server 3.8.0 {#native-schema-upgrade-3-8} diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 9f1af3f8b65..18789007359 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -83,7 +83,9 @@ Server. Як і `env:audit` у PHP, нативний аудит попередж Нативний Server приймає, але ігнорує: `DW_ADMIN_SIGNATURE_KEY`, `DW_AUTH_METHOD_HEADER`, `DW_AUTH_STATUS_HEADER`, `DW_BOOTSTRAP_DELAY_SECONDS`, `DW_BOOTSTRAP_RETRIES`, `DW_CALLER_LABEL_HEADER`, `DW_CALLER_TYPE_HEADER`, `DW_COMPRESSION_ENABLED`, `DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`, `DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`, `DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`, `DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`, `DW_EXTERNAL_PAYLOAD_S3_REGION`, `DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`, `DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`, `DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`, `DW_MAX_HISTORY_EVENTS`, `DW_MAX_TASKS_PER_POLL`, `DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`, `DW_OBSERVABILITY_CONTEXT_ENABLED`, `DW_OPERATOR_SIGNATURE_KEY`, `DW_PACKAGE_PROVENANCE_PATH`, `DW_POLLING_CACHE_PATH`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT`, `DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_SIGNATURE_KEY`, `DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`, `DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`, `DW_V2_CACHE_VALIDATION_MODE`, `DW_V2_GUARDRAILS_BOOT`, `DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`, `DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`, `DW_V2_MATCHING_ROLE_QUEUE_WAKE`, `DW_V2_TASK_DISPATCH_MODE`, `DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`, `DW_V2_TENANCY_ENVIRONMENT`, `DW_V2_TENANCY_ORGANIZATION`, `DW_V2_TENANCY_PROJECT`, `DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`, `DW_V2_VALIDATE_CACHE_BACKEND`, `DW_WAKE_SIGNAL_TTL_SECONDS`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT`, `DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`, `DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`, `DW_WORKER_POLL_INTERVAL_MS`, `DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`, `DW_WORKER_SIGNATURE_KEY`. -Нативний 3.9.1 підтримує опційне керування прийняттям роботи за сховищем через локальне спостереження, опубліковане оператором. Укажіть абсолютний шлях у `DW_STORAGE_ADMISSION_FILE` і очікувану ідентичність джерела в `DW_STORAGE_ADMISSION_SOURCE`; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` типово дорівнює 15 (діапазон 1–300). Якщо шлях і джерело не задані, функцію вимкнено. Відсутні, неправильні чи застарілі спостереження відхиляють нову роботу з `503 storage_admission_unavailable`; `draining` або `fenced` відхиляють її з `503 storage_pressure`. Readiness також повертає 503, тоді як стан бази може залишатися 200. [Опубліковані перевірки читача файлу 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) підтверджують ці випадки та відновлення після атомарної заміни файлу. Вони не кваліфікують фізичне вимірювання квоти чи виробниче відображення Cloud. Це керування прийняттям, а не огорожа запису чи резервування байтів. Посилення перевірки UID власника та завантаження завершень під час draining залишаються поза цим опублікованим обсягом. +Нативний 3.9.1 підтримує опційне керування прийняттям роботи за сховищем через локальне спостереження, опубліковане оператором. Укажіть абсолютний шлях у `DW_STORAGE_ADMISSION_FILE` і очікувану ідентичність джерела в `DW_STORAGE_ADMISSION_SOURCE`; `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` типово дорівнює 15 (діапазон 1–300). Якщо шлях і джерело не задані, функцію вимкнено. Відсутні, неправильні чи застарілі спостереження відхиляють нову роботу з `503 storage_admission_unavailable`; `draining` або `fenced` відхиляють її з `503 storage_pressure`. Readiness також повертає 503, тоді як стан бази може залишатися 200. [Опубліковані перевірки читача файлу 3.9.1](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351) підтверджують ці випадки та відновлення після атомарної заміни файлу. Вони не кваліфікують фізичне вимірювання квоти чи виробниче відображення Cloud. Це керування прийняттям, а не огорожа запису чи резервування байтів. + +Нативний 3.9.2 додатково вимагає, щоб уже відкритий дескриптор спостереження належав root або ефективному UID Server. Чужий власник спричиняє `storage_admission_unavailable`; перевірки власника/типу/режиму/вмісту використовують той самий дескриптор. Оператори мають забезпечити довірені батьківські каталоги та потрібне відображення контейнера лише для читання: runtime не перевіряє власність батьківських каталогів. [Опубліковане виправлення 3.9.2](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership) не кваліфікує фізичний колектор чи впровадження Cloud і не додає дозволу на завантаження завершень під час draining. Нативний Server не має серверних обмежень leases чи dispatch для task queues, budget-груп, admission запитів namespace, квот сталого стану namespace чи @@ -383,7 +385,9 @@ PHP Server 2.x. Межі перевірок контролера фіксова завершень workflow task, тому непорожні тіла відхиляються. Межа назв операцій фіксована й становить 256 байтів. -Нативний runtime 3.9.1 досі перевіряє `request_id` сигналів на межу 255 байтів UTF-8. Багатобайтовий ключ із 255 символів може повернути `422 invalid_request_id`. [Кваліфікація встановленої CLI](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056) відстежує це опубліковане обмеження; вона не доводить повної відповідності ключів спільному #216. +Нативний 3.9.2 застосовує наявну межу 255 кодових точок Unicode до ключів команд сигналів і оновлень на всьому шляху прийняття. Багатобайтовий `request_id` із 255 символів приймається; 256 символів відхиляються без прийняття. Це виправляє [відмову за кількістю байтів UTF-8 у 3.9.1](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056). Ключ повтору — `request_id` у тілі; HTTP-заголовок `X-Request-Id` не є ключем команди. + +Нові квитанції сигналів із ключем і прийнятих оновлень у 3.9.2 повертають буквальний `request_id` із `retained:false` та `intent_verified:true`. Збережені квитанції повертають цей ключ із `retained:true` і зберігають початкові ідентичності команди, run та оновлення. Сучасний доказ наміру повідомляє `intent_verified:true`; сумісне застаріле читання до появи намірів — `intent_verified:false`. Квитанції без ключа та мосту не змінюються. [Опубліковане виправлення](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts) не кваліфікує всі встановлені клієнтські когорти [спільного #216](https://github.com/durable-workflow/.github/issues/216); попередні збої 3.9.1 треба перевірити знову на точному виправленому наборі. Поточні значення публікуються під `limits` у відповіді `GET /api/cluster/info`, тому клієнти можуть дізнатися їх під час виконання: 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 5fca8f0ac55..a273e779407 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/server.md @@ -171,7 +171,8 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ задано `DW_AUTH_TOKEN`. [Посібник розгортання](/docs/deployment#single-node-production) описує production-файл env, резервні копії та оновлення. -Оновлення з native 3.8.x або ранішої версії до 3.9.1 потребує [явного оновлення схеми](../deployment.md#native-schema-upgrade-3-9) перед перезапуском. +Оновлення з native 3.8.x або ранішої версії до 3.9.2 потребує [явного оновлення схеми](../deployment.md#native-schema-upgrade-3-9) перед перезапуском. +Із 3.9.0 або 3.9.1 додатковий крок схеми не потрібен; виконайте ті самі перевірки резервування, перезапуску та readiness. ### Порти {#ports} diff --git a/i18n/uk/source-hashes.json b/i18n/uk/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "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 d76c7399628..91b5688435d 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md @@ -169,7 +169,7 @@ 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.9.1 {#native-schema-upgrade-3-9} +### 升级到 Server 3.9.2 {#native-schema-upgrade-3-9} 从 native 3.8.x 或更早版本升级时,所有后端都必须升级 schema。Server 3.9.1 添加空的 `dw_command_intents` 表: @@ -180,9 +180,9 @@ docker compose --env-file durable-workflow.prod.env \ | MariaDB | 13 → 14 | | MySQL | 14 → 15 | -停止所有 Server 副本,保持数据库运行,备份数据库和 Server 存储,然后选择并拉取 3.9.1 镜像。在以相同版本重启所有副本前,用该镜像运行一次 `schema-upgrade`。Server 不会在启动时升级已有 schema:旧 schema 会被 `native_schema_upgrade_required` 拒绝。重启后检查 readiness、报告的版本和 Worker 注册。[经过验证的 3.9.1 发布说明](https://github.com/durable-workflow/server/releases/tag/3.9.1#upgrade)提供无需 checkout 源码的 Compose 命令。 +停止所有 Server 副本,保持数据库运行,备份数据库和 Server 存储,然后选择并拉取 3.9.2 镜像。在以相同版本重启所有副本前,用该镜像运行一次 `schema-upgrade`。Server 不会在启动时升级已有 schema:旧 schema 会被 `native_schema_upgrade_required` 拒绝。重启后检查 readiness、报告的版本和 Worker 注册。[经过验证的 3.9.2 发布说明](https://github.com/durable-workflow/server/releases/tag/3.9.2#upgrade-and-rollback)提供无需 checkout 源码的 Compose 命令。 -MySQL 和 MariaDB 可继续被中断的升级;SQLite 和 PostgreSQL 在事务中应用此步骤。回退到 3.8.x 必须恢复备份:3.8.0 会以 `native_schema_newer_than_binary` 拒绝升级后的数据库。从 3.9.0 升级不需要额外的 schema 步骤。更早版本的 `schema-upgrade` 还会应用之前的步骤,包括适用的 [3.7 JSON 重建](#native-schema-upgrade-3-7)。Worker protocol 1.20 和 control plane 2 保持不变。 +MySQL 和 MariaDB 可继续被中断的升级;SQLite 和 PostgreSQL 在事务中应用此步骤。回退到 3.8.x 必须恢复备份:3.8.0 会以 `native_schema_newer_than_binary` 拒绝升级后的数据库。从 3.9.0 或 3.9.1 升级不需要额外的 schema 步骤:停止副本、备份、选择新镜像、重启并验证 readiness、版本和 Worker 注册。物理 schema 与现有命令/意图行保持不变。回退到 3.9.1 使用同一 schema,但会恢复 Unicode 键/回执元数据缺陷并失去观测文件所有者加固。更早版本的 `schema-upgrade` 还会应用之前的步骤,包括适用的 [3.7 JSON 重建](#native-schema-upgrade-3-7)。Worker protocol 1.20 和 control plane 2 保持不变。 ### 升级到 Server 3.8.0 {#native-schema-upgrade-3-8} diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md index 4a18066098d..0af34ab0f8f 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/server-config-reference.md @@ -62,7 +62,9 @@ PHP 2.x Server 还使用常规 Laravel 运行时设置,例如 `DB_*`、`REDIS_ 原生 Server 接受但忽略:`DW_ADMIN_SIGNATURE_KEY`、`DW_AUTH_METHOD_HEADER`、`DW_AUTH_STATUS_HEADER`、`DW_BOOTSTRAP_DELAY_SECONDS`、`DW_BOOTSTRAP_RETRIES`、`DW_CALLER_LABEL_HEADER`、`DW_CALLER_TYPE_HEADER`、`DW_COMPRESSION_ENABLED`、`DW_DUE_TIMER_RECOVERY_SCAN_LIMIT`、`DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS`、`DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID`、`DW_EXTERNAL_PAYLOAD_S3_ENDPOINT`、`DW_EXTERNAL_PAYLOAD_S3_REGION`、`DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY`、`DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN`、`DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT`、`DW_MAX_HISTORY_EVENTS`、`DW_MAX_TASKS_PER_POLL`、`DW_OBSERVABILITY_BAGGAGE_ALLOWLIST`、`DW_OBSERVABILITY_CONTEXT_ENABLED`、`DW_OPERATOR_SIGNATURE_KEY`、`DW_PACKAGE_PROVENANCE_PATH`、`DW_POLLING_CACHE_PATH`、`DW_QUERY_TASK_POLL_MAX_CONCURRENT`、`DW_QUERY_TASK_POLL_MAX_CONCURRENT_PER_NAMESPACE`、`DW_SIGNATURE_KEY`、`DW_SQLITE_CLAIM_LOCK_TTL_SECONDS`、`DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS`、`DW_V2_CACHE_VALIDATION_MODE`、`DW_V2_GUARDRAILS_BOOT`、`DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES`、`DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT`、`DW_V2_MATCHING_ROLE_QUEUE_WAKE`、`DW_V2_TASK_DISPATCH_MODE`、`DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS`、`DW_V2_TENANCY_ENVIRONMENT`、`DW_V2_TENANCY_ORGANIZATION`、`DW_V2_TENANCY_PROJECT`、`DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS`、`DW_V2_VALIDATE_CACHE_BACKEND`、`DW_WAKE_SIGNAL_TTL_SECONDS`、`DW_WORKER_LONG_POLL_MAX_CONCURRENT`、`DW_WORKER_LONG_POLL_MAX_CONCURRENT_PER_NAMESPACE`、`DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS`、`DW_WORKER_POLL_INTERVAL_MS`、`DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS`、`DW_WORKER_SIGNATURE_KEY`。 -原生 3.9.1 支持通过操作方发布的本地观测启用存储准入控制。将 `DW_STORAGE_ADMISSION_FILE` 设为绝对路径,将 `DW_STORAGE_ADMISSION_SOURCE` 设为预期来源标识;`DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` 默认为 15(允许范围 1–300)。路径和来源均未设置时禁用。缺失、无效或过期观测会以 `503 storage_admission_unavailable` 拒绝新工作;`draining` 或 `fenced` 观测以 `503 storage_pressure` 拒绝。Readiness 同样返回 503,而数据库健康检查可能仍为 200。[已发布的 3.9.1 文件消费验证](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351)确认这些情况以及原子替换文件后的恢复;不验证物理配额测量或生产 Cloud 映射。这是准入控制,不是写入屏障或字节预留。所有者 UID 加固和 draining 期间的完成上传仍属于此已发布范围之外的工作。 +原生 3.9.1 支持通过操作方发布的本地观测启用存储准入控制。将 `DW_STORAGE_ADMISSION_FILE` 设为绝对路径,将 `DW_STORAGE_ADMISSION_SOURCE` 设为预期来源标识;`DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` 默认为 15(允许范围 1–300)。路径和来源均未设置时禁用。缺失、无效或过期观测会以 `503 storage_admission_unavailable` 拒绝新工作;`draining` 或 `fenced` 观测以 `503 storage_pressure` 拒绝。Readiness 同样返回 503,而数据库健康检查可能仍为 200。[已发布的 3.9.1 文件消费验证](https://github.com/durable-workflow/server/issues/951#issuecomment-6853859351)确认这些情况以及原子替换文件后的恢复;不验证物理配额测量或生产 Cloud 映射。这是准入控制,不是写入屏障或字节预留。 + +原生 3.9.2 还要求已打开的观测文件描述符归 root 或 Server 的有效 UID 所有。其他所有者会导致 `storage_admission_unavailable`;所有者、类型、模式、内容检查均使用同一描述符。操作方仍须提供可信祖先目录及预期的只读容器映射:运行时不强制检查祖先所有权。[已发布的 3.9.2 修正](https://github.com/durable-workflow/server/releases/tag/3.9.2#storage-admission-observation-ownership)不代表物理采集器或 Cloud 采用验收,也不会增加 draining 期间的完成上传许可。 原生 Server 没有服务器端任务队列租约上限或派发上限、预算组、命名空间请求准入、命名空间持久状态配额或保持中轮询上限,目前也没有对应的原生替代方案。每个原生 Server 进程最多打开四个数据库连接。查询任务有固定上限:每个命名空间最多16个待处理或已租用的任务,超出后新查询会与 PHP 一样以 HTTP `429` 和 `query_task_queue_full` 被拒绝;该上限不可配置。要在原生 Server 上限制任务并发,请调整每个 SDK Worker 的执行槽数量和 Worker 数量。PHP 2.x 的控制项见[任务队列准入](/docs/polyglot/task-queue-admission)。 @@ -283,7 +285,9 @@ Sticky 执行没有独立的 Server 镜像环境变量。关于 sticky 缓存生 PHP Server 2.x 的可配置限制请使用已记录的 `DW_*` 设置。控制器校验上限是固定的。Native Server 3.x 支持的设置见其[实现说明](#native-server-3x)。在 native 3.8.0 中,`DW_MAX_PAYLOAD_BYTES=0` 会将普通请求和工作流任务完成请求的上限设为零字节,拒绝非空请求体。操作名上限固定为 256 字节。 -原生 3.9.1 仍对信号的 `request_id` 执行 255 个 UTF-8 字节的检查。因此,255 个字符的多字节键也可能返回 `422 invalid_request_id`。[安装后 CLI 验证](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056)跟踪这一已发布版本的限制;该验证不代表共享 #216 的请求键完整验收通过。 +原生 3.9.2 在信号和更新命令键的整个受理路径上应用现有的 255 Unicode 码点上限。255 字符的多字节 `request_id` 可被接受,256 字符则不经受理即被拒绝。这修复了 [3.9.1 按 UTF-8 字节数拒绝的问题](https://github.com/durable-workflow/server/issues/934#issuecomment-6853943056)。重试键是请求体中的 `request_id`;HTTP `X-Request-Id` 头不是命令键。 + +3.9.2 的新键控信号和已接受更新回执返回字面 `request_id`,并标明 `retained:false`、`intent_verified:true`。保留回执返回该键及 `retained:true`,保留原始命令、run、更新的标识。现代意图证明标明 `intent_verified:true`;兼容的意图记录引入前的旧式读取标明 `intent_verified:false`。无键和 bridge 回执保持原状。[已发布修正](https://github.com/durable-workflow/server/releases/tag/3.9.2#command-keys-and-receipts)不代表[共享 #216](https://github.com/durable-workflow/.github/issues/216) 的所有已安装客户端组合均已验证;此前 3.9.1 的失败必须在确切的修正后组合上重跑。 当前配置值发布在 `GET /api/cluster/info` 响应的 `limits` 下,客户端可在运行时发现这些限制: 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 ad8fb350630..037e3677f87 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,7 +113,8 @@ 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.1 时,必须在重启前[显式升级 schema](../deployment.md#native-schema-upgrade-3-9)。 +从 native 3.8.x 或更早版本升级到 3.9.2 时,必须在重启前[显式升级 schema](../deployment.md#native-schema-upgrade-3-9)。 +从 3.9.0 或 3.9.1 升级不需要额外的 schema 步骤;请执行相同的备份、重启与 readiness 检查。 ### 端口 {#ports} diff --git a/i18n/zh-Hans/source-hashes.json b/i18n/zh-Hans/source-hashes.json index a7bb6d4ef61..a6afeeaf79c 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": "04e84a3aa2b2fb57c4108468c85f862156249d67c7b96c4ad159faccd8661afe", + "deployment.md": "dbc8ff149cea02d1db474e4decd83ee12692a59087d86e8fcc7d7655206961e9", "failures-and-recovery.md": "a240727af9539cca9cceb6ab3ddea545c95f21402813365442929ea05c09e70c", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "cedd1e6c51dfa551e00edc1d39739ff1f67d558d2a0be92143f478cb6111536b", @@ -89,9 +89,9 @@ "polyglot/rust-cloud-quickstart.md": "2303434fc9302a81a8381ad4836423ef9952eb3201a4574c432254e3cb68c5f3", "polyglot/rust.md": "2cc511074e6d0ce8ababa0ccd6acbdaa7df3bf5d8c67ae5ef2fa07d75a05d2e7", "polyglot/server-api-reference.md": "8bac825f11f7aa3f2a335cf3d1dcdc951219f11d6702e9fe3502d3803fd1e2a5", - "polyglot/server-config-reference.md": "e7dc68015e9c1e43b102aa657c0dd2bc12487ef344cb10bdb2379c297114431f", + "polyglot/server-config-reference.md": "88f440db04a4636c1c2f88b3613c45b5b0cdf46aa27cf64c800f56feac59dfa5", "polyglot/server-role-topology.md": "3d048f0c6b5f179399622508f51e67fff8aa5a6d5b2492533fc720eeec2c27f2", - "polyglot/server.md": "55d5962ff5da8e29fbe0d568635c4d88ce539e39fdddce292df04b95b3561546", + "polyglot/server.md": "a2404c130fdc8611eff4b8844729225b95292eafd4206145078c3fe270d2b30c", "polyglot/service-operations.md": "a2ee46ac8d2e4f18aed4e3cb47a4f0b36f51ccc67f1e841efb99f0297391cf27", "polyglot/task-matching-dispatch.md": "9c8ffbbee16b5da48e7882721d7ba8eac209a374a6ca766d93d2b17e825b203d", "polyglot/task-queue-admission.md": "efcf934876a27c153dd3ecd1a995e7c08b37452c79dfcbba1ae7fa0a8cbad327", diff --git a/static/stable-releases.json b/static/stable-releases.json index 139d035029a..56b225aa8e6 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.0", + "helm-chart": "1.7.1", "sdk-php": "3.18.2", "sdk-python": "2.17.2", "sdk-rust": "4.16.0", - "server": "3.9.1", + "server": "3.9.2", "waterline": "2.18.0", "workflow": "2.28.0" }, "helm_chart": { - "app_version": "3.9.1", + "app_version": "3.9.2", "repository": "oci://ghcr.io/durable-workflow/charts/durable-workflow", - "oci_manifest_digest": "sha256:15e10c2296a5de518f5312db868144ab6c07a41f20faa7ff47a2c7b7551a6020", - "package_digest": "sha256:9c677b556b992ded56f21523b086702b23c66744c87a607843aa8259d748bab6", - "source_commit": "df64a66fa59fdcb25e4beb058e7fdc3ea957b0c8", - "qualification_url": "https://github.com/durable-workflow/server/actions/runs/43431846246" + "oci_manifest_digest": "sha256:1275bdf200878c292bad204edbd30478574c5c60ee30293281605d5ab551b980", + "package_digest": "sha256:ca2a3b60d01b33a9474e28932b41a8e64ac1c21931a9af45c8763b378938490d", + "source_commit": "f2edaa30e4dd330d8dbc408bb96cbf133c33484a", + "qualification_url": "https://github.com/durable-workflow/server/actions/runs/43465478903" } }