Hi again,

I just got the same problem when doing the same update in a child-instance 
(we're running the same bundle in multiple instances). Same scenario, the file 
was replaced with a never version- Somewhat different stack trace though:

2012-04-23 12:21:33,678 | ERROR | elixPackageAdmin | our-package-name       | ? 
                                  ? | 68 - our-package-name - 1.2.1.0 | 
[com.our.bundle.component.Class] Cannot register Component
java.lang.IllegalStateException: Invalid BundleContext.
        at 
org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:365)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.BundleContextImpl.getBundle(BundleContextImpl.java:92)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.scr.impl.ComponentRegistry.checkComponentName(ComponentRegistry.java:276)[71:org.apache.felix.scr:1.6.0]
        at 
org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:238)[71:org.apache.felix.scr:1.6.0]
        at 
org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:147)[71:org.apache.felix.scr:1.6.0]
        at 
org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:111)[71:org.apache.felix.scr:1.6.0]
        at 
org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:285)[71:org.apache.felix.scr:1.6.0]
        at 
org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:203)[71:org.apache.felix.scr:1.6.0]
        at 
org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3761)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.Felix.startBundle(Felix.java:1787)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.Felix$RefreshHelper.restart(Felix.java:4534)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.Felix.refreshPackages(Felix.java:3591)[org.apache.felix.framework-3.0.9.jar:]
        at 
org.apache.felix.framework.PackageAdminImpl.run(PackageAdminImpl.java:363)[org.apache.felix.framework-3.0.9.jar:]
        at java.lang.Thread.run(Unknown Source)[:1.6.0_29]


This time it seems like the deactivate was called fine, and so was the activate 
call. The activate failed this time though, due to internal problems (which I 
cannot really determine what it was, our activate exception catcher called an 
internal cleanup function which ALSO failed. Thus the original problem was 
never seen..). That is however not related, I think. 

Oh, and if anyone wonders why there are two posts on Nabble, I tried there 
first but Nabble failed to send my post to the mailing-list due to SPF blocks. 
Reposted directly to list to get it posted here as well.

/Johan

On Apr 23, 2012, at 12:15 , Johan Ström wrote:

> Hi,
> 
> I'm running karaf 2.2.6 on Linux, with a number of bundles utilizing SCR. The 
> bundle in question provides a SCR component (non-factory, immediate=true, 
> config designate set). The bundle is loaded from the deploy/ directory by 
> fileinstall.
> Today I dropped a new version of this bundle in the deploy directory, with 
> the same filename. The reaction I expected (and which has been working fine 
> earlier in same setup) was that the existing component instance was 
> deactivated, and a new instance from the new bundle to be activated.
> This was partly what happened.. The old component was first deactivated fine, 
> and the new component was initated fine. However, right after the activate() 
> method had done its deed, the following appeared in the log:
> 
> 2012-04-23 11:21:29,751 | ERROR | usr/karaf/deploy | scr                      
>         | ?                                   ? | 45 - org.apache.felix.scr - 
> 1.6.0 | Error while loading components of bundle our-bundle-name/98
> java.lang.IllegalStateException: Invalid BundleContext.
>        at 
> org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:365)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:315)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:442)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:101)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:285)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:203)[45:org.apache.felix.scr:1.6.0]
>        at 
> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3761)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.framework.Felix.startBundle(Felix.java:1787)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.framework.BundleImpl.start(BundleImpl.java:918)[org.apache.felix.framework-3.0.9.jar:]
>        at 
> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1232)[6:org.apache.felix.fileinstall:3.2.0]
> 
> The component seems to have been started properly though. However, now I 
> tried to do a console osgi:restart on this bundle, just to see if this was an 
> temporary race-problem or similar. The restart yielded the following:
> 
> 2012-04-23 11:25:00,787 | ERROR | Thread-1332      | our-bundle-name       | 
> ?                                   ? | 98 - our-bundle-name - 1.2.1.0 | 
> [com.our.bundle.component.Class] Cannot register Component
> java.lang.IllegalStateException: Invalid BundleContext.
>        at 
> org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:365)
>        at 
> org.apache.felix.framework.BundleContextImpl.getBundle(BundleContextImpl.java:92)
>        at 
> org.apache.felix.scr.impl.ComponentRegistry.checkComponentName(ComponentRegistry.java:276)
>        at 
> org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:238)
>        at 
> org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:147)
>        at 
> org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:111)
>        at 
> org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:285)
>        at 
> org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:203)
>        at 
> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)
>        at 
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)
>        at 
> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)
>        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3761)
>        at org.apache.felix.framework.Felix.startBundle(Felix.java:1787)
>        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:918)
>        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:905)
>        at 
> org.apache.karaf.shell.osgi.RestartBundle.doExecute(RestartBundle.java:31)
>        at 
> org.apache.karaf.shell.osgi.BundlesCommand.doExecute(BundlesCommand.java:37)
>        at 
> org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38)
>        at 
> org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)
>        at 
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)
>        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474)
>        at 
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400)
>        at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
>        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
>        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
>        at 
> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>        at org.apache.karaf.shell.console.jline.Console.run(Console.java:166)
>        at java.lang.Thread.run(Unknown Source)[:1.6.0_29]
>        at 
> org.apache.karaf.shell.ssh.ShellFactoryImpl$ShellImpl$4.doRun(ShellFactoryImpl.java:142)[14:org.apache.karaf.shell.ssh:2.2.6]
>        at 
> org.apache.karaf.shell.ssh.ShellFactoryImpl$ShellImpl$4$1.run(ShellFactoryImpl.java:133)
>        at java.security.AccessController.doPrivileged(Native 
> Method)[:1.6.0_29]
>        at javax.security.auth.Subject.doAs(Unknown Source)[:1.6.0_29]
>        at 
> org.apache.karaf.shell.ssh.ShellFactoryImpl$ShellImpl$4.run(ShellFactoryImpl.java:131)[14:org.apache.karaf.shell.ssh:2.2.6]
> 
> No deactivate of the previous component was seen. However, the activator 
> method of the component was still called. This failed though, since the old 
> component instance had not been torn down properly (the component works with 
> some parts which can only run one at at time in a JRE).
> 
> So, it seems like the component started partially the first time, at least 
> the activate() method did it's work. After that though, something failed, and 
> the component was not registered as started (?). Thus when I restarted the 
> bundle later, it did not have anything to stop() before.
> I've tried a few other things after this, removing the bundle file, removing 
> the associated configuration file for the component, but nothing seems to 
> kill this run-away component instance.
> 
> So, currently my component is running in this instance, without any control 
> possible.. I cannot stop it, and thus not start a new.. At least not without 
> restarting the whole karaf instance. Which I think is required by now, since 
> it has started to fail with java.lang.NoClassDefFoundError errors.. Probably 
> due to classloader issues after bundle restart/removal I guess?
> 
> Anyone seen anything similar? Any way to fix this without restarting the 
> whole karaf instance? I'll have to do that this time anyway to get it back to 
> working condition, but would be good to know if it happens again in the 
> future.
> 
> Thank you
> Johan

Reply via email to