Release v3.9.7
What Changed
5Upgrade Guide
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.7
$ helm rollback dify 0
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.7
$ helm rollback dify 0
flask rbac-migrate-member-roles (mandatory; members have no access until this finishes)flask rbac-migrate-dataset-permissions --apply (mandatory; dataset access is incorrect under RBAC until this finishes)flask backfill-plugin-auto-upgrade (mandatory) before restoring traffic# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.11.0
$ helm rollback dify 0
ALLOW_INLINE_STYLES environment variable that allows inline CSS styles in Markdown rendering. When enabled, HTML elements with inline style attributes in Markdown content are preserved instead of being stripped, enabling richer formatting in chat responses and knowledge base documents.DetachedInstanceError in the password reset flow, which has been resolved by correcting the ORM session handling.# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.6
$ helm rollback dify 0
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.5
$ helm rollback dify 0
cluster_id inserts on pod restart are now skipped, preventing the constraint violation.# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.10.0
$ helm rollback dify 0
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.4
$ helm rollback dify 0
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.3
$ helm rollback dify 0
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.2
$ helm rollback dify 0
Example Helm values for Azure managed identity:
global:
podLabels:
azure.workload.identity/use: "true"
plugin_daemon:
# azure managed service account
serviceAccountName: "plugin-daemon-mi"
enterpriseAudit:
serviceAccountName: "enterprise-audit-mi"
azureBlob:
useManagedIdentity: true
Example per-database credential environment variables:
# If not set, will fallback to externalDatabase.username, externalDatabase.password
databaseCredentials:
dify:
user: ""
password: ""
enterprise:
user: ""
password: ""
audit:
user: ""
password: ""
plugin_daemon:
user: ""
password: ""
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.1
$ helm rollback dify 0
workflow_based_app_execution is required — ensure your deployment configuration (Helm values or Docker Compose) includes workers consuming this queue, otherwise streaming executions will not be processed.https://api.smith.langchain.com/otel/v1/traces), enabling compatibility with LangSmith and other observability platforms that require path-based endpoints.max_tokens parameter in favor of max_completion_tokens. The Dify SDK now sends the correct parameter, eliminating the 400 "unsupported parameter" error.Pre-Upgrade Checklist
Configuring Additional Workers (Optional)
The default Celery worker is not affected by this feature. The trigger queue has been
merged into the common worker, so upgrading does not require a separate trigger worker
and existing trigger functionality continues to work without any configuration changes.
You may optionally deploy additional workers that consume specific queues, giving you fine-grained control over resource allocation and improved processing throughput.
Add an additionalWorkers list to your Helm values.yaml:
additionalWorkers:
- name: workflow-worker
enabled: false
replicas: 1
celeryQueues: "workflow,workflow_storage,workflow_based_app_execution"
celeryWorkerAmount: 2
resources: {}
nodeSelector: {}
affinity: {}
tolerations: []
extraEnv: []
# Back up database first, then:
$ helm upgrade -i dify -f values.yaml dify-ee/dify --version 3.9.0
$ helm rollback dify 0