Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-869

SCR throws exception on invalidating a component with a reference to a service that was already unregistered

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • framework-1.4.0, framework-1.4.1
    • framework-1.6.0
    • Framework
    • None
    • Felix 1.4.1, SCR 1.0.6

    Description

      Simple scenario: A component references (statically, 1:1, look-up strategy) a service. When the bundle providing that service is stopped and hence the reference no longer satisfied, stopping the bundle providing the component will result in the below exception.

      I checked with Equinox 3.4.1 and there everything is working fine.

      ERROR: net.eclipsetraining.backoffice.tplan.app.swing (9): [net.eclipsetraining.backoffice.tplan.ui.swing.internal.Component] BundleComponentActivator : Exception invalidating
      java.lang.IllegalStateException: The service registration is no longer valid.
      at org.apache.felix.framework.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:88)
      at org.apache.felix.framework.ServiceReferenceImpl.hashCode(ServiceReferenceImpl.java:87)
      at java.util.HashMap.removeEntryForKey(HashMap.java:548)
      at java.util.HashMap.remove(HashMap.java:538)
      at java.util.Collections$SynchronizedMap.remove(Collections.java:1982)
      at org.apache.felix.scr.impl.DependencyManager.ungetService(DependencyManager.java:578)
      at org.apache.felix.scr.impl.DependencyManager.close(DependencyManager.java:374)
      at org.apache.felix.scr.impl.AbstractComponentManager.disableInternal(AbstractComponentManager.java:589)
      at org.apache.felix.scr.impl.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:616)
      at org.apache.felix.scr.impl.AbstractComponentManager.dispose(AbstractComponentManager.java:272)
      at org.apache.felix.scr.impl.ImmediateComponentManager.dispose(ImmediateComponentManager.java:120)
      at org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:258)
      at org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:264)
      at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:177)
      at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:745)
      at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:674)
      at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:587)
      at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3629)
      at org.apache.felix.framework.Felix._stopBundle(Felix.java:2076)
      at org.apache.felix.framework.Felix.stopBundle(Felix.java:2034)
      at org.apache.felix.framework.BundleImpl.stop(BundleImpl.java:418)
      at org.apache.felix.framework.BundleImpl.stop(BundleImpl.java:405)
      at org.apache.felix.shell.impl.StopCommandImpl.execute(StopCommandImpl.java:70)
      at org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:276)
      at org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:167)
      at java.lang.Thread.run(Thread.java:637)

      Attachments

        Issue Links

          Activity

            People

              fmeschbe Felix Meschberger
              heiko.seeberger Heiko
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: