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) {