another deadlock fixed BLD200303250100
authormmatula@netbeans.org
Mon, 24 Mar 2003 13:35:37 +0000
changeset 1251c8b8619f64aa
parent 1250 a6c95adf32d9
child 1252 8aa2bbe34d3f
another deadlock fixed
mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java
     1.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java	Mon Mar 24 10:29:05 2003 +0000
     1.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java	Mon Mar 24 13:35:37 2003 +0000
     1.3 @@ -646,11 +646,13 @@
     1.4          SinglevaluedIndex objectsIndex = this.getObjectsIndexByMofId((org.netbeans.mdr.persistence.MOFID)key);
     1.5          if (objectsIndex == null)
     1.6              throw new DebugException("Invalid key");
     1.7 -        if (index instanceof MultivaluedOrderedIndex) {
     1.8 -            return ((MultivaluedOrderedIndex) index).getObjectsOrdered(key, objectsIndex);
     1.9 -        }
    1.10 -        else {
    1.11 -            return index.getObjects(key, objectsIndex);
    1.12 +        synchronized (getStorageById(((org.netbeans.mdr.persistence.MOFID) key).getStorageID())) {
    1.13 +            if (index instanceof MultivaluedOrderedIndex) {
    1.14 +                return ((MultivaluedOrderedIndex) index).getObjectsOrdered(key, objectsIndex);
    1.15 +            }
    1.16 +            else {
    1.17 +                return index.getObjects(key, objectsIndex);
    1.18 +            }
    1.19          }
    1.20      }
    1.21      
    1.22 @@ -1568,7 +1570,9 @@
    1.23          SinglevaluedIndex objectsIndex = (SinglevaluedIndex) this.objects.get(storageID);
    1.24          if (objectsIndex == null)
    1.25              return null;
    1.26 -        return objectsIndex.get(key);
    1.27 +        synchronized (getStorageById(storageID)) {
    1.28 +            return objectsIndex.get(key);
    1.29 +        }
    1.30      }
    1.31      
    1.32      public synchronized Storage getTransientStorage () throws StorageException {