Index: src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentIdTable.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentIdTable.java (revision 1667736) +++ src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentIdTable.java (working copy) @@ -65,6 +65,7 @@ synchronized SegmentId getSegmentId(long msb, long lsb) { int first = getIndex(lsb); int index = first; + boolean shouldRefresh = false; WeakReference reference = references.get(index); while (reference != null) { @@ -74,13 +75,14 @@ && id.getLeastSignificantBits() == lsb) { return id; } + shouldRefresh = shouldRefresh || id == null; index = (index + 1) % references.size(); reference = references.get(index); } SegmentId id = new SegmentId(tracker, msb, lsb); references.set(index, new WeakReference(id)); - if (index != first) { + if (shouldRefresh) { refresh(); } return id;