[Bug] Temporal dev server does not seem to respect archival settings for namespaces
What are you really trying to do?
I am trying to play with archival settings on the dev server (formerly known as temporalite), to get a feel for it and figure if I need to develop a custom provider or not.
Describe the bug
The archival enablement settings from the command line do not seem to be respected by the temporal dev server:
- when passing the default setting values at the start
- when passing them during the creation of a namespace
- when updating an existing namespace
Minimal Reproduction
1- Passing default settings on the start command line:
# in one terminal
./temporal server start-dev --dynamic-config-value Config.HistoryArchivalState="true" --dynamic-config-value Config.VisibilityArchivalState="true" --db-filename temporal.dev.sqlite
# in the other terminal
./temporal operator namespace list
NamespaceInfo.Name temporal-system
../..
NamespaceInfo.Name default
NamespaceInfo.Id c86d0df8-3ff7-4715-b718-3f12f1c1516c
NamespaceInfo.Description
NamespaceInfo.OwnerEmail
NamespaceInfo.State Registered
Config.WorkflowExecutionRetentionTtl 24h0m0s
ReplicationConfig.ActiveClusterName active
ReplicationConfig.Clusters [&ClusterReplicationConfig{ClusterName:active,}]
Config.HistoryArchivalState Disabled
Config.VisibilityArchivalState Disabled
IsGlobalNamespace false
FailoverVersion 0
FailoverHistory []
2- Passing archival settings during the creation of a namespace
# create
./temporal operator namespace create --history-archival-state enabled --retention 15 --visibility-archival-state enabled tomato
Namespace tomato successfully registered.
# verify
./temporal operator namespace list
../..
NamespaceInfo.Name tomato
NamespaceInfo.Id f93d576d-e6f8-4ed3-b3c1-cf43cd3fdc6b
NamespaceInfo.Description
NamespaceInfo.OwnerEmail
NamespaceInfo.State Registered
Config.WorkflowExecutionRetentionTtl 360h0m0s
ReplicationConfig.ActiveClusterName active
ReplicationConfig.Clusters [&ClusterReplicationConfig{ClusterName:active,}]
Config.HistoryArchivalState Disabled
Config.VisibilityArchivalState Disabled
IsGlobalNamespace false
FailoverVersion 0
FailoverHistory []
3- Passing archival settings when updating an existing namespace
# run an update after case 2
./temporal operator namespace update --history-archival-state enabled --history-archival-state enabled --retention 10 tomato
Namespace tomato update succeeded.
# verify that the retention update worked, but the archival did not:
./temporal operator namespace list
../..
NamespaceInfo.Name tomato
NamespaceInfo.Id f93d576d-e6f8-4ed3-b3c1-cf43cd3fdc6b
NamespaceInfo.Description
NamespaceInfo.OwnerEmail
NamespaceInfo.State Registered
Config.WorkflowExecutionRetentionTtl 240h0m0s
ReplicationConfig.ActiveClusterName active
ReplicationConfig.Clusters [&ClusterReplicationConfig{ClusterName:active,}]
Config.HistoryArchivalState Disabled
Config.VisibilityArchivalState Disabled
IsGlobalNamespace false
FailoverVersion 0
FailoverHistory []
Environment/Versions
- OS and processor: M1 Mac
- Temporal Version: temporalite built from tip of live version: d128e0c04389219b9aa032bf63a0889c965ba535
- Are you using Docker or Kubernetes or building Temporal from source? built from source.
Additional context
When I trace the CLI in the debugger, I can see that the command line parameters for the namespace creation are properly passed into the namespace creation request. I was not sure how to set up tooling to decode the proto in the sqlite file to see what's in there. When I trace the data on the way out, the settings have not been respected.
When I try the same namespace creation against a docker compose version of temporal running locally, the archival settings are respected.