temporalio / temporalio/cli

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

Open
#312 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Go
Stars
379
Forks
103
Avg merge
2d 11h
Merged PRs (30d)
23

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with temporal server start-dev and the temporal operator namespace create, update, and list commands, using the archival flags shown. Compare the dev server's namespace results with those from the local Docker Compose server. Done means archival settings passed at startup, creation, and update are persisted and reported as enabled.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.