[ 
https://issues.apache.org/jira/browse/FELIX-4149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Jencks updated FELIX-4149:
--------------------------------

    Fix Version/s:     (was: scr-1.8.2)
                   scr-2.0.0

> Do not directly support modifying service registration properties
> -----------------------------------------------------------------
>
>                 Key: FELIX-4149
>                 URL: https://issues.apache.org/jira/browse/FELIX-4149
>             Project: Felix
>          Issue Type: Task
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.6.2
>            Reporter: Felix Meschberger
>             Fix For: scr-2.0.0
>
>
> With FELIX-3377 we implemented a feature for a component to easily influence 
> its service registration properties. This sounds very useful upfront but has 
> some intricate implications:
> * If a component is instantiated multiple times as a result of being a 
> factory service (instantiation per using bundle) or even as a new prototype 
> service (instantiation per retrieval from the service registry) each such 
> instance may independently modify the service registration properties of the 
> shared service registration. This may have strange implications.
> * If changing the service registration properties may cause changes in using 
> the service, it may be that a loop may be created: Consider a component C1 
> being registered as a delayed service. When this service is retrieved using a 
> service filter, the component is activated and may change the registration 
> properties. This may cause the consumer's service filter to not match any 
> more and hence to unget the service immediately. This may cause the Component 
> C1 to be deactivated and change back the service registration property. Now 
> the consumer's filter matches again and C1 is retrieved and activated again 
> ...
> Now, granted both situations may also happen if DS would not support setting 
> service registration properties. But the chances of falling into the trap is 
> higher if it would be too simple to do. Also explaining the why's and pro's 
> and con's etc. is somewhat complicated. On the other hand the use case is not 
> one happening very often -- in our application of 100s of components we had 
> it once or twice.
> So the OSGi CPEG decided to not add this feature to the specification.
> I am aware, that we unfortunately already released a version of Felix DS 
> supporting this feature. So it will be a hard decision to revert that.
> I propose to disable the feature by default and allow it to be explicitly 
> enabled using some configuration (similar to what we did with the 
> non-spec-compliant handling of factory configuration for Component Factory 
> components).



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to