Hi,

>From what I see, the FilterImpl.match() methods are not synchronized yet
a single instance for the Mapper and Evaluator. I think, either the
match() methods should synchronize or the Mapper and Evaluator instances
should be created for each call to match.

I assume, the second solution (creating new instances on each call)
would probably be better as synchronization overhead tends to be more
heavy weight than memory allocation.

Regards
Felix

Am Dienstag, den 31.07.2007, 14:05 +0200 schrieb Tom Remoleur:
> Hello everybody,
> 
> Since I'm using felix with lot of bundle, sometimes I've got a rare bug,  
> but I was never able to reproduct him.
> But yesterday I've finally caught it. According to the stack trace, I  
> think that is a synchronization issue :
> Here two services are registred at same time from two differents threads  
> (configuration admin update thread and bundle initialisation thread), but  
> when firing event to ServiceListener, the same filter is evaluated by the  
> two threads at same time, resulting in errors (but as you can see the  
> filter is correct)
> 
> I'm sorry for the few informations avalaible but it's an occasional  
> problem and I can't easily debug it.
> 
> SEVERE: ERROR : FilterImpl:  
> (&(objectClass=fr.u_strasbg.clarinet.stork.service.cli.CLICommandContextService)(Context=ShellConf))
> org.apache.felix.log.impl.LogException:  
> org.apache.felix.framework.util.ldap.EvaluationException:  
> Evaluation.evalute: final stack has more than one result
>       at  
> org.apache.felix.framework.util.ldap.Evaluator.evaluate(Evaluator.java:128)
>       at org.apache.felix.framework.FilterImpl.match(FilterImpl.java:167)
>       at  
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:717)
>       at  
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:593)
>       at  
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:525)
>       at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3510)
>       at org.apache.felix.framework.Felix.access$000(Felix.java:36)
>       at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:576)
>       at  
> org.apache.felix.framework.ServiceRegistry.fireServiceChanged(ServiceRegistry.java:435)
>       at  
> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:71)
>       at org.apache.felix.framework.Felix.registerService(Felix.java:2637)
>       at  
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:254)
>       at  
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:232)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.registerService(ServiceImpl.java:610)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.activateService(ServiceImpl.java:408)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.access$000(ServiceImpl.java:41)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl$3.run(ServiceImpl.java:110)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor$1.run(SerialExecutor.java:29)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor.scheduleNext(SerialExecutor.java:66)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor.execute(SerialExecutor.java:50)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.calculateStateChanges(ServiceImpl.java:132)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.start(ServiceImpl.java:241)
>       at  
> org.apache.felix.dependencymanager.DependencyManager.add(DependencyManager.java:53)
>       at  
> fr.u_strasbg.clarinet.stork.impl.deviceconfig.ethernet.EthernetDeviceCategoryServiceImpl.deviceExist(EthernetDeviceCategoryServiceImpl.java:250)
>       at  
> fr.u_strasbg.clarinet.stork.impl.deviceconfig.ethernet.EthernetDeviceCategoryServiceImpl.addDevice(EthernetDeviceCategoryServiceImpl.java:203)
>       at  
> fr.u_strasbg.clarinet.stork.impl.deviceconfig.vlan.VlanFactoryServiceImpl.createVlan(VlanFactoryServiceImpl.java:279)
>       at  
> fr.u_strasbg.clarinet.stork.impl.deviceconfig.vlan.VlanFactoryServiceImpl.updated(VlanFactoryServiceImpl.java:197)
>       at  
> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:975)
>       at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:89)
> Jul 30, 2007 4:59:48 PM fr.u_strasbg.clarinet.stork.utils.common.APLogger  
> error
> SEVERE: ERROR : FilterImpl:  
> (&(objectClass=fr.u_strasbg.clarinet.stork.service.cli.CLICommandContextService)(Context=ShellConf))
> org.apache.felix.log.impl.LogException:  
> org.apache.felix.framework.util.ldap.EvaluationException: AND: too few  
> operands
>       at  
> org.apache.felix.framework.util.ldap.Parser.fewOperands(Parser.java:1710)
>       at 
> org.apache.felix.framework.util.ldap.Parser.access$000(Parser.java:27)
>       at  
> org.apache.felix.framework.util.ldap.Parser$AndOperator.execute(Parser.java:545)
>       at  
> org.apache.felix.framework.util.ldap.Evaluator.evaluate(Evaluator.java:92)
>       at org.apache.felix.framework.FilterImpl.match(FilterImpl.java:167)
>       at  
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:717)
>       at  
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:593)
>       at  
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:525)
>       at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3510)
>       at org.apache.felix.framework.Felix.access$000(Felix.java:36)
>       at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:576)
>       at  
> org.apache.felix.framework.ServiceRegistry.fireServiceChanged(ServiceRegistry.java:435)
>       at  
> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:71)
>       at org.apache.felix.framework.Felix.registerService(Felix.java:2637)
>       at  
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:254)
>       at  
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:232)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.registerService(ServiceImpl.java:610)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.activateService(ServiceImpl.java:408)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.access$000(ServiceImpl.java:41)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl$1.run(ServiceImpl.java:98)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor$1.run(SerialExecutor.java:29)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor.scheduleNext(SerialExecutor.java:66)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor.access$000(SerialExecutor.java:15)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor$1.run(SerialExecutor.java:32)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor.scheduleNext(SerialExecutor.java:66)
>       at  
> org.apache.felix.dependencymanager.SerialExecutor.execute(SerialExecutor.java:50)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.calculateStateChanges(ServiceImpl.java:132)
>       at  
> org.apache.felix.dependencymanager.ServiceImpl.start(ServiceImpl.java:241)
>       at  
> org.apache.felix.dependencymanager.DependencyManager.add(DependencyManager.java:53)
>       at  
> fr.u_strasbg.clarinet.stork.impl.deviceconfig.vlan.VlanDeviceActivator.init(VlanDeviceActivator.java:80)
>       at  
> org.apache.felix.dependencymanager.DependencyActivatorBase.start(DependencyActivatorBase.java:74)
>       at  
> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
>       at org.apache.felix.framework.Felix._startBundle(Felix.java:1535)
>       at org.apache.felix.framework.Felix.startBundle(Felix.java:1469)
>       at  
> org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1064)
>       at 
> org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:258)
>       at java.lang.Thread.run(Unknown Source)
> 
> 
> Tom
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to