-
Notifications
You must be signed in to change notification settings - Fork 94
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
Allow 'cylc reload' to reload global configuration #6509
base: master
Are you sure you want to change the base?
Conversation
44554e6
to
2ae8bb3
Compare
We could do with documenting what can and cannot be reloaded. The configuration docs are autobuilt from the cylc-flow/cylc/flow/cfgspec/globalcfg.py Lines 739 to 741 in 9ff50f8
We define some common messages as module constants and template them in as needed, e.g: cylc-flow/cylc/flow/cfgspec/globalcfg.py Lines 341 to 347 in 9ff50f8
That sounds pretty bad! Presumably caused by platform definitions lingering from the original config? Or is it more subtle? |
Say a job starts with platform definition
While the job is running, the global configuration is changed to point to a different host
The existing job will continue running, and once it finishes it should report back to the Cylc server fine, however if the Cylc server tries to poll or kill the task any messages will get sent to the new platform host I don't think doing this should be blocked, it's one of the original use cases in #3762, but its worth highlighting in documentation. |
If If these hosts belong to two different platforms with two discrete queues, then failure is correct. This isn't a reasonable global config change, they are replacing one platform with another but using the same name for both, errors are expected. |
How does this functionality play with environment variables defined in the See #5418 (comment) |
Any environment variables that the cylc-rose plugin sets is kept constant through the reload |
It's not clear to me why the functional test is failing. Could be a timing thing, the workflow file is trying to do a cylc pause but that fails as it's using the wrong variable name, should be
|
Yes, that environment variable doesn't look right, but how was the test passing before? @wxtim, could you take a look at that functional test when you get a chance. |
That test is dubious (but probably not fatal since it's testing reload behaviour), but well spotted. I'll fix it on master. However, it is failing correctly in this case: I've opened a PR against your PR which should fix the problem and explains a little more: ScottWales#11 |
by both Cylc VR and Reload. Mirrors practice for VALIDATE, INSTALL, PLAY and RESTART
Add a store for CLI variables for reload, which can then be accessed
Thanks Tim, that's fixed the tests |
Reload has been a notoriously difficult feature to maintain and a major source of bugs, so we need to flesh out exactly what does and does not get reloaded and ensure we pin down our desired behavior with tests. Result of a quick skim of the global config (recommend a more detailed inspection):
|
For Added a functional test for Added a integration test for platform group updates. |
Add a
--global
flag tocylc reload
that will reload the server's global configuration when set. This can be used to update platform definitions while a workflow is running.Note that:
[scheduler]
section (ports, process pool size, etc.) require a server restart to take effect.Closes #3762
Check List
CONTRIBUTING.md
and added my name as a Code Contributor.setup.cfg
(andconda-environment.yml
if present).?.?.x
branch.