Repository: incubator-groovy
Updated Branches:
  refs/heads/GROOVY_2_4_X dbce93026 -> 634e2889b


GROOVY-7535: Groovy category throwing MissingMethodException and 
MissingPropertyException when using multiple threads (closes #169)

Fixed non-atomic use of atomicCategoryUsageCounter.


Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/634e2889
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/634e2889
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/634e2889

Branch: refs/heads/GROOVY_2_4_X
Commit: 634e2889bf213d77061a8defd8b423e988268c82
Parents: dbce930
Author: Keith Suderman <suder...@cs.vassar.edu>
Authored: Sat Oct 31 15:11:33 2015 -0400
Committer: pascalschumacher <pascalschumac...@gmx.net>
Committed: Sat Oct 31 23:13:41 2015 +0100

----------------------------------------------------------------------
 .../org/codehaus/groovy/runtime/GroovyCategorySupport.java     | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/634e2889/src/main/org/codehaus/groovy/runtime/GroovyCategorySupport.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/GroovyCategorySupport.java 
b/src/main/org/codehaus/groovy/runtime/GroovyCategorySupport.java
index cadf07a..1aa9f99 100644
--- a/src/main/org/codehaus/groovy/runtime/GroovyCategorySupport.java
+++ b/src/main/org/codehaus/groovy/runtime/GroovyCategorySupport.java
@@ -72,8 +72,7 @@ public class GroovyCategorySupport {
         private Map<String, String> propertySetterMap;
 
         private void newScope () {
-            atomicCategoryUsageCounter.incrementAndGet();
-            categoriesInUse = atomicCategoryUsageCounter.get();
+            categoriesInUse = atomicCategoryUsageCounter.incrementAndGet();
             DefaultMetaClassInfo.setCategoryUsed(true);
             VMPluginFactory.getPlugin().invalidateCallSites();
             level++;
@@ -96,8 +95,7 @@ public class GroovyCategorySupport {
                 }
             }
             level--;
-            atomicCategoryUsageCounter.getAndDecrement();
-            categoriesInUse = atomicCategoryUsageCounter.get();
+            categoriesInUse = atomicCategoryUsageCounter.decrementAndGet();
             VMPluginFactory.getPlugin().invalidateCallSites();
             if (categoriesInUse==0) 
DefaultMetaClassInfo.setCategoryUsed(false);
             if (level == 0) {

Reply via email to