-
Type:
Bug
-
Resolution: Not A Defect
-
Priority:
Minor
-
Component/s: git-client-plugin
-
None
-
Environment:CloudBees CI 2.452.4.1
Git Client plugin 5.0.0
A user sees this warning regularly in their logs:
WARNING hudson.tools.ToolInstallation#writeReplace: Serialization of GitTool extends ToolInstallation over Remoting is deprecated
Full stack trace:
2024-11-01 20:03:54.116+0000 [id=2139]  WARNING hudson.tools.ToolInstallation#writeReplace: Serialization of GitTool extends ToolInstallation over Remoting is deprecated java.lang.Throwable     at hudson.tools.ToolInstallation.writeReplace(ToolInstallation.java:241)     at jdk.internal.reflect.GeneratedMethodAccessor168.invoke(Unknown Source)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:569)     at com.thoughtworks.xstream.core.util.SerializationMembers.callWriteReplace(SerializationMembers.java:101)     at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:154)     at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)     at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:59)     at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:44)     at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:87)     at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeBareItem(AbstractCollectionConverter.java:94)     at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:66)     at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeCompleteItem(AbstractCollectionConverter.java:81)     at com.thoughtworks.xstream.converters.collections.ArrayConverter.marshal(ArrayConverter.java:45)     at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)     at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:59)     at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)     at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:283)     at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:270)     at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:241)     at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:174)     at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:226)     at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:163)     at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)     at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:59)     at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:44)     at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:83)     at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37)     at com.thoughtworks.xstream.XStream.marshal(XStream.java:1303)     at com.thoughtworks.xstream.XStream.marshal(XStream.java:1292)     at com.thoughtworks.xstream.XStream.toXML(XStream.java:1265)     at hudson.XmlFile.write(XmlFile.java:216)     at hudson.model.Descriptor.save(Descriptor.java:915)     at hudson.BulkChange.commit(BulkChange.java:98)     at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:278)     at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:360)     at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:283)     at io.jenkins.plugins.casc.ConfigurationAsCode.lambda$configureWith$7(ConfigurationAsCode.java:823)     at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:773)     at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:823)     at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:695)     at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:352)     at io.jenkins.plugins.casc.ConfigurationAsCode$configure$0.call(Unknown Source)     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)     at hot-reload-casc_script.run(hot-reload-casc.script.groovy:2)     at groovy.lang.GroovyShell.evaluate(GroovyShell.java:574)     at groovy.lang.GroovyShell.evaluate(GroovyShell.java:612)     at groovy.lang.GroovyShell.evaluate(GroovyShell.java:593)     at com.cloudbees.opscenter.server.clusterops.steps.MasterGroovyClusterOpStep$Script.doCall(MasterGroovyClusterOpStep.java:139)     at com.cloudbees.opscenter.server.clusterops.steps.MasterGroovyClusterOpStep$Script.doCall(MasterGroovyClusterOpStep.java:87)     at com.cloudbees.opscenter.server.clusterops.AuthenticatedOperationsCenterToClientMasterCallable.call(AuthenticatedOperationsCenterToClientMasterCallable.java:31)     at hudson.remoting.UserRequest.perform(UserRequest.java:211)     at hudson.remoting.UserRequest.perform(UserRequest.java:54)     at hudson.remoting.Request$2.run(Request.java:377)     at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78)     at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18)     at hudson.remoting.CallableDecoratorList.lambda$applyDecorator$0(CallableDecoratorList.java:19)     at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)     at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80)     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)     at java.base/java.lang.Thread.run(Thread.java:840)
I am guessing that this has not come up before because it is not that common for people to use Tool Installation to manage their git client installs, and also the warning is probably easy to overlook in the Jenkins logs. I just wanted to flag this for refactoring if possible.