Index: src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/CacheReference.java =================================================================== RCS file: /cvs/mdr/src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/CacheReference.java,v retrieving revision 1.2 diff -d -u -b -B -r1.2 CacheReference.java --- src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/CacheReference.java 7 Feb 2002 10:00:36 -0000 1.2 +++ src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/CacheReference.java 4 Mar 2002 07:47:56 -0000 @@ -83,6 +83,7 @@ */ public void clear() { weaken(); + key = null; super.clear(); } Index: src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/MDRCache.java =================================================================== RCS file: /cvs/mdr/src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/MDRCache.java,v retrieving revision 1.2 diff -d -u -b -B -r1.2 MDRCache.java --- src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/MDRCache.java 7 Feb 2002 10:00:36 -0000 1.2 +++ src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/MDRCache.java 4 Mar 2002 07:47:56 -0000 @@ -246,7 +246,13 @@ CacheReference cr; while ((cr = (CacheReference)queue.poll()) != null) { //if (cr.inCache) { - i += hashOnId.remove(cr.getKey()) == null ? 0 : 1; + Object k = cr.getKey(); + if (k == null) + // the reference was already replaced by another one. + continue; + + CacheReference cr2 = (CacheReference)hashOnId.remove(k); + i += cr2 == null ? 0 : 1; // cr.inCache = false; //} }