You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/09/17 09:37:22 UTC
svn commit: r1523944 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/OffsetCache.java
Author: mduerig
Date: Tue Sep 17 07:37:22 2013
New Revision: 1523944
URL: http://svn.apache.org/r1523944
Log:
OAK-1019: OffsetCache doesn't cache anything
Update the number of elements of the offset cache on new entry
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/OffsetCache.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/OffsetCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/OffsetCache.java?rev=1523944&r1=1523943&r2=1523944&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/OffsetCache.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/OffsetCache.java Tue Sep 17 07:37:22 2013
@@ -34,7 +34,7 @@ abstract class OffsetCache<T> {
private static final SoftReference<?>[] NO_VALUES = new SoftReference<?>[0];
- private int length = 0;
+ private int size = 0;
private int[] offsets;
@@ -56,10 +56,10 @@ abstract class OffsetCache<T> {
}
});
- int n = list.size();
- offsets = new int[n];
- values = new SoftReference<?>[n];
- for (int i = 0; i < n; i++) {
+ size = list.size();
+ offsets = new int[size];
+ values = new SoftReference<?>[size];
+ for (int i = 0; i < size; i++) {
Entry<T, RecordId> entry = list.get(i);
offsets[i] = entry.getValue().getOffset();
values[i] = new SoftReference<T>(entry.getKey());
@@ -68,7 +68,7 @@ abstract class OffsetCache<T> {
@SuppressWarnings("unchecked")
public synchronized T get(int offset) {
- int i = Arrays.binarySearch(offsets, 0, length, offset);
+ int i = Arrays.binarySearch(offsets, 0, size, offset);
if (i >= 0) {
T value = (T) values[i].get();
if (value == null) {
@@ -78,24 +78,25 @@ abstract class OffsetCache<T> {
return value;
} else {
i = ~i;
- if (length < offsets.length) {
- System.arraycopy(offsets, i, offsets, i + 1, length - i);
- System.arraycopy(values, i, values, i + 1, length - i);
+ if (size < offsets.length) {
+ System.arraycopy(offsets, i, offsets, i + 1, size - i);
+ System.arraycopy(values, i, values, i + 1, size - i);
} else {
- int[] newOffsets = new int[length + SIZE_INCREMENT];
+ int[] newOffsets = new int[size + SIZE_INCREMENT];
System.arraycopy(offsets, 0, newOffsets, 0, i);
- System.arraycopy(offsets, i, newOffsets, i + 1, length - i);
+ System.arraycopy(offsets, i, newOffsets, i + 1, size - i);
offsets = newOffsets;
SoftReference<?>[] newValues =
- new SoftReference<?>[length + SIZE_INCREMENT];
+ new SoftReference<?>[size + SIZE_INCREMENT];
System.arraycopy(values, 0, newValues, 0, i);
- System.arraycopy(values, i, newValues, i + 1, length - i);
+ System.arraycopy(values, i, newValues, i + 1, size - i);
values = newValues;
}
T value = load(offset);
offsets[i] = offset;
values[i] = new SoftReference<T>(value);
+ size++;
return value;
}
}