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 123009e242 [ASTERIXDB-3185][STO] Extend IStorageManager to provide
IIOManager
123009e242 is described below
commit 123009e24258de4f89b2f9845318575b4785e452
Author: Wail Alkowaileet <[email protected]>
AuthorDate: Tue May 16 17:03:22 2023 -0700
[ASTERIXDB-3185][STO] Extend IStorageManager to provide IIOManager
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
Indexes should use the IIOManager provided by the IStorageManager
Change-Id: Ie0da5eb22456c238a6255a1287f8576b6c534562
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17534
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 | 23 ++++++++++----------
.../nc/task/CloudToLocalStorageCachingTask.java | 2 +-
.../asterix/common/api/INcApplicationContext.java | 2 +-
.../runtime/utils/RuntimeComponentsProvider.java | 6 ++++++
.../btree/helper/BTreeHelperStorageManager.java | 6 ++++++
.../examples/btree/helper/RuntimeContext.java | 23 +++++++++++++-------
.../storage/am/btree/dataflow/BTreeResource.java | 2 +-
.../TreeIndexStatsOperatorNodePushable.java | 6 ++++--
.../dataflow/LSMColumnBTreeLocalResource.java | 2 +-
.../lsm/btree/dataflow/LSMBTreeLocalResource.java | 2 +-
.../dataflow/LSMInvertedIndexLocalResource.java | 2 +-
.../lsm/rtree/dataflow/LSMRTreeLocalResource.java | 2 +-
.../LSMRTreeWithAntiMatterLocalResource.java | 2 +-
.../storage/am/rtree/dataflow/RTreeResource.java | 2 +-
.../hyracks/storage/common/IStorageManager.java | 25 ++++++++++++----------
.../hyracks/test/support/TestStorageManager.java | 11 ++++++++++
.../lsm/btree/impl/TestLsmBtreeLocalResource.java | 2 +-
17 files changed, 77 insertions(+), 43 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 f9646b09a3..f60ed63872 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
@@ -147,7 +147,7 @@ public class NCAppRuntimeContext implements
INcApplicationContext {
private ILSMIOOperationScheduler lsmIOScheduler;
private PersistentLocalResourceRepository localResourceRepository;
private IIOManager ioManager;
- private IIOManager cloudIoManager;
+ private IIOManager persistenceIOManager;
private boolean isShuttingdown;
private ActiveManager activeManager;
private IReplicationChannel replicationChannel;
@@ -161,7 +161,7 @@ public class NCAppRuntimeContext implements
INcApplicationContext {
private IIndexCheckpointManagerProvider indexCheckpointManagerProvider;
private IReplicaManager replicaManager;
private IReceptionist receptionist;
- private ICacheManager cacheManager;
+ private final ICacheManager cacheManager;
private IConfigValidator configValidator;
private IDiskWriteRateLimiterProvider diskWriteRateLimiterProvider;
@@ -191,7 +191,9 @@ public class NCAppRuntimeContext implements
INcApplicationContext {
boolean initialRun) throws IOException {
ioManager = getServiceContext().getIoManager();
if (isCloudDeployment()) {
- cloudIoManager = new CloudIOManager((IOManager) ioManager);
+ persistenceIOManager = new CloudIOManager((IOManager) ioManager);
+ } else {
+ persistenceIOManager = ioManager;
}
int ioQueueLen =
getServiceContext().getAppConfig().getInt(NCConfig.Option.IO_QUEUE_SIZE);
threadExecutor =
@@ -202,9 +204,10 @@ public class NCAppRuntimeContext implements
INcApplicationContext {
storageProperties.getBufferCachePageSize(),
storageProperties.getBufferCacheNumPages());
lsmIOScheduler = createIoScheduler(storageProperties);
metadataMergePolicyFactory = new ConcurrentMergePolicyFactory();
+ // TODO do we want to write checkpoints for cloud?
indexCheckpointManagerProvider = new
IndexCheckpointManagerProvider(ioManager);
ILocalResourceRepositoryFactory
persistentLocalResourceRepositoryFactory =
- new PersistentLocalResourceRepositoryFactory(ioManager,
indexCheckpointManagerProvider,
+ new
PersistentLocalResourceRepositoryFactory(persistenceIOManager,
indexCheckpointManagerProvider,
persistedResourceRegistry);
localResourceRepository =
(PersistentLocalResourceRepository)
persistentLocalResourceRepositoryFactory.createRepository();
@@ -261,11 +264,11 @@ public class NCAppRuntimeContext implements
INcApplicationContext {
//initialize replication channel
replicationChannel = new ReplicationChannel(this);
- bufferCache = new BufferCache(getLocalOrCloudIoManager(), prs,
pcp, new FileMapManager(),
+ bufferCache = new BufferCache(persistenceIOManager, prs, pcp, new
FileMapManager(),
storageProperties.getBufferCacheMaxOpenFiles(),
ioQueueLen, getServiceContext().getThreadFactory(),
replicationManager);
} else {
- bufferCache = new BufferCache(getLocalOrCloudIoManager(), prs,
pcp, new FileMapManager(),
+ bufferCache = new BufferCache(persistenceIOManager, prs, pcp, new
FileMapManager(),
storageProperties.getBufferCacheMaxOpenFiles(),
ioQueueLen, getServiceContext().getThreadFactory());
}
@@ -370,12 +373,8 @@ public class NCAppRuntimeContext implements
INcApplicationContext {
}
@Override
- public IIOManager getCloudIoManager() {
- return cloudIoManager;
- }
-
- private IIOManager getLocalOrCloudIoManager() {
- return isCloudDeployment() ? cloudIoManager : ioManager;
+ public IIOManager getPersistenceIoManager() {
+ return persistenceIOManager;
}
@Override
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CloudToLocalStorageCachingTask.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CloudToLocalStorageCachingTask.java
index 55906b6f3b..d2140882b9 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CloudToLocalStorageCachingTask.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/task/CloudToLocalStorageCachingTask.java
@@ -48,7 +48,7 @@ public class CloudToLocalStorageCachingTask implements
INCLifecycleTask {
String nodeId = applicationContext.getServiceContext().getNodeId();
LOGGER.info("Syncing cloud to local storage for node {}. for
partitions: {}", nodeId, partitions);
- CloudIOManager cloudIOManager = (CloudIOManager)
applicationContext.getCloudIoManager();
+ CloudIOManager cloudIOManager = (CloudIOManager)
applicationContext.getPersistenceIoManager();
// TODO(htowaileb): eager caching is disabled for now as it depends on
static partitioning work
cloudIOManager.syncFiles(partitions);
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
index 434d61c39c..23487a933a 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
@@ -49,7 +49,7 @@ public interface INcApplicationContext extends
IApplicationContext {
IIOManager getIoManager();
- IIOManager getCloudIoManager();
+ IIOManager getPersistenceIoManager();
Executor getThreadExecutor();
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RuntimeComponentsProvider.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RuntimeComponentsProvider.java
index 0ffbe87dd2..04f594ee39 100644
---
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RuntimeComponentsProvider.java
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RuntimeComponentsProvider.java
@@ -22,6 +22,7 @@ import org.apache.asterix.common.api.IDatasetLifecycleManager;
import org.apache.asterix.common.api.INcApplicationContext;
import org.apache.hyracks.api.application.INCServiceContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.IIOManager;
import org.apache.hyracks.api.io.IJsonSerializable;
import org.apache.hyracks.api.io.IPersistedResourceRegistry;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
@@ -47,6 +48,11 @@ public class RuntimeComponentsProvider implements
IStorageManager, ILSMIOOperati
return ((INcApplicationContext)
ctx.getApplicationContext()).getLSMIOScheduler();
}
+ @Override
+ public IIOManager getIoManager(INCServiceContext ctx) {
+ return ((INcApplicationContext)
ctx.getApplicationContext()).getPersistenceIoManager();
+ }
+
@Override
public IBufferCache getBufferCache(INCServiceContext ctx) {
return ((INcApplicationContext)
ctx.getApplicationContext()).getBufferCache();
diff --git
a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
index 3d33ca1004..bf870b1756 100644
---
a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
+++
b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
@@ -20,6 +20,7 @@
package org.apache.hyracks.examples.btree.helper;
import org.apache.hyracks.api.application.INCServiceContext;
+import org.apache.hyracks.api.io.IIOManager;
import org.apache.hyracks.storage.common.IIndex;
import org.apache.hyracks.storage.common.ILocalResourceRepository;
import org.apache.hyracks.storage.common.IResourceLifecycleManager;
@@ -35,6 +36,11 @@ public class BTreeHelperStorageManager implements
IStorageManager {
private BTreeHelperStorageManager() {
}
+ @Override
+ public IIOManager getIoManager(INCServiceContext ctx) {
+ return RuntimeContext.get(ctx).getIoManager();
+ }
+
@Override
public IBufferCache getBufferCache(INCServiceContext ctx) {
return RuntimeContext.get(ctx).getBufferCache();
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 3aa3d23ea2..4632f2d717 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
@@ -23,6 +23,7 @@ import java.util.concurrent.ThreadFactory;
import org.apache.hyracks.api.application.INCServiceContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.IIOManager;
import org.apache.hyracks.storage.am.common.dataflow.IndexLifecycleManager;
import org.apache.hyracks.storage.common.IIndex;
import org.apache.hyracks.storage.common.ILocalResourceRepository;
@@ -43,19 +44,21 @@ import
org.apache.hyracks.storage.common.file.ResourceIdFactoryProvider;
import
org.apache.hyracks.storage.common.file.TransientLocalResourceRepositoryFactory;
public class RuntimeContext {
- private IBufferCache bufferCache;
- private IFileMapManager fileMapManager;
- private ILocalResourceRepository localResourceRepository;
- private IResourceLifecycleManager<IIndex> lcManager;
- private ResourceIdFactory resourceIdFactory;
- private ThreadFactory threadFactory = Thread::new;
+ private final IIOManager ioManager;
+ private final IBufferCache bufferCache;
+ private final IFileMapManager fileMapManager;
+ private final ILocalResourceRepository localResourceRepository;
+ private final IResourceLifecycleManager<IIndex> lcManager;
+ private final ResourceIdFactory resourceIdFactory;
public RuntimeContext(INCServiceContext appCtx) throws
HyracksDataException {
fileMapManager = new FileMapManager();
ICacheMemoryAllocator allocator = new HeapBufferAllocator();
IPageReplacementStrategy prs = new
ClockPageReplacementStrategy(allocator, 32768, 50);
- bufferCache = new BufferCache(appCtx.getIoManager(), prs, new
DelayPageCleanerPolicy(1000), fileMapManager, 100,
- 10, threadFactory);
+ ThreadFactory threadFactory = Thread::new;
+ this.ioManager = appCtx.getIoManager();
+ bufferCache = new BufferCache(ioManager, prs, new
DelayPageCleanerPolicy(1000), fileMapManager, 100, 10,
+ threadFactory);
ILocalResourceRepositoryFactory localResourceRepositoryFactory = new
TransientLocalResourceRepositoryFactory();
localResourceRepository =
localResourceRepositoryFactory.createRepository();
resourceIdFactory = (new
ResourceIdFactoryProvider(localResourceRepository)).createResourceIdFactory();
@@ -66,6 +69,10 @@ public class RuntimeContext {
bufferCache.close();
}
+ public IIOManager getIoManager() {
+ return ioManager;
+ }
+
public IBufferCache getBufferCache() {
return bufferCache;
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java
index 4589bed17e..4ee702d2ba 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java
@@ -59,7 +59,7 @@ public class BTreeResource implements IResource {
@Override
public IIndex createInstance(INCServiceContext ctx) throws
HyracksDataException {
IBufferCache bufferCache = storageManager.getBufferCache(ctx);
- IIOManager ioManager = ctx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(ctx);
FileReference resourceRef = ioManager.resolve(path);
return BTreeUtils.createBTree(bufferCache, typeTraits,
comparatorFactories, BTreeLeafFrameType.REGULAR_NSM,
resourceRef,
pageManagerFactory.createPageManager(bufferCache), false, nullTypeTraits,
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
index e35fba1bea..123734f05a 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
@@ -20,6 +20,7 @@ package org.apache.hyracks.storage.am.common.dataflow;
import java.io.DataOutput;
+import org.apache.hyracks.api.application.INCServiceContext;
import org.apache.hyracks.api.comm.IFrameWriter;
import org.apache.hyracks.api.comm.VSizeFrame;
import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -67,9 +68,10 @@ public class TreeIndexStatsOperatorNodePushable extends
AbstractUnaryOutputSourc
ITreeIndex treeIndex = (ITreeIndex) treeIndexHelper.getIndexInstance();
try {
writer.open();
- IBufferCache bufferCache =
storageManager.getBufferCache(ctx.getJobletContext().getServiceContext());
+ INCServiceContext ncServiceCtx =
ctx.getJobletContext().getServiceContext();
+ IBufferCache bufferCache =
storageManager.getBufferCache(ncServiceCtx);
LocalResource resource = treeIndexHelper.getResource();
- IIOManager ioManager = ctx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(ncServiceCtx);
FileReference fileRef = ioManager.resolve(resource.getPath());
TreeIndexStatsGatherer statsGatherer = new
TreeIndexStatsGatherer(bufferCache, treeIndex.getPageManager(),
fileRef, treeIndex.getRootPageId());
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/dataflow/LSMColumnBTreeLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/dataflow/LSMColumnBTreeLocalResource.java
index 56090bb0c0..8c47bba1ff 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/dataflow/LSMColumnBTreeLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/dataflow/LSMColumnBTreeLocalResource.java
@@ -82,7 +82,7 @@ public class LSMColumnBTreeLocalResource extends
LSMBTreeLocalResource {
@Override
public ILSMIndex createInstance(INCServiceContext serviceCtx) throws
HyracksDataException {
- IIOManager ioManager = serviceCtx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(serviceCtx);
FileReference file = ioManager.resolve(path);
List<IVirtualBufferCache> vbcs =
vbcProvider.getVirtualBufferCaches(serviceCtx, file);
ioOpCallbackFactory.initialize(serviceCtx, this);
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
index 21c818c559..0a47fc0137 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
@@ -102,7 +102,7 @@ public class LSMBTreeLocalResource extends LsmResource {
@Override
public ILSMIndex createInstance(INCServiceContext serviceCtx) throws
HyracksDataException {
- IIOManager ioManager = serviceCtx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(serviceCtx);
FileReference file = ioManager.resolve(path);
List<IVirtualBufferCache> vbcs =
vbcProvider.getVirtualBufferCaches(serviceCtx, file);
ioOpCallbackFactory.initialize(serviceCtx, this);
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexLocalResource.java
index 8a107e35c4..8048a93df1 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexLocalResource.java
@@ -129,7 +129,7 @@ public class LSMInvertedIndexLocalResource extends
LsmResource {
@Override
public ILSMIndex createInstance(INCServiceContext serviceCtx) throws
HyracksDataException {
- IIOManager ioManager = serviceCtx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(serviceCtx);
FileReference file = ioManager.resolve(path);
List<IVirtualBufferCache> virtualBufferCaches =
vbcProvider.getVirtualBufferCaches(serviceCtx, file);
IBufferCache bufferCache = storageManager.getBufferCache(serviceCtx);
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeLocalResource.java
index dd21f7ca2a..3a8923819c 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeLocalResource.java
@@ -108,7 +108,7 @@ public class LSMRTreeLocalResource extends LsmResource {
@Override
public IIndex createInstance(INCServiceContext ncServiceCtx) throws
HyracksDataException {
- IIOManager ioManager = ncServiceCtx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(ncServiceCtx);
FileReference fileRef = ioManager.resolve(path);
List<IVirtualBufferCache> virtualBufferCaches =
vbcProvider.getVirtualBufferCaches(ncServiceCtx, fileRef);
ioOpCallbackFactory.initialize(ncServiceCtx, this);
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterLocalResource.java
index 33b9da60b4..e3596619ae 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterLocalResource.java
@@ -100,7 +100,7 @@ public class LSMRTreeWithAntiMatterLocalResource extends
LsmResource {
@Override
public ILSMIndex createInstance(INCServiceContext serviceCtx) throws
HyracksDataException {
- IIOManager ioManager = serviceCtx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(serviceCtx);
FileReference file = ioManager.resolve(path);
List<IVirtualBufferCache> virtualBufferCaches =
vbcProvider.getVirtualBufferCaches(serviceCtx, file);
ioOpCallbackFactory.initialize(serviceCtx, this);
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeResource.java
index 919598273f..517c162c0f 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeResource.java
@@ -63,7 +63,7 @@ public class RTreeResource implements IResource {
@Override
public IIndex createInstance(INCServiceContext ctx) throws
HyracksDataException {
- IIOManager ioManager = ctx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(ctx);
FileReference resourceRef = ioManager.resolve(path);
return RTreeUtils.createRTree(storageManager.getBufferCache(ctx),
typeTraits, valueProviderFactories,
comparatorFactories, rtreePolicyType, resourceRef, false,
pageManagerFactory, nullTypeTraits,
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManager.java
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManager.java
index d985f31df6..9d0880e9fa 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManager.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManager.java
@@ -21,6 +21,7 @@ package org.apache.hyracks.storage.common;
import java.io.Serializable;
import org.apache.hyracks.api.application.INCServiceContext;
+import org.apache.hyracks.api.io.IIOManager;
import org.apache.hyracks.api.io.IJsonSerializable;
import org.apache.hyracks.storage.common.buffercache.IBufferCache;
import org.apache.hyracks.storage.common.file.IResourceIdFactory;
@@ -30,29 +31,31 @@ import
org.apache.hyracks.storage.common.file.IResourceIdFactory;
*/
public interface IStorageManager extends Serializable, IJsonSerializable {
/**
- * @param ctx
- * the nc service context
- * @return the disk buffer cache {@link
org.apache.hyracks.storage.common.buffercache.IBufferCache}
+ * @param ctx the nc service context
+ * @return {@link IIOManager} for persisted files
+ */
+ IIOManager getIoManager(INCServiceContext ctx);
+
+ /**
+ * @param ctx the nc service context
+ * @return the disk buffer cache {@link IBufferCache}
*/
IBufferCache getBufferCache(INCServiceContext ctx);
/**
- * @param ctx
- * the nc service context
- * @return the local resource repository {@link
org.apache.hyracks.storage.am.common.build.ILocalResourceRepository}
+ * @param ctx the nc service context
+ * @return the local resource repository {@link ILocalResourceRepository}
*/
ILocalResourceRepository getLocalResourceRepository(INCServiceContext ctx);
/**
- * @param ctx
- * the nc service context
- * @return the resource id factory {@link
org.apache.hyracks.storage.common.file.IResourceIdFactory}
+ * @param ctx the nc service context
+ * @return the resource id factory {@link IResourceIdFactory}
*/
IResourceIdFactory getResourceIdFactory(INCServiceContext ctx);
/**
- * @param ctx
- * the nc service context
+ * @param ctx the nc service context
* @return the resource lifecycle manager
*/
IResourceLifecycleManager<IIndex> getLifecycleManager(INCServiceContext
ctx);
diff --git
a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManager.java
b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManager.java
index 350de74cc4..e54ce2c399 100644
---
a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManager.java
+++
b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManager.java
@@ -19,6 +19,8 @@
package org.apache.hyracks.test.support;
import org.apache.hyracks.api.application.INCServiceContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.IIOManager;
import org.apache.hyracks.storage.common.IIndex;
import org.apache.hyracks.storage.common.ILocalResourceRepository;
import org.apache.hyracks.storage.common.IResourceLifecycleManager;
@@ -29,6 +31,15 @@ import
org.apache.hyracks.storage.common.file.ResourceIdFactory;
public class TestStorageManager implements IStorageManager {
private static final long serialVersionUID = 1L;
+ @Override
+ public IIOManager getIoManager(INCServiceContext ctx) {
+ try {
+ return TestStorageManagerComponentHolder.getIOManager();
+ } catch (HyracksDataException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
@Override
public IBufferCache getBufferCache(INCServiceContext ctx) {
return TestStorageManagerComponentHolder.getBufferCache(ctx);
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/TestLsmBtreeLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestLsmBtreeLocalResource.java
index c7d3dff319..039b244437 100644
---
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestLsmBtreeLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/impl/TestLsmBtreeLocalResource.java
@@ -75,7 +75,7 @@ public class TestLsmBtreeLocalResource extends
LSMBTreeLocalResource {
@Override
public ILSMIndex createInstance(INCServiceContext serviceCtx) throws
HyracksDataException {
- IIOManager ioManager = serviceCtx.getIoManager();
+ IIOManager ioManager = storageManager.getIoManager(serviceCtx);
FileReference file = ioManager.resolve(path);
List<IVirtualBufferCache> vbcs =
vbcProvider.getVirtualBufferCaches(serviceCtx, file);
for (int i = 0; i < vbcs.size(); i++) {