On Thu, Jul 31, 2014 at 5:47 AM, <[email protected]> wrote: > 1. add removed fields and mark them as transient
If you mark them transient, they will not even be deserialized. (You might expect this to only prevent them from being *serialized* but it actually does both.) So you have to keep those fields nontransient, just @Deprecated. Tip: for primitive-valued fields, this will mean they stay in the config.xml with default values like 0/false. The workaround is to change the type to wrappers like Boolean or Integer; when the value is set to null during migration, the field will disappear from config.xml like you would want. > 2. register static method with @Initializer(after = > InitMilestone.JOB_LOADED) Use ItemListener.onLoaded. > 3. for each job do check whether new job property exists if not create new > one and move transient fields to it and then add new job property to the job This is the only solution I have found to this kind of problem. For example: https://github.com/jenkinsci/jenkins/commit/f6b43d08af68b051f6335ebacfb5198d7467a1a7 It is a little worrisome adding such a task to startup, but all Item’s are loaded in memory and quickly accessible, so if you are not making any changes there should be no disk I/O and thus the overhead is probably small. -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
