"IllegalStateException: zip file closed" when upgrading JIRA Fisheye Plugin in JIRA 4.3
Symptoms
The following error message appears in the logs when upgrading a newer version of the JIRA Fisheye plugin in JIRA 4.3:
java.lang.IllegalStateException: zip file closed
at java.util.zip.ZipFile.ensureOpen(ZipFile.java:403)
at java.util.zip.ZipFile.getEntry(ZipFile.java:148)
at java.util.jar.JarFile.getEntry(JarFile.java:206)
at org.apache.felix.framework.util.JarFileX.getEntry(JarFileX.java:61)
at org.apache.felix.framework.cache.JarContent.getEntryAsBytes(JarContent.java:120)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.findClass(ModuleImpl.java:1738)
at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:716)
at org.apache.felix.framework.ModuleImpl.access$200(ModuleImpl.java:73)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1690)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at com.atlassian.jirafisheyeplugin.FishEyePropertiesImpl.getText(FishEyePropertiesImpl.java:67)
at com.atlassian.jirafisheyeplugin.FishEyePropertiesImpl.getText(FishEyePropertiesImpl.java:35)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.validateConfiguration(FishEyeConfigImpl.java:135)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.reloadPropertiesHelper(FishEyeConfigImpl.java:123)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.reloadProperties(FishEyeConfigImpl.java:113)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.refresh(FishEyeConfigImpl.java:216)
at com.atlassian.jirafisheyeplugin.config.RefreshManager.refreshAll(RefreshManager.java:86)
at com.atlassian.jirafisheyeplugin.config.RefreshManager.onStart(RefreshManager.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:60)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:28)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:56)
at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:151)
at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:70)
at com.atlassian.multitenant.event.DefaultPeeringEventPublisherManager.publish(DefaultPeeringEventPublisherManager.java:17)
at com.atlassian.multitenant.event.PeeringEventPublisher.publish(PeeringEventPublisher.java:23)
at com.atlassian.plugin.event.impl.DefaultPluginEventManager.broadcast(DefaultPluginEventManager.java:84)
at com.atlassian.jira.upgrade.PluginUpgradeLauncher.start(PluginUpgradeLauncher.java:39)
at com.atlassian.jira.startup.DefaultJiraLauncher.start(DefaultJiraLauncher.java:41)
at com.atlassian.jira.startup.LauncherContextListener$1.create(LauncherContextListener.java:57)
at com.atlassian.jira.startup.LauncherContextListener$1.create(LauncherContextListener.java:52)
at com.atlassian.multitenant.impl.MultiTenantComponentMapImpl.get(MultiTenantComponentMapImpl.java:121)
at com.atlassian.multitenant.impl.MultiTenantComponentMapImpl.onTenantStart(MultiTenantComponentMapImpl.java:165)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager$1.consume(DefaultMultiTenantManager.java:134)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager$1.consume(DefaultMultiTenantManager.java:131)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager.runForEachListener(DefaultMultiTenantManager.java:256)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager.startTenant(DefaultMultiTenantManager.java:130)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager.startAll(DefaultMultiTenantManager.java:203)
at com.atlassian.jira.startup.LauncherContextListener.contextInitialized(LauncherContextListener.java:85)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2012-03-21 22:34:35,446 main ERROR [atlassian.event.internal.EventPublisherImpl] There was an exception thrown trying to dispatch event
'com.atlassian.jira.extension.JiraStartedEvent@5411cd7' from the invoker 'com.atlassian.event.internal.SingleParameterMethodListenerInvoker@58dec5c'.
java.lang.RuntimeException: com/opensymphony/module/propertyset/PropertySet
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:54)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:60)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:28)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:56)
at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:151)
at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:70)
at com.atlassian.multitenant.event.DefaultPeeringEventPublisherManager.publish(DefaultPeeringEventPublisherManager.java:17)
at com.atlassian.multitenant.event.PeeringEventPublisher.publish(PeeringEventPublisher.java:23)
at com.atlassian.plugin.event.impl.DefaultPluginEventManager.broadcast(DefaultPluginEventManager.java:84)
at com.atlassian.jira.upgrade.PluginUpgradeLauncher.start(PluginUpgradeLauncher.java:39)
at com.atlassian.jira.startup.DefaultJiraLauncher.start(DefaultJiraLauncher.java:41)
at com.atlassian.jira.startup.LauncherContextListener$1.create(LauncherContextListener.java:57)
at com.atlassian.jira.startup.LauncherContextListener$1.create(LauncherContextListener.java:52)
at com.atlassian.multitenant.impl.MultiTenantComponentMapImpl.get(MultiTenantComponentMapImpl.java:121)
at com.atlassian.multitenant.impl.MultiTenantComponentMapImpl.onTenantStart(MultiTenantComponentMapImpl.java:165)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager$1.consume(DefaultMultiTenantManager.java:134)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager$1.consume(DefaultMultiTenantManager.java:131)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager.runForEachListener(DefaultMultiTenantManager.java:256)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager.startTenant(DefaultMultiTenantManager.java:130)
at com.atlassian.multitenant.impl.DefaultMultiTenantManager.startAll(DefaultMultiTenantManager.java:203)
at com.atlassian.jira.startup.LauncherContextListener.contextInitialized(LauncherContextListener.java:85)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: com/opensymphony/module/propertyset/PropertySet
at com.atlassian.jirafisheyeplugin.FishEyePropertiesImpl.getText(FishEyePropertiesImpl.java:67)
at com.atlassian.jirafisheyeplugin.FishEyePropertiesImpl.getText(FishEyePropertiesImpl.java:35)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.validateConfiguration(FishEyeConfigImpl.java:135)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.reloadPropertiesHelper(FishEyeConfigImpl.java:123)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.reloadProperties(FishEyeConfigImpl.java:113)
at com.atlassian.jirafisheyeplugin.config.FishEyeConfigImpl.refresh(FishEyeConfigImpl.java:216)
at com.atlassian.jirafisheyeplugin.config.RefreshManager.refreshAll(RefreshManager.java:86)
at com.atlassian.jirafisheyeplugin.config.RefreshManager.onStart(RefreshManager.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36)
... 35 more
Caused by: java.lang.ClassNotFoundException: com.opensymphony.module.propertyset.PropertySet
at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:772)
at org.apache.felix.framework.ModuleImpl.access$200(ModuleImpl.java:73)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1690)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 48 more
Cause
This message is harmless. The JIRA Fisheye plugin that is bundled with JIRA fails to unregister itself when the new version that you are upgrading to is deployed. This causes a listener inside the old version of the plugin to fail with the message "zip file closed" because the plugin's OSGi context has already been shut down. However, the new version of the plugin is unaffected by this and should continue working fine.
Resolution
This message is harmless and should have no user-facing effects. However, if you want to fix it you can perform the following steps:
- Stop JIRA
- Backup the file at
atlassian-jira/WEB-INF/classes/atlassian-bundled-plugins.zip
(in case you want to revert to the bundled version of the plugin later) Remove the JIRA Fisheye plugin from the bundled plugins zip by running the following command from the directory you extracted JIRA to:
zip -d atlassian-jira/WEB-INF/classes/atlassian-bundled-plugins.zip jira-fisheye-plugin-3.1.5.jar
Then you'll need to remove the JIRA Fisheye plugin from the bundled plugins directory in your JIRA home directory. You can do this by running the following command in your JIRA home directory:
rm plugins/.bundled-plugins/jira-fisheye-plugin-3.1.5.jar
- Start JIRA