This is an automated email from the ASF dual-hosted git repository.

wyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 0747da63b5 [MULTIPLE ISSUES][STO] Storage code clean ups
0747da63b5 is described below

commit 0747da63b537a8e1fd9ccb92e6d739f4b0f67bde
Author: Wail Alkowaileet <[email protected]>
AuthorDate: Mon Apr 22 12:57:20 2024 -0700

    [MULTIPLE ISSUES][STO] Storage code clean ups
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - ASTERIXDB-3360: Honor limit when writing
      compressed pages
    - ASTERIXDB-3374: Clean up contexts java packages
    - ASTERIXDB-3375: Rename ContextUtil
      to BufferCacheCloudReadContextUtil
    
    Change-Id: Ice1ade6d00db8b6383d22e4f98314fc99df8a844
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18247
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Wail Alkowaileet <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
---
 .../apache/asterix/app/nc/NCAppRuntimeContext.java |  6 +--
 .../MultiPersistentBufferBytesOutputStream.java    |  6 +++
 .../common/context/GlobalVirtualBufferCache.java   |  6 +--
 ...l.java => BufferCacheCloudReadContextUtil.java} |  4 +-
 .../context/DefaultCloudOnlyWriteContext.java      |  2 +-
 .../context/DefaultCloudReadContext.java           |  6 +--
 .../apache/hyracks/cloud/sweeper/SweepContext.java |  2 +-
 .../examples/btree/helper/RuntimeContext.java      |  4 +-
 .../storage/am/bloomfilter/impls/BloomFilter.java  |  2 +-
 .../hyracks/storage/am/btree/impls/BTree.java      |  2 +-
 .../AppendOnlyLinkedMetadataPageManager.java       |  2 +-
 .../common/freepage/LinkedMetaDataPageManager.java |  2 +-
 .../common/impls/AbstractTreeIndexBulkLoader.java  |  2 +-
 .../lsm/tuples/ColumnMultiBufferProvider.java      | 20 +++++----
 .../am/lsm/btree/column/utils/ColumnUtil.java      | 49 ++++++++++++++++++++++
 .../common/freepage/VirtualFreePageManager.java    |  2 +-
 .../impls/MultitenantVirtualBufferCache.java       |  6 +--
 .../am/lsm/common/impls/VirtualBufferCache.java    |  6 +--
 .../invertedindex/ondisk/OnDiskInvertedIndex.java  |  2 +-
 .../hyracks/storage/am/rtree/impls/RTree.java      |  2 +-
 .../buffercache/AbstractBufferedFileIOManager.java |  4 +-
 .../storage/common/buffercache/BufferCache.java    | 10 ++---
 .../common/buffercache/DebugBufferCache.java       |  6 +--
 .../common/buffercache/FIFOLocalWriter.java        |  2 +-
 .../storage/common/buffercache/IBufferCache.java   |  4 +-
 .../{page => }/IBufferCacheReadContext.java        |  2 +-
 .../{page => }/IBufferCacheWriteContext.java       |  2 +-
 .../AbstractBufferCacheReadContext.java            |  3 +-
 .../DefaultBufferCacheReadContext.java             |  2 +-
 .../DefaultBufferCacheReadContextProvider.java}    |  8 ++--
 .../NoStatsBufferCacheReadContext.java             |  2 +-
 .../PinNewBufferCacheReadContext.java              |  2 +-
 .../DefaultBufferCacheWriteContext.java            |  3 +-
 .../compression/file/CompressedFileManager.java    |  2 +-
 .../storage/common/compression/file/LAFWriter.java |  2 +-
 .../hyracks/storage/common/disk/ISweepContext.java |  2 +-
 .../storage/common/file/BufferedFileHandle.java    |  4 +-
 .../common/file/CompressedBufferedFileHandle.java  |  4 +-
 .../support/TestStorageManagerComponentHolder.java |  4 +-
 .../storage/am/btree/FieldPrefixNSMTest.java       |  2 +-
 .../am/lsm/btree/impl/TestVirtualBufferCache.java  |  8 ++--
 .../am/lsm/common/test/VirtualBufferCacheTest.java |  2 +-
 .../storage/common/BufferCacheRegressionTest.java  |  2 +-
 .../hyracks/storage/common/BufferCacheTest.java    |  4 +-
 .../common/BufferCacheWithCompressionTest.java     |  2 +-
 45 files changed, 143 insertions(+), 78 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
index 7a4a33b6a2..eee344f6e1 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
@@ -120,8 +120,8 @@ import 
org.apache.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
 import org.apache.hyracks.storage.common.buffercache.IDiskCachedPageAllocator;
 import org.apache.hyracks.storage.common.buffercache.IPageCleanerPolicy;
 import org.apache.hyracks.storage.common.buffercache.IPageReplacementStrategy;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.FileMapManager;
 import org.apache.hyracks.storage.common.file.ILocalResourceRepositoryFactory;
@@ -212,7 +212,7 @@ public class NCAppRuntimeContext implements 
INcApplicationContext {
             boolean initialRun) throws IOException {
         ioManager = getServiceContext().getIoManager();
         IDiskCachedPageAllocator pageAllocator = 
DefaultDiskCachedPageAllocator.INSTANCE;
-        IBufferCacheReadContext defaultContext = 
DefaultBufferCachePageOperationContextProvider.DEFAULT;
+        IBufferCacheReadContext defaultContext = 
DefaultBufferCacheReadContextProvider.DEFAULT;
         if (isCloudDeployment()) {
             persistenceIOManager =
                     CloudManagerProvider.createIOManager(cloudProperties, 
ioManager, namespacePathResolver);
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
index c910131a6c..90aacc7fbf 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
@@ -38,6 +38,12 @@ public final class MultiPersistentBufferBytesOutputStream 
extends AbstractMultiB
     @Override
     protected void preReset() throws HyracksDataException {
         if (allocatedBytes > 0) {
+            /*
+             * Ensure limit is set to current position and position is set to 
0. This to ensure no unrelated bytes are
+             * persisted to disk. Unrelated bytes are bytes that were in the 
ByteBuffer (when the column writer
+             * confiscated it from the buffer cache) but those byte do not 
belong to the column that to be written.
+             */
+            currentBuf.flip();
             //Persist all buffers before resetting the stream
             multiPageOpRef.getValue().persist();
             allocatedBytes = 0;
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/GlobalVirtualBufferCache.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/GlobalVirtualBufferCache.java
index 20a1260afa..a4663edfc0 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/GlobalVirtualBufferCache.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/GlobalVirtualBufferCache.java
@@ -18,7 +18,7 @@
  */
 package org.apache.asterix.common.context;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.DEFAULT;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.DEFAULT;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -51,8 +51,8 @@ import 
org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteFailureCallback;
 import org.apache.hyracks.storage.common.buffercache.VirtualPage;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 import org.apache.hyracks.util.ExitUtil;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/ContextUtil.java
 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/BufferCacheCloudReadContextUtil.java
similarity index 96%
rename from 
hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/ContextUtil.java
rename to 
hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/BufferCacheCloudReadContextUtil.java
index dfcd6f1301..5674797b82 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/ContextUtil.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/BufferCacheCloudReadContextUtil.java
@@ -27,8 +27,8 @@ import org.apache.hyracks.api.io.IFileHandle;
 import org.apache.hyracks.cloud.io.ICloudIOManager;
 import org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper;
 
-public class ContextUtil {
-    private ContextUtil() {
+public class BufferCacheCloudReadContextUtil {
+    private BufferCacheCloudReadContextUtil() {
     }
 
     public static boolean isEmpty(BufferCacheHeaderHelper header) {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudOnlyWriteContext.java
 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudOnlyWriteContext.java
index c4ae6c07f3..69d33e83bd 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudOnlyWriteContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudOnlyWriteContext.java
@@ -24,7 +24,7 @@ import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.IFileHandle;
 import org.apache.hyracks.cloud.io.ICloudIOManager;
 import org.apache.hyracks.control.nc.io.IOManager;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 
 public final class DefaultCloudOnlyWriteContext implements 
IBufferCacheWriteContext {
     public static final IBufferCacheWriteContext INSTANCE = new 
DefaultCloudOnlyWriteContext();
diff --git 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudReadContext.java
index 8dfd8ce64b..9c24ce1c44 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/buffercache/context/DefaultCloudReadContext.java
@@ -31,7 +31,7 @@ import 
org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper;
 import org.apache.hyracks.storage.common.buffercache.CachedPage;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
 import org.apache.hyracks.storage.common.disk.IPhysicalDrive;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.util.annotations.ThreadSafe;
@@ -100,7 +100,7 @@ public class DefaultCloudReadContext implements 
IBufferCacheReadContext {
     private static ByteBuffer readAndPersistIfEmpty(IOManager ioManager, 
IFileHandle fileHandle,
             BufferCacheHeaderHelper header, CachedPage cPage, boolean persist) 
throws HyracksDataException {
         ByteBuffer headerBuf = header.getBuffer();
-        if (ContextUtil.isEmpty(header)) {
+        if (BufferCacheCloudReadContextUtil.isEmpty(header)) {
             // header indicates the page is empty
             // reset the buffer position to 0. Limit should be already set 
before the call of processHeader
             headerBuf.position(0);
@@ -111,7 +111,7 @@ public class DefaultCloudReadContext implements 
IBufferCacheReadContext {
             headerBuf.flip();
 
             if (persist) {
-                ContextUtil.persist(cloudIOManager, fileHandle, headerBuf, 
offset);
+                BufferCacheCloudReadContextUtil.persist(cloudIOManager, 
fileHandle, headerBuf, offset);
             }
         }
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
index 773b307a48..79fdb5a5b2 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
@@ -27,7 +27,7 @@ import org.apache.hyracks.cloud.cache.unit.IndexUnit;
 import org.apache.hyracks.cloud.io.ICloudIOManager;
 import org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
 import org.apache.hyracks.storage.common.disk.ISweepContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
 
b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
index bdac239464..f5edc7469c 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
@@ -37,7 +37,7 @@ import 
org.apache.hyracks.storage.common.buffercache.HeapBufferAllocator;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
 import org.apache.hyracks.storage.common.buffercache.IPageReplacementStrategy;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider;
+import 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider;
 import org.apache.hyracks.storage.common.file.FileMapManager;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
@@ -64,7 +64,7 @@ public class RuntimeContext {
         ThreadFactory threadFactory = Thread::new;
         this.ioManager = appCtx.getIoManager();
         bufferCache = new BufferCache(ioManager, prs, new 
DelayPageCleanerPolicy(1000), fileMapManager, 100, 10,
-                threadFactory, new HashMap<>(), 
DefaultBufferCachePageOperationContextProvider.DEFAULT);
+                threadFactory, new HashMap<>(), 
DefaultBufferCacheReadContextProvider.DEFAULT);
         ILocalResourceRepositoryFactory localResourceRepositoryFactory = new 
TransientLocalResourceRepositoryFactory();
         localResourceRepository = 
localResourceRepositoryFactory.createRepository();
         resourceIdFactory = (new 
ResourceIdFactoryProvider(localResourceRepository)).createResourceIdFactory();
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
index d94435df51..aa174741a6 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
@@ -31,7 +31,7 @@ import 
org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.PageWriteFailureCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 
 public class BloomFilter {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
index 89aa769cba..7c0cd10f30 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
@@ -19,7 +19,7 @@
 
 package org.apache.hyracks.storage.am.btree.impls;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/AppendOnlyLinkedMetadataPageManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/AppendOnlyLinkedMetadataPageManager.java
index 501f8a6d38..852c8b5dce 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/AppendOnlyLinkedMetadataPageManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/AppendOnlyLinkedMetadataPageManager.java
@@ -34,7 +34,7 @@ import 
org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteFailureCallback;
 import org.apache.hyracks.storage.common.buffercache.NoOpPageWriteCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java
index ddd8dfd4e6..edc6d10221 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.am.common.freepage;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IPointable;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndexBulkLoader.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndexBulkLoader.java
index 1ed1264a58..6a2f43ffb1 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndexBulkLoader.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndexBulkLoader.java
@@ -36,7 +36,7 @@ import 
org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.PageWriteFailureCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
index 34ec856a1e..48633e7e0c 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
@@ -18,6 +18,9 @@
  */
 package org.apache.hyracks.storage.am.lsm.btree.column.impls.lsm.tuples;
 
+import static 
org.apache.hyracks.storage.am.lsm.btree.column.utils.ColumnUtil.getColumnStartOffset;
+import static 
org.apache.hyracks.storage.am.lsm.btree.column.utils.ColumnUtil.getNumberOfPages;
+
 import java.nio.ByteBuffer;
 import java.util.ArrayDeque;
 import java.util.Queue;
@@ -26,6 +29,7 @@ import org.apache.hyracks.api.exceptions.HyracksDataException;
 import 
org.apache.hyracks.storage.am.lsm.btree.column.api.IColumnBufferProvider;
 import 
org.apache.hyracks.storage.am.lsm.btree.column.api.IColumnReadMultiPageOp;
 import 
org.apache.hyracks.storage.am.lsm.btree.column.impls.btree.ColumnBTreeReadLeafFrame;
+import org.apache.hyracks.storage.am.lsm.btree.column.utils.ColumnUtil;
 import org.apache.hyracks.storage.common.buffercache.CachedPage;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 
@@ -55,17 +59,19 @@ public final class ColumnMultiBufferProvider implements 
IColumnBufferProvider {
             length = 0;
             return;
         }
+        int pageSize = multiPageOp.getPageSize();
 
         int offset = frame.getColumnOffset(columnIndex);
         startPage = frame.getPageId() + getColumnPageIndex(offset);
-        startOffset = offset % multiPageOp.getPageSize();
-        //Duplicate as the buffer could be shared by more than one column
+        startOffset = getColumnStartOffset(offset, pageSize);
+        // Duplicate as the buffer could be shared by more than one column
         ByteBuffer firstPage = readNext().duplicate();
-        firstPage.position(startOffset);
-        //Read the length
-        length = firstPage.getInt();
+        // Read the column's length
+        length = ColumnUtil.readColumnLength(firstPage, startOffset, pageSize);
+        // Get the remaining length of the column
         int remainingLength = length - firstPage.remaining();
-        numberOfPages = (int) Math.ceil((double) remainingLength / 
multiPageOp.getPageSize());
+        // Get the number of pages this column occupies
+        numberOfPages = getNumberOfPages(remainingLength, pageSize);
         //+4-bytes after reading the length
         startOffset += Integer.BYTES;
         //-4-bytes after reading the length
@@ -117,6 +123,6 @@ public final class ColumnMultiBufferProvider implements 
IColumnBufferProvider {
     }
 
     private int getColumnPageIndex(int columnOffset) {
-        return (int) Math.floor((double) columnOffset / 
multiPageOp.getPageSize());
+        return ColumnUtil.getColumnPageIndex(columnOffset, 
multiPageOp.getPageSize());
     }
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/utils/ColumnUtil.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/utils/ColumnUtil.java
index 25ed3db1dd..12bb64e76e 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/utils/ColumnUtil.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/utils/ColumnUtil.java
@@ -18,6 +18,8 @@
  */
 package org.apache.hyracks.storage.am.lsm.btree.column.utils;
 
+import java.nio.ByteBuffer;
+
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.util.HyracksConstants;
 import org.apache.hyracks.data.std.api.IValueReference;
@@ -53,6 +55,53 @@ public class ColumnUtil {
         dest.put(COLUMNS_METADATA_KEY, columnsMetadataValue);
     }
 
+    public static int getColumnPageIndex(int columnOffset, int pageSize) {
+        return (int) Math.floor((double) columnOffset / pageSize);
+    }
+
+    /**
+     * Get the column starting offset within the first page
+     *
+     * @param offset   absolute column offset as reported by Page0
+     * @param pageSize disk buffer cache page size
+     * @return start offset
+     */
+    public static int getColumnStartOffset(int offset, int pageSize) {
+        return offset % pageSize;
+    }
+
+    /**
+     * Reads and returns the columns length in bytes
+     * NOTE: calling this method will set the firstPage position and limit 
appropriately
+     *
+     * @param firstPage   first page of the column
+     * @param startOffset starting offset of the column in firstPage see 
{{@link #getColumnStartOffset(int, int)}}
+     * @param pageSize    disk buffer cache page size
+     * @return column's length
+     */
+    public static int readColumnLength(ByteBuffer firstPage, int startOffset, 
int pageSize) {
+        // Set the limit to read the length of the column
+        firstPage.limit(startOffset + Integer.BYTES);
+        // Set position at the start of column
+        firstPage.position(startOffset);
+        // Read the length of this column
+        int length = firstPage.getInt();
+        // Ensure the page limit to at most a full page
+        firstPage.limit(Math.min(length, pageSize));
+        return length;
+    }
+
+    /**
+     * Returns the number of pages a column occupies
+     *
+     * @param remainingLength columns remaining length. see {@link 
#readColumnLength(ByteBuffer, int, int)}
+     * @param pageSize        disk buffer cache page size
+     * @return number of pages the column occupies
+     */
+    public static int getNumberOfPages(int remainingLength, int pageSize) {
+        return (int) Math.ceil((double) remainingLength / pageSize);
+    }
+
     public static IColumnTupleProjector 
getTupleProjector(IIndexAccessParameters iap,
             IColumnTupleProjector defaultProjector) {
         IColumnTupleProjector projector =
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
index bccce90a67..eaebc6d37f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
@@ -19,7 +19,7 @@
 
 package org.apache.hyracks.storage.am.lsm.common.freepage;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
index d145558d8c..f42d0d3a53 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.DEFAULT;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.DEFAULT;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -33,8 +33,8 @@ import 
org.apache.hyracks.storage.common.buffercache.IExtraPageBlockHelper;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteFailureCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 import org.apache.hyracks.util.JSONUtil;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
index 72f1e4aad3..564a9b7f5f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.DEFAULT;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.DEFAULT;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
@@ -41,8 +41,8 @@ import 
org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteFailureCallback;
 import org.apache.hyracks.storage.common.buffercache.VirtualPage;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.FileMapManager;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
index 8ef078aea2..2583d0ab69 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
@@ -71,7 +71,7 @@ import 
org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.NoOpPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.PageWriteFailureCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 
 /**
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
index 356cc7082c..35785d3e48 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
@@ -19,7 +19,7 @@
 
 package org.apache.hyracks.storage.am.rtree.impls;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AbstractBufferedFileIOManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AbstractBufferedFileIOManager.java
index 109104087d..21cefb6c11 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AbstractBufferedFileIOManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AbstractBufferedFileIOManager.java
@@ -27,8 +27,8 @@ import org.apache.hyracks.api.io.IFileHandle;
 import org.apache.hyracks.api.io.IIOManager;
 import org.apache.hyracks.api.util.IoUtil;
 import org.apache.hyracks.control.nc.io.IOManager;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.CompressedFileReference;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
 import org.apache.hyracks.util.annotations.NotThreadSafe;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
index 5d256850ba..d47b8e375e 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
@@ -43,10 +43,10 @@ import org.apache.hyracks.api.io.IIOManager;
 import org.apache.hyracks.api.lifecycle.ILifeCycleComponent;
 import org.apache.hyracks.api.replication.IIOReplicationManager;
 import org.apache.hyracks.api.util.ExceptionUtils;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
@@ -134,7 +134,7 @@ public class BufferCache implements IBufferCacheInternal, 
ILifeCycleComponent, I
             ThreadFactory threadFactory, IIOReplicationManager 
ioReplicationManager,
             Map<Integer, BufferedFileHandle> fileInfoMap) {
         this(ioManager, pageReplacementStrategy, pageCleanerPolicy, 
fileMapManager, maxOpenFiles, ioQueueLen,
-                threadFactory, fileInfoMap, 
DefaultBufferCachePageOperationContextProvider.DEFAULT);
+                threadFactory, fileInfoMap, 
DefaultBufferCacheReadContextProvider.DEFAULT);
         this.ioReplicationManager = ioReplicationManager;
     }
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
index 43e5940fd4..342d0031d8 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
@@ -19,15 +19,15 @@
 
 package org.apache.hyracks.storage.common.buffercache;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.DEFAULT;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.DEFAULT;
 
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.replication.IIOReplicationManager;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 
 /**
  * Implementation of an IBufferCache that counts the number of pins/unpins,
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
index ce7fb5b725..e07668602f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
@@ -15,7 +15,7 @@
 
 package org.apache.hyracks.storage.common.buffercache;
 
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import org.apache.hyracks.util.ExitUtil;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
index d11a0652c5..d69ded10a2 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
@@ -21,8 +21,8 @@ package org.apache.hyracks.storage.common.buffercache;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.replication.IIOReplicationManager;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
 
 public interface IBufferCache {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/IBufferCacheReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/IBufferCacheReadContext.java
similarity index 97%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/IBufferCacheReadContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/IBufferCacheReadContext.java
index f63ab767de..3c2bbcd744 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/IBufferCacheReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/IBufferCacheReadContext.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context;
 
 import java.nio.ByteBuffer;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/IBufferCacheWriteContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/IBufferCacheWriteContext.java
similarity index 96%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/IBufferCacheWriteContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/IBufferCacheWriteContext.java
index 9b3761a2b8..25d29c3ac5 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/IBufferCacheWriteContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/IBufferCacheWriteContext.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context;
 
 import java.nio.ByteBuffer;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/AbstractBufferCacheReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/AbstractBufferCacheReadContext.java
similarity index 93%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/AbstractBufferCacheReadContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/AbstractBufferCacheReadContext.java
index 13b8ee9027..42abd2ed8a 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/AbstractBufferCacheReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/AbstractBufferCacheReadContext.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context.read;
 
 import static 
org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper.EXTRA_BLOCK_PAGE_ID_OFF;
 import static 
org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper.FRAME_MULTIPLIER_OFF;
@@ -28,6 +28,7 @@ import org.apache.hyracks.control.nc.io.IOManager;
 import org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper;
 import org.apache.hyracks.storage.common.buffercache.CachedPage;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 
 abstract class AbstractBufferCacheReadContext implements 
IBufferCacheReadContext {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCacheReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/DefaultBufferCacheReadContext.java
similarity index 93%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCacheReadContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/DefaultBufferCacheReadContext.java
index b44ae25f6f..b07fce88b6 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCacheReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/DefaultBufferCacheReadContext.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context.read;
 
 final class DefaultBufferCacheReadContext extends 
AbstractBufferCacheReadContext {
     @Override
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCachePageOperationContextProvider.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/DefaultBufferCacheReadContextProvider.java
similarity index 82%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCachePageOperationContextProvider.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/DefaultBufferCacheReadContextProvider.java
index a187b9b4d1..a8bef4e4b3 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCachePageOperationContextProvider.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/DefaultBufferCacheReadContextProvider.java
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context.read;
 
-public class DefaultBufferCachePageOperationContextProvider {
-    private DefaultBufferCachePageOperationContextProvider() {
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+
+public class DefaultBufferCacheReadContextProvider {
+    private DefaultBufferCacheReadContextProvider() {
     }
 
     /**
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/NoStatsBufferCacheReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/NoStatsBufferCacheReadContext.java
similarity index 93%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/NoStatsBufferCacheReadContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/NoStatsBufferCacheReadContext.java
index fa5ac655c1..24a72051c0 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/NoStatsBufferCacheReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/NoStatsBufferCacheReadContext.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context.read;
 
 final class NoStatsBufferCacheReadContext extends 
AbstractBufferCacheReadContext {
     @Override
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/PinNewBufferCacheReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/PinNewBufferCacheReadContext.java
similarity index 93%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/PinNewBufferCacheReadContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/PinNewBufferCacheReadContext.java
index 4eda54ef26..61d052a3c7 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/PinNewBufferCacheReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/read/PinNewBufferCacheReadContext.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context.read;
 
 final class PinNewBufferCacheReadContext extends 
AbstractBufferCacheReadContext {
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCacheWriteContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/write/DefaultBufferCacheWriteContext.java
similarity index 91%
rename from 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCacheWriteContext.java
rename to 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/write/DefaultBufferCacheWriteContext.java
index a5ef722f6f..c9869911c7 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/page/DefaultBufferCacheWriteContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/context/write/DefaultBufferCacheWriteContext.java
@@ -16,13 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.common.buffercache.context.page;
+package org.apache.hyracks.storage.common.buffercache.context.write;
 
 import java.nio.ByteBuffer;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.IFileHandle;
 import org.apache.hyracks.control.nc.io.IOManager;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 
 public final class DefaultBufferCacheWriteContext implements 
IBufferCacheWriteContext {
     public static final IBufferCacheWriteContext INSTANCE = new 
DefaultBufferCacheWriteContext();
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
index 0a7bcf025b..365b92d296 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.common.compression.file;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NO_STATS;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NO_STATS;
 
 import java.nio.ByteBuffer;
 import java.util.EnumSet;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/LAFWriter.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/LAFWriter.java
index 85984011aa..1ed462b333 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/LAFWriter.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/LAFWriter.java
@@ -35,7 +35,7 @@ import 
org.apache.hyracks.storage.common.buffercache.ICachedPageInternal;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.NoOpPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.PageWriteFailureCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.util.annotations.NotThreadSafe;
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
index 1646116248..c1204f5441 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
@@ -21,7 +21,7 @@ package org.apache.hyracks.storage.common.disk;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
 
 /**
  * Provides the necessary {@link IBufferCache} functionalities for a sweep 
operation
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
index 3edec4b044..970a0ae6b0 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
@@ -33,8 +33,8 @@ import 
org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper;
 import org.apache.hyracks.storage.common.buffercache.CachedPage;
 import org.apache.hyracks.storage.common.buffercache.IPageReplacementStrategy;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.CompressedFileReference;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
 import org.apache.hyracks.storage.common.compression.file.NoOpLAFWriter;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/CompressedBufferedFileHandle.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/CompressedBufferedFileHandle.java
index ed71a94a94..6fe3846725 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/CompressedBufferedFileHandle.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/CompressedBufferedFileHandle.java
@@ -30,8 +30,8 @@ import 
org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.apache.hyracks.storage.common.buffercache.BufferCacheHeaderHelper;
 import org.apache.hyracks.storage.common.buffercache.CachedPage;
 import org.apache.hyracks.storage.common.buffercache.IPageReplacementStrategy;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.file.CompressedFileManager;
 import 
org.apache.hyracks.storage.common.compression.file.CompressedFileReference;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
 
b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
index 8e002b53ea..7f696b4e95 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
@@ -45,7 +45,7 @@ import 
org.apache.hyracks.storage.common.buffercache.HeapBufferAllocator;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
 import org.apache.hyracks.storage.common.buffercache.IPageReplacementStrategy;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider;
+import 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider;
 import org.apache.hyracks.storage.common.file.FileMapManager;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
@@ -152,7 +152,7 @@ public class TestStorageManagerComponentHolder {
         IFileMapProvider fileMapProvider = getFileMapProvider();
         bufferCache = new BufferCache(ioManager, prs, new 
DelayPageCleanerPolicy(1000),
                 (IFileMapManager) fileMapProvider, maxOpenFiles, 10, 
threadFactory, new HashMap<>(),
-                DefaultBufferCachePageOperationContextProvider.DEFAULT);
+                DefaultBufferCacheReadContextProvider.DEFAULT);
         return bufferCache;
     }
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/FieldPrefixNSMTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/FieldPrefixNSMTest.java
index 8b5fe68eb6..adf0033396 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/FieldPrefixNSMTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/FieldPrefixNSMTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.hyracks.storage.am.btree;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 
 import java.io.DataOutput;
 import java.util.Random;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestVirtualBufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestVirtualBufferCache.java
index 154e34a986..637e553c6b 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestVirtualBufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestVirtualBufferCache.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.am.lsm.btree.impl;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.DEFAULT;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.DEFAULT;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,9 +35,9 @@ import 
org.apache.hyracks.storage.common.buffercache.IExtraPageBlockHelper;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteCallback;
 import org.apache.hyracks.storage.common.buffercache.IPageWriteFailureCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheReadContext;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 
 public class TestVirtualBufferCache implements IVirtualBufferCache {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/test/VirtualBufferCacheTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/test/VirtualBufferCacheTest.java
index e7d258cc24..263de656ba 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/test/VirtualBufferCacheTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/test/VirtualBufferCacheTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.am.lsm.common.test;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collections;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheRegressionTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheRegressionTest.java
index 4dc165f134..8a670c2e87 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheRegressionTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheRegressionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.common;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 import static org.junit.Assert.fail;
 
 import java.io.File;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
index e797967859..c8a95323df 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.common;
 
-import static 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCachePageOperationContextProvider.NEW;
+import static 
org.apache.hyracks.storage.common.buffercache.context.read.DefaultBufferCacheReadContextProvider.NEW;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
@@ -46,7 +46,7 @@ import 
org.apache.hyracks.storage.common.buffercache.HaltOnFailureCallback;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.buffercache.NoOpPageWriteCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.test.support.TestStorageManagerComponentHolder;
 import org.apache.hyracks.test.support.TestUtils;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheWithCompressionTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheWithCompressionTest.java
index ad3c3b44c2..4f0da6457b 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheWithCompressionTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheWithCompressionTest.java
@@ -46,7 +46,7 @@ import 
org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.buffercache.IFIFOPageWriter;
 import org.apache.hyracks.storage.common.buffercache.NoOpPageWriteCallback;
-import 
org.apache.hyracks.storage.common.buffercache.context.page.DefaultBufferCacheWriteContext;
+import 
org.apache.hyracks.storage.common.buffercache.context.write.DefaultBufferCacheWriteContext;
 import 
org.apache.hyracks.storage.common.compression.SnappyCompressorDecompressorFactory;
 import 
org.apache.hyracks.storage.common.compression.file.CompressedFileReference;
 import 
org.apache.hyracks.storage.common.compression.file.ICompressedPageWriter;

Reply via email to