You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Patrick Huber (JIRA)" <ji...@apache.org> on 2009/10/30 16:53:59 UTC

[jira] Commented: (FELIX-1078) The config/list command fails if a configuration has been deleted

    [ https://issues.apache.org/jira/browse/FELIX-1078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12771976#action_12771976 ] 

Patrick Huber commented on FELIX-1078:
--------------------------------------

I get this error all the time and as soon as it has happened once, every access to the configuration fails with the same exception and felix has to be restarted...

The system looks about like this:
- 1 bundle that exposes a custom configuration, wrapping the osgi configuration
- several bundles with spring contexts with multiple beans each that create several new properties in their afterPropertiesSet() method (these properties are later editable trough the shell thanks to a bunch of custom commands we made)

I suspect the problem is that the config is actually deleted and replaced with a new config object when a modification is made to the config. I have no clue of the inner workings of felix but my guess is that there should be some synchronization at some point, preventing reads while the config is replaced. Better yet, the config should be updated because some object may have and keep a reference to that config object for a longer period of time and changes should be visible...



> The config/list command fails if a configuration has been deleted
> -----------------------------------------------------------------
>
>                 Key: FELIX-1078
>                 URL: https://issues.apache.org/jira/browse/FELIX-1078
>             Project: Felix
>          Issue Type: Bug
>          Components: Karaf
>            Reporter: Guillaume Nodet
>
> {code}
> org.apache.geronimo.gshell.commandline.CommandLineExecutionFailed: org.apache.geronimo.gshell.command.CommandException: java.lang.IllegalStateException: Configuration org.ops4j.pax.logging deleted
> 	at org.apache.geronimo.gshell.parser.visitor.ExecutingVisitor.executePiped(ExecutingVisitor.java:246)
> 	at org.apache.geronimo.gshell.parser.visitor.ExecutingVisitor.visit(ExecutingVisitor.java:107)
> 	at org.apache.geronimo.gshell.parser.ASTExpression.jjtAccept(ASTExpression.java:17)
> 	at org.apache.geronimo.gshell.parser.SimpleNode.childrenAccept(SimpleNode.java:61)
> 	at org.apache.geronimo.gshell.parser.visitor.ExecutingVisitor.visit(ExecutingVisitor.java:90)
> 	at org.apache.geronimo.gshell.parser.ASTCommandLine.jjtAccept(ASTCommandLine.java:17)
> 	at org.apache.geronimo.gshell.wisdom.shell.CommandLineBuilderImpl$1.execute(CommandLineBuilderImpl.java:96)
> 	at org.apache.geronimo.gshell.wisdom.shell.CommandLineExecutorImpl.execute(CommandLineExecutorImpl.java:71)
> 	at org.apache.geronimo.gshell.commands.ssh.ShellFactoryImpl$ShellImpl.execute(ShellFactoryImpl.java:183)
> 	at org.apache.geronimo.gshell.commands.ssh.ShellFactoryImpl$ShellImpl$1.execute(ShellFactoryImpl.java:214)
> 	at org.apache.geronimo.gshell.console.Console.work(Console.java:187)
> 	at org.apache.geronimo.gshell.console.Console.run(Console.java:128)
> 	at org.apache.geronimo.gshell.commands.ssh.ShellFactoryImpl$ShellImpl.run(ShellFactoryImpl.java:236)
> 	at org.apache.geronimo.gshell.commands.ssh.ShellFactoryImpl$ShellImpl.run(ShellFactoryImpl.java:256)
> 	at java.lang.Thread.run(Thread.java:613)
> Caused by: org.apache.geronimo.gshell.command.CommandException: java.lang.IllegalStateException: Configuration org.ops4j.pax.logging deleted
> 	at org.apache.geronimo.gshell.wisdom.shell.CommandLineExecutorImpl.doExecute(CommandLineExecutorImpl.java:148)
> 	at org.apache.geronimo.gshell.wisdom.shell.CommandLineExecutorImpl.execute(CommandLineExecutorImpl.java:106)
> 	at org.apache.geronimo.gshell.parser.visitor.ExecutingVisitor$1.run(ExecutingVisitor.java:208)
> 	at org.apache.geronimo.gshell.parser.visitor.ExecutingVisitor.executePiped(ExecutingVisitor.java:231)
> 	... 14 more
> Caused by: java.lang.IllegalStateException: Configuration org.ops4j.pax.logging deleted
> 	at org.apache.felix.cm.impl.ConfigurationAdapter.checkDeleted(ConfigurationAdapter.java:170)
> 	at org.apache.felix.cm.impl.ConfigurationAdapter.getPid(ConfigurationAdapter.java:53)
> 	at org.apache.servicemix.kernel.gshell.config.ListCommand.doExecute(ListCommand.java:35)
> 	at org.apache.servicemix.kernel.gshell.config.ConfigCommandSupport.doExecute(ConfigCommandSupport.java:50)
> 	at org.apache.servicemix.kernel.gshell.core.OsgiCommandSupport.execute(OsgiCommandSupport.java:48)
> 	at org.apache.geronimo.gshell.wisdom.command.CommandSupport.executeAction(CommandSupport.java:303)
> 	at org.apache.geronimo.gshell.wisdom.command.StatefulCommand.executeAction(StatefulCommand.java:94)
> 	at org.apache.geronimo.gshell.wisdom.command.CommandSupport.execute(CommandSupport.java:194)
> 	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:585)
> 	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:64)
> 	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:78)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> 	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
> 	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> 	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:57)
> 	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:40)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> 	at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> 	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
> 	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> 	at $Proxy16.execute(Unknown Source)
> 	at org.apache.geronimo.gshell.wisdom.shell.CommandLineExecutorImpl.doExecute(CommandLineExecutorImpl.java:127)
> 	... 17 more
> {code}
> Actually the same exception also happen in the file deployer:
> {code}
> 10:59:08,309 | WARN  | Timer-1          | FileMonitor                      | x.kernel.filemonitor.FileMonitor  296 | Failed to process: /Users/gnodet/work/servicemix/smx4/nmr/trunk/assembly/target/apache-servicemix-nmr-1.0.0-SNAPSHOT/instances/smx1/etc/org.apache.servicemix.jbi.cluster.cfg. Reason: java.lang.IllegalStateException: Configuration org.apache.servicemix.jbi.cluster deleted
> java.lang.IllegalStateException: Configuration org.apache.servicemix.jbi.cluster deleted
> 	at org.apache.felix.cm.impl.ConfigurationAdapter.checkDeleted(ConfigurationAdapter.java:170)
> 	at org.apache.felix.cm.impl.ConfigurationAdapter.delete(ConfigurationAdapter.java:130)
> 	at org.apache.servicemix.kernel.filemonitor.FileMonitor.deleteConfiguration(FileMonitor.java:484)
> 	at org.apache.servicemix.kernel.filemonitor.FileMonitor.onFilesChanged(FileMonitor.java:241)
> 	at org.apache.servicemix.kernel.filemonitor.FileMonitor$1.filesChanged(FileMonitor.java:151)
> 	at org.apache.servicemix.kernel.filemonitor.Scanner.reportBulkChanges(Scanner.java:431)
> 	at org.apache.servicemix.kernel.filemonitor.Scanner.reportDifferences(Scanner.java:327)
> 	at org.apache.servicemix.kernel.filemonitor.Scanner.scan(Scanner.java:261)
> 	at org.apache.servicemix.kernel.filemonitor.Scanner$1.run(Scanner.java:221)
> 	at java.util.TimerThread.mainLoop(Timer.java:512)
> 	at java.util.TimerThread.run(Timer.java:462)
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.