[
https://issues.apache.org/jira/browse/FELIX-4313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13821151#comment-13821151
]
Guillaume Nodet commented on FELIX-4313:
----------------------------------------
Proposed patch (under test)
{code}
diff --git
a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index 99a87cf..c78f69b 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -979,15 +979,17 @@ public class DependencyManager<S, T> implements Reference
public void close()
{
+ RefPair<T> ref;
synchronized ( getTracker().tracked() )
{
- if ( refPair != null )
- {
- ungetService( refPair );
- }
+ ref = refPair;
refPair = null;
- getTracker().deactivate();
}
+ if ( ref != null )
+ {
+ ungetService( ref );
+ }
+ getTracker().deactivate();
}
public Collection<RefPair<T>> getRefs( AtomicInteger trackingCount )
{code}
> Bad synchronization in scr where a lock is held while ungetting a service
> -------------------------------------------------------------------------
>
> Key: FELIX-4313
> URL: https://issues.apache.org/jira/browse/FELIX-4313
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-1.8.0
> Reporter: Guillaume Nodet
> Assignee: Guillaume Nodet
> Priority: Minor
> Fix For: scr-1.8.2
>
>
> The problem is located in DependencyManeger$SingleStaticCustomizer.close()
--
This message was sent by Atlassian JIRA
(v6.1#6144)