From bf9c0e6ce8568d0e37ea1d2947aba141ae4c7fe4 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Thu, 26 Jan 2012 02:53:21 +0000 Subject: Added option for index access to fetch ahead to reduce likelihood of deadlocks. --- .../com/amazon/carbonado/repo/indexed/IndexedCursor.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/amazon/carbonado/repo') diff --git a/src/main/java/com/amazon/carbonado/repo/indexed/IndexedCursor.java b/src/main/java/com/amazon/carbonado/repo/indexed/IndexedCursor.java index bce6975..04eb478 100644 --- a/src/main/java/com/amazon/carbonado/repo/indexed/IndexedCursor.java +++ b/src/main/java/com/amazon/carbonado/repo/indexed/IndexedCursor.java @@ -32,6 +32,7 @@ import com.amazon.carbonado.Storage; import com.amazon.carbonado.Transaction; import com.amazon.carbonado.cursor.AbstractCursor; +import com.amazon.carbonado.cursor.FetchAheadCursor; import com.amazon.carbonado.spi.RepairExecutor; @@ -44,6 +45,13 @@ import com.amazon.carbonado.synthetic.SyntheticStorableReferenceAccess; * @author Brian S O'Neill */ class IndexedCursor extends AbstractCursor { + private static final int FETCH_AHEAD; + + static { + String prefix = IndexedCursor.class.getName() + '.'; + FETCH_AHEAD = Integer.getInteger(prefix + "fetchAhead", 0); + } + private final Cursor mCursor; private final IndexedStorage mStorage; private final SyntheticStorableReferenceAccess mAccessor; @@ -52,7 +60,11 @@ class IndexedCursor extends AbstractCursor { IndexedCursor(Cursor indexEntryCursor, IndexedStorage storage, - SyntheticStorableReferenceAccess indexAccessor) { + SyntheticStorableReferenceAccess indexAccessor) + { + if (FETCH_AHEAD > 0) { + indexEntryCursor = new FetchAheadCursor(indexEntryCursor, FETCH_AHEAD); + } mCursor = indexEntryCursor; mStorage = storage; mAccessor = indexAccessor; -- cgit v1.2.3