What is the jira number for this change?

From the patch, your appear to have removed the logic implementing
> -                // Decrement usage count, which spec says should happen after
> -                // ungetting the service object.

Did you put this logic somewhere else not that I don't see from the patch? If 
not, why is this acceptable?

thanks
david jencks

On Jun 10, 2015, at 4:09 AM, [email protected] wrote:

> Author: davidb
> Date: Wed Jun 10 08:09:02 2015
> New Revision: 1684594
> 
> URL: http://svn.apache.org/r1684594
> Log:
> Fix potential race condition in ungetService().
> 
> Modified:
>    
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
> 
> Modified: 
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
> URL: 
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java?rev=1684594&r1=1684593&r2=1684594&view=diff
> ==============================================================================
> --- 
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
>  (original)
> +++ 
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
>  Wed Jun 10 08:09:02 2015
> @@ -414,9 +414,10 @@ public class ServiceRegistry
> 
>             // If usage count will go to zero, then unget the service
>             // from the registration.
> +            int count = usage.m_count.decrementAndGet();
>             try
>             {
> -                if (usage.m_count.get() == 1)
> +                if (count == 0)
>                 {
>                     // Remove reference from usages array.
>                     ((ServiceRegistrationImpl.ServiceReferenceImpl) ref)
> @@ -428,13 +429,9 @@ public class ServiceRegistry
>                 // Finally, decrement usage count and flush if it goes to 
> zero or
>                 // the registration became invalid.
> 
> -                // Decrement usage count, which spec says should happen after
> -                // ungetting the service object.
> -                int c = usage.m_count.decrementAndGet();
> -
>                 // If the registration is invalid or the usage count has 
> reached
>                 // zero, then flush it.
> -                if ((c <= 0) || !reg.isValid())
> +                if ((count <= 0) || !reg.isValid())
>                 {
>                     usage.m_svcHolderRef.set(null);
>                     flushUsageCount(bundle, ref, usage);
> 
> 

Reply via email to