[
https://issues.apache.org/jira/browse/SLING-11030?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Carsten Ziegeler resolved SLING-11030.
--------------------------------------
Resolution: Fixed
Fixed in
https://github.com/apache/sling-org-apache-sling-models-impl/commit/0a83d4129ccb78b25dea7926a11c60014c0344e4
> OSGiServiceInjector.getService() calls ungetService even if service is not get
> ------------------------------------------------------------------------------
>
> Key: SLING-11030
> URL: https://issues.apache.org/jira/browse/SLING-11030
> Project: Sling
> Issue Type: Bug
> Components: Sling Models
> Affects Versions: Models Implementation 1.5.0
> Reporter: Carsten Ziegeler
> Assignee: Carsten Ziegeler
> Priority: Major
> Fix For: Models Implementation 1.5.2
>
>
> The getService method gets all service references, but only from one of them
> it gets the service. However all service references are passed in to the
> callback for disposal. So for all references an unget is called, although it
> happened only for one
> In addition, the code is assuming that the service with the highest ranking
> is always gettable. A null check is missing at :
> https://github.com/apache/sling-org-apache-sling-models-impl/blob/89fcb8702e29ad3322ee2a023ae6b24e5d2f83ab/src/main/java/org/apache/sling/models/impl/injectors/OSGiServiceInjector.java#L114
>
> It would be better to loop over the services references until one returns non
> null and then only dispose that reference later
--
This message was sent by Atlassian Jira
(v8.20.1#820001)