-
Notifications
You must be signed in to change notification settings - Fork 66
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
[JENKINS-54484] - Java 10 Support + clean + verify compatibility with old Program.Dat #77
[JENKINS-54484] - Java 10 Support + clean + verify compatibility with old Program.Dat #77
Conversation
… get Java 9+ fixes
[JENKINS-52001] - Update JBoss Marshalling to 2.0.5.Final in order to get Java 9+ fixes
[JENKINS-52001] - Enable Incrementals deployment for the Java 10 support branch
…upport-clean # Conflicts: # pom.xml
/** | ||
* Tests deserializing program.dat, useful to catch | ||
*/ | ||
public class DeserializeUpdate { |
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 to upstream the test to the master branch. It is helpful independently of whether we merge it or not
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.
We don't generally upstream failing tests
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.
But it should be passing on Java 8, no?
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.
@oleg-nenashev No, because the actual code binary format is different, on Java 8 as well -- it's the bump to the marshaller that does it, not the specific java version in use.
Created https://issues.jenkins-ci.org/browse/JENKINS-54484 to track the problem separately |
</dependency> | ||
<dependency> | ||
<groupId>org.jenkins-ci</groupId> | ||
<artifactId>annotation-indexer</artifactId> |
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.
Should not be here. Defined in the parent POM.
Superseded by #84. |
Updates #68 with explicit code coverage (
@LocalData
test) to test compatibility ofprogram.dat
written with current JBoss Marshalling (1.4.12-jenkins-3). From JW|DW Nice Community Hackfest.Investigation showed that:
Diff link for Jboss Marshalling between those versions.
Unknown
Error reading the old Program.dat, from Marshalling 2.0.5.Final
Root cause: gets a byte 0 for the first byte of the object, but isn't expecting 0.
History for unmarshaller: Github Jboss marshalling link to history.
Possible workaround suggestion from @olivergondza that we might shade the old JBoss marshalling version and fall back to it if the new marshaller fails -- if compat is important. Alternative workaround solution is to include a big compatibility warning in the changelog for the upgrade, and tell users to finish their Pipelines before upgrading.
Issue #2: Persistence After Shutdown Of Jenkins
This occurs with the above error - it seems likely to be caused by the error handling if we fail to load the Pipeline program, and manifests with the latest workflow-job and workflow-cps versions (2.25 and 2.59, respectively). The cause is that we're still trying to write Pipeline data even after Jenkins shutdown (
Jenkins.getInstance()
is null). It is likely an independent persistence model problem in workflow-cps -- and if resolved satisfactorily (or proven) to be so, we can probably release the JBoss bump with the workarounds above.