-
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
Settings validation resolution when user can't be prompted #651
Comments
We have fought with the settings validation system a lot and gone back and forth. Lots of times the questions are just to guide you through things that might be wrong. When the system just crashes in a validation error, lots of power users complain that they can't get their jobs to run even though they know what they're doing. This can be really frustrating. Running remotely must be automatically triggering the Maybe we could have it crash automatically in |
I sympathize with the frustration of the power users. But I also see the other side of things, where a developer (such as myself) might try to use the settings validation to force a user to make decisions about certain case settings that don't have clear defaults. So if I, as a developer, need a value to exist in the case settings under certain conditions but can't pick a reasonable default for that value, the settings validation system looks like a pretty good way to force the user to pick something. But if they just submit their job in
I think with this suggestion you are effectively saying that we no longer even prompt the user for a response at all? From my understanding, Another option I could think of is to add a new case setting to ARMI that let's the user decide how to proceed when the settings validation has questions. Something like
This should satisfy power users, and makes it very explicitly clear that they are overriding behavior that a developer believes is incorrect. It's like SUDO capabilities to override the settings validator. |
I'd like to log here that I didn't know this was an issue and ended up making this assumption, and so was burned by it. 😢 |
Ultimately it is on the user to check their output and justify any warnings. On this note, I will close this ticket because otherwise we would have to make an API-breaking change. I still don't like it, but that's okay 😄 |
Within the
settingsValidation
module, there is the ability for a case settings object to be inspected using anInspector
. TheInspector
will go through all valid queries and check the user's case settings to see that a bunch of common-sense criteria are met. All of those queries in the framework are located here:armi/armi/operators/settingsValidation.py
Lines 311 to 622 in bbec775
When the user submits a job locally and one or more of the queries fails inspection, a prompt will be sent to the user asking how to resolve the issue. For instance

Each of the queries is also associated with a potential resolution (or sometimes only the option to do nothing), and if the user opts to use that resolution, then ARMI will make the necessary change to the case settings object, re-inspect the settings, and keep prompting the user until everything looks kosher.
However, in cases where the user cannot be prompted for whatever reason (perhaps they are running on a remote machine), the question is instead printed in the log file, but the user cannot make any decisions, nothing is changed in the case settings, and the run continues even though ostensibly something is wrong.
I think that this system of just continuing the run when a setting-clash is known to exist is probably bad practice, because it gives the user the impression that their run is valid when in fact something is known to be wrong.
I think there are two alternatives that we might consider for cases when the user cannot be prompted to make a decision about clashing settings:
Any thoughts?
@ntouran @jakehader @onufer @john-science
The text was updated successfully, but these errors were encountered: