You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Bertrand Delacretaz <bd...@apache.org> on 2016/07/08 10:46:53 UTC

Impact of multi-valued SERVICE_PID?

Hi,

SLING-5827 shows that our code can fail where it (wrongly) assumes
that the Constants.SERVICE_PID service property is just a String.

As per [1] however that can be multi-valued, already in OSGi R4 - but
I had never seen that happen before.

My impression so far was that using that PID as a unique key for a
component is fine, but if it can be multi-valued we need to be careful
if using it as a key. Maybe create a specific utility in our
commons.osgi module for safely converting it to a stable unique ID.

I've done a rough analysis in SLING-5828 of where we need to change
this, could our OSGi gurus comment?

-Bertrand

[1] https://osgi.org/javadoc/r4v43/core/org/osgi/framework/Constants.html#SERVICE_PID

Re: Impact of multi-valued SERVICE_PID?

Posted by Carsten Ziegeler <cz...@apache.org>.
I've commented in the issue - in general code should not rely on
SERVICE_PID, that's not stable. This property might be missing as well.

Usually SERVICE_ID is the one you're looking for.

Therefore let's not create a common utility method as it really should
not be used.

From the list in the issue:
- resourceresolver: it checks the PID of a provider against a
configuration, so we need to handle the array case. Which should really
be simple.
- event: that should be fine, 100% internal usage
- installer/factory/configuration: should be fine as this is used for
internal data structures, but not for service properties

I didn't check the others from that list.

Carsten

Bertrand Delacretaz wrote
> Hi,
> 
> SLING-5827 shows that our code can fail where it (wrongly) assumes
> that the Constants.SERVICE_PID service property is just a String.
> 
> As per [1] however that can be multi-valued, already in OSGi R4 - but
> I had never seen that happen before.
> 
> My impression so far was that using that PID as a unique key for a
> component is fine, but if it can be multi-valued we need to be careful
> if using it as a key. Maybe create a specific utility in our
> commons.osgi module for safely converting it to a stable unique ID.
> 
> I've done a rough analysis in SLING-5828 of where we need to change
> this, could our OSGi gurus comment?
> 
> -Bertrand
> 
> [1] https://osgi.org/javadoc/r4v43/core/org/osgi/framework/Constants.html#SERVICE_PID
> 


 
-- 
Carsten Ziegeler
Adobe Research Switzerland
cziegeler@apache.org