Hi everyone,
I am investigating JENKINS-75864, a critical issue where RobustCollectionConverter silently drops collection items (such as BlockableBuildTriggerConfig) when their classes cannot be resolved during upgrade or boot.
Currently, the converter catches XStreamException and ignores the failing item to ensure Jenkins starts. However, if a save() is triggered (e.g., by a background migration task or user action) while the item is missing from memory, the configuration is permanently lost from disk.
I propose adding a system property (e.g., hudson.util.RobustCollectionConverter.failOnLoadError) to allow administrators to enforce "Strict Loading."
Default (False): Current behavior. Jenkins loads partially; data might be lost on save.
True: The converter re-throws the exception. The item (and likely the job) fails to load, but the config.xml on disk is preserved, allowing the admin to fix the plugin environment.
I am preparing a PR with this change. Is there any objection to introducing this opt-in safety valve?
Regards, @viru0909-dev
RobustCollectionConverter silently drops collection items (such as BlockableBuildTriggerConfig) when their classes cannot be resolved during upgrade or boot.