Hello all, Recently I encountered the following exception while deploying an plugin to our acceptance jenkins instance:
java.lang.IllegalStateException: Expected 1 instance of org.example.FooStore but got 2 at hudson.ExtensionList.lookupSingleton(ExtensionList.java:450) at org.example.MyFlowExecutionListener.onRunning(MyFlowExecutionListener.java:33) at org.jenkinsci.plugins.workflow.flow.FlowExecutionListener.fireRunning(FlowExecutionListener.java:54) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:321) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) As I am not sure how this could have happened and was so far not able to reproduce the issue I am asking here, hoping somebody experienced this before and knows the reason. Unfortunately the Jenkins instance has been rolled back and I can't provide more logs. The duplicate extension is defined and used onlu in this plugin. No other plugin can provide an extension for this. After the rollback I tried to lookup the extension via the groovy console and none was found (technically the class to load itself was missing as expected). Some information about the system: * Jenkins version: 2.164.3 * Plugin was dynamically loadable * Plugin was installed via the "Upload file" functionality of the upload center * The `FooStore` component is *always* looked up via `.lookupSingleton()` * The `FooStore` component is not part of any class hierarchy and is not Describable/has no descriptor * The plugin was installed in the past (but was uninstalled again) and the following leftovers did still exist (these are compatible with the newly deployed version): * Configuration XML (for another component) * Actions attached to builds (No serialized state besides two Strings) * Builds were executing during the installation * The plugin has worked hundreds of times while executed with the test harness, also so far I was not able reproduce the issue when manually installing it This looks like a fundamental problem of my plugin structure or a race condition somewhere in the plugin loading or lookup mechanism. Any pointers are appreciated. Thanks, Thomas -- 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 jenkinsci-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/20190715091152.GA4086%40amadeus.com. For more options, visit https://groups.google.com/d/optout.