-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Update Configuration Loading #8477
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
chaptersix
commented
Oct 13, 2025
Contributor
Author
|
tabled until we start work |
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
chaptersix
commented
Oct 27, 2025
Update config tests to properly handle the new loading mechanism. Fix sqlite file config to use correct path.
Ensure that existing configuration files and environment variables continue to work with the new config loader implementation.
Expose config file path as an option in the FX dependency injection provider to support programmatic configuration.
## What changed? Fixing data race by extracting out close transfer task information prior to release lock. Added more context to comment. ## Why? Bug ## How did you test it? - [x] built - [x] run locally and tested manually - [x] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s)
## What changed? - Revert the removal of slice count check in multi-cursor slice count action. - The check was incorrectly removed in [#8416 L117](https://github.com/temporalio/temporal/pull/8416/files#diff-deecce1e374d8c4db074d9c923c2b80d1b8e28cef778202aa01397e8d56e1bafL117) ## Why? - Without the check, the code will panic later in `pickCompactCandidates` when currentSliceCount < targetSliceCount. ## How did you test it? - [x] built - [ ] run locally and tested manually - [ ] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s) - [x] will follow up with a test PR
## What changed? - Wire up chasm workflow library ## Why? - #8485 makes workflow start to use CHASM as well and we need to register workflow as a chasm library. ## How did you test it? - [x] built - [ ] run locally and tested manually - [ ] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s) ## Potential risks - Logic is only used when chasm feature flag is turned on. The change is mainly for functional tests.
## What changed? Add locking in newRateLimitManager and Stop. ## Why? Unlikely but potential data race if we get a dynamic config subscription callback after Subscribe returns before assigning to the field in the constructor. ## How did you test it? - [x] built and ran existing tests
## What changed? - Fix last change tracking for pri/fairness tasks. - Don't allow migration for sticky queues. - Improve fairness migration tests: - Set config only on test task queue - Use only ApproximateBacklogCount ## Why? This fixes some situations where we wouldn't update ApproximateBacklogCount on partition unload. It should also make the test less flaky. ## How did you test it? - [x] covered by existing tests
## What changed?
No-oping close transfer tasks for SyncWorkflowState tasks
## Why?
We need non state based replication to be eligible for this
optimization.
## How did you test it?
- [x] built
- [x] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [x] added new functional test(s)
`go test -v -tags test_dep ./tests/xdc -run
TestStreamBasedReplicationTestSuite/DisableTransitionHistory/TestCloseTransferTaskAckedReplication
-timeout 10m -count=1`
shows
`2025-10-20T08:15:08.290-0700 info Skipping close transfer task
generation - already acked on active cluster {"cluster-name":
"standby_aadnd", "host": "127.0.0.1:57179", "shard-id": 1, "address":
"127.0.0.1:57179", "wf-namespace-id":
"e550305e-0b43-4bcd-a490-8e3223f51ce1", "wf-id":
"test-replication-e2c094d3-c34f-42d9-a166-a967d4e7f602", "wf-run-id":
"019a0230-299a-74ba-a31f-ac247c05f2b9", "logging-call-at":
"/Users/michaely520/projects/temporal/service/history/workflow/task_generator.go:206"}
stream_based_replication_test.go:975: Verified IsCloseTransferTaskAcked
and IsForceReplication flags in SyncWorkflowStateTask`
Change help text to specify path is relative to current working directory rather than root directory, improving user clarity.
Update test assertions to match new config loading behavior.
81b09eb to
410ef28
Compare
bergundy
approved these changes
Nov 18, 2025
Member
bergundy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly LGTM. Didn't have any blocking comments. Feel free to address whatever and merge.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What Changed
This PR introduces a new
--config-fileflag (and theTEMPORAL_SERVER_CONFIG_FILE_PATHenvironment variable) to remove the dependency ondockerizein the Temporal server Docker image.When a configuration file is specified using either the CLI flag or the environment variable, the server will load configuration only from that file.
Users who want templating behavior similar to
dockerizecan enable it by adding the comment# enable-templateat the top of the configuration file.Key Changes
New
--config-fileflag:--config-fileflag that accepts a path to a single configuration file (absolute or relative to the project root).TEMPORAL_SERVER_CONFIG_FILE_PATHenvironment variable.Deprecated legacy flags:
--config,--env, and--zoneflags are now marked as deprecated in CLI help text.Embedded config template:
config_template.yamlfile is now embedded in the binary to support loading configuration from environment variables.# enable-templatecomment at the top.Templating support:
# enable-templateat the beginning of the YAML file.Configuration Loading Priority (Highest to Lowest)
--config-filespecified → Load that specific file--config,--env, or--zonespecified → Load from configuration directory (deprecated)Expected Behavior
The following examples illustrate how the new configuration loading logic behaves:
Default behavior:
Running
temporal startwithout flags loads configuration from environment variables only using the embedded template.Using
--config-file:temporal --config-file=/path/to/config.yaml startloads configuration from the specified file path.Using
TEMPORAL_SERVER_CONFIG_FILE_PATH:Setting
TEMPORAL_SERVER_CONFIG_FILE_PATH=/path/to/config.yaml temporal starthas the same effect as using the flag.Validation and error handling:
The CLI returns clear error messages when conflicting flags or environment variables are used, or when a specified file does not exist.
Breaking Change
The default behavior of
temporal starthas changed.It now loads configuration from environment variables instead of using a default template path.