-
Notifications
You must be signed in to change notification settings - Fork 51
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
Implement plugin data versioning #390
Implement plugin data versioning #390
Conversation
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.
Dropped nit comments.
return GitCommitAction.class == type; | ||
public static final class ConverterV1 extends VersionedConverter<GitCommitAction> { | ||
public ConverterV1() { | ||
super(1); |
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.
Nit: super(1)
can be a constant to avoid magic numbers super(VERSION)
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.
Makes sense, added constants
String versionString = reader.getAttribute(VERSION_ATTRIBUTE); | ||
if (versionString == null) { | ||
// no attribute, data was written by an old version of the plugin | ||
return null; |
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.
I guess we're checking null
every time we get an action, right?
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.
Yes, these checks already exist: even before adding these changes it was possible to get a null
simply because an action was never added to a run/node (e.g. if CI Visibility was enabled while the run was already in progress, or if whitelist of tracked jobs changed, etc)
Requirements for Contributing to this repository
What does this PR do?
Implements versioning mechanism for plugin data that is serialized to disk.
This helps to avoid deserializing data written by older versions of the plugin in a format that we do not support anymore (currently trying to do so may result in deserializing builds partially - as the result some of the data is not displayed properly in Jenkins UI).
Also, going forward it will be easy to change the data format by adding new converter versions (while ensuring the data written by older versions remains readable).
Description of the Change
Alternate Designs
Possible Drawbacks
Verification Process
Additional Notes
Release Notes
Review checklist (to be filled by reviewers)
changelog/
label attached. If applicable it should have thebackward-incompatible
label attached.do-not-merge/
label attached.kind/
andseverity/
labels attached at least.