You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Jens Offenbach (JIRA)" <ji...@apache.org> on 2014/11/19 10:21:33 UTC

[jira] [Comment Edited] (FELIX-4698) SynchronousConfigurationListener

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

Jens Offenbach edited comment on FELIX-4698 at 11/19/14 9:21 AM:
-----------------------------------------------------------------

Yes... You are right, that imitated the problem exactly. SCR calls getProperties() on an already "deleted" configuration which causes an IllegalStateException in the Felix ConfigurationAdmin. Things would work, when the ConfigurationAdmin allows all (async) ConfigurationListeners to access the configuration (its properties) when it was possible from the point in time of event creation. A Configuration#delete() must not prevent access to its internal state, if a listener is notified by a previous event (e.g CM_UPDATED). I have checked the specification... No hint can be found that targets this special case. I have also tested it with the Equinox ConfigurationAdmin: The same problem exists, unfortunately I got no log output. I only thing I see in SCR is, that nothing happens.

Have you got any idea what we can do to solve the problem?


was (Author: herr-herner):
Yes... You are right, that imitated the problem exactly. SCR calls getProperties() on an already "deleted" configuration which causes an IllegalStateException in the Felix ConfigurationAdmin. Things would work, when the ConfigurationAdmin allows all (async) ConfigurationListeners to access the configuration (its properties) when it was possible from the point in time of event creation. A configuration#delete() must not prevent access to its internal state, if a listener is notified by a previous event (e.g CM_UPDATED). I have checked the specification... No hint can be found that targets this special case. I have also tested it with the Equinox ConfigurationAdmin: The same problem exits, unfortunately I got no log output. I only thing I see in SCR is, that nothing happens.

Have you got any idea what we can do to solve the problem?

> SynchronousConfigurationListener
> --------------------------------
>
>                 Key: FELIX-4698
>                 URL: https://issues.apache.org/jira/browse/FELIX-4698
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.8.2
>            Reporter: Jens Offenbach
>              Labels: configuration, configurationadmin, scr
>
> When you directly create/update a configuration and delete it right after creation, the component instance creation of components which preconditions become fulfilled (using ConfigurationPolicy.REQUIRE) often fails. The reason is that events from the ConfigurationAdmin are delivered to SCR asynchronously. This results in the following behavior: SCR receives a configuration update event and accesses e.g. its properties. The call fails because the configuration was deleted in the meantime. A solution would be to implement  SynchronousConfigurationListener in the class CongurationSupport instead of ConfigurationListener. That forces the ConfigurationAdmin to deliver the update events before someone can delete the configuration.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)