cli icon indicating copy to clipboard operation
cli copied to clipboard

[Bug] Temporal dev server does not seem to respect archival settings for namespaces

Open jacqueshimself opened this issue 2 years ago • 0 comments

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:

  1. when passing the default setting values at the start
  2. when passing them during the creation of a namespace
  3. 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.

jacqueshimself avatar Aug 17 '23 19:08 jacqueshimself