Use myPackagesCache only from a syncrhonized context
authorAndrey Vlasovskikh <andrey.vlasovskikh@jetbrains.com>
Fri, 12 Sep 2014 12:38:50 +0000 (16:38 +0400)
committerAndrey Vlasovskikh <andrey.vlasovskikh@jetbrains.com>
Fri, 12 Sep 2014 12:38:50 +0000 (16:38 +0400)
python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java

index cd83432dc2854b2f6a99b8760d5bd94e785c175e..9b5f669168f78223e54a8c8623b5a3afd5be3f1e 100644 (file)
@@ -56,7 +56,6 @@ import java.util.*;
 /**
  * @author vlan
  */
-@SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
 public class PyPackageManagerImpl extends PyPackageManager {
   // Bundled versions of package management tools
   public static final String SETUPTOOLS_VERSION = "1.1.5";
@@ -299,7 +298,7 @@ public class PyPackageManagerImpl extends PyPackageManager {
     }
   }
 
-  private void calculateDependents() {
+  private synchronized void calculateDependents() {
     myDependenciesCache = new HashMap<String, Set<PyPackage>>();
     for (PyPackage p : myPackagesCache) {
       final List<PyRequirement> requirements = p.getRequirements();
@@ -390,7 +389,7 @@ public class PyPackageManagerImpl extends PyPackageManager {
     return null;
   }
 
-  protected void clearCaches() {
+  protected synchronized void clearCaches() {
     myPackagesCache = null;
     myDependenciesCache = null;
     myExceptionCache = null;