This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new c31631e7553 IGNITE-24424 Move cacheWorkDir, cacheDir to NodeFileTree
(#11857)
c31631e7553 is described below
commit c31631e7553a800a8edc45eb42c4c71853f13bf8
Author: Nikolay <[email protected]>
AuthorDate: Mon Feb 10 14:26:35 2025 +0300
IGNITE-24424 Move cacheWorkDir, cacheDir to NodeFileTree (#11857)
---
.../integration/AbstractBasicIntegrationTest.java | 2 +
.../util/GridCommandHandlerIndexingTest.java | 7 +--
.../org/apache/ignite/internal/cdc/CdcMain.java | 2 +-
.../management/persistence/PersistenceTask.java | 34 ++++++-----
.../internal/processors/cache/CachesRegistry.java | 2 +-
.../processors/cache/ClusterCachesInfo.java | 3 +-
.../processors/cache/GridLocalConfigManager.java | 47 ++++----------
.../CachePartitionDefragmentationManager.java | 5 +-
.../persistence/file/FilePageStoreManager.java | 64 ++-----------------
.../cache/persistence/filename/NodeFileTree.java | 71 +++++++++++++++++++---
.../snapshot/IgniteSnapshotManager.java | 2 +-
.../persistence/snapshot/SnapshotFutureTask.java | 14 ++---
.../snapshot/SnapshotRestoreProcess.java | 8 ++-
.../GridIoManagerFileTransmissionSelfTest.java | 20 +-----
...CacheConfigurationFileConsistencyCheckTest.java | 21 +++----
.../db/IgnitePdsDataRegionMetricsTest.java | 7 ++-
.../snapshot/AbstractSnapshotSelfTest.java | 3 +-
.../snapshot/IgniteClusterSnapshotCheckTest.java | 7 ++-
.../IgniteClusterSnapshotRestoreSelfTest.java | 4 +-
.../persistence/snapshot/PlainSnapshotTest.java | 26 ++------
.../cache/index/AbstractIndexingCommonTest.java | 7 +--
.../persistence/RebuildIndexLogMessageTest.java | 10 +--
.../persistence/db/wal/IgniteWalRecoveryTest.java | 5 +-
.../snapshot/IgniteClusterSnapshotMetricsTest.java | 3 +-
.../query/h2/GridIndexRebuildSelfTest.java | 5 +-
25 files changed, 155 insertions(+), 224 deletions(-)
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java
index 59c00cd32bc..be3496844ae 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java
@@ -69,6 +69,8 @@ public class AbstractBasicIntegrationTest extends
GridCommonAbstractTest {
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
+ cleanPersistenceDir();
+
startGrids(nodeCount());
client = startClientGrid("client");
diff --git
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
index 23640957d91..ebbda978bf2 100644
---
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
+++
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
@@ -32,7 +32,6 @@ import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.cluster.ClusterState;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.lang.IgnitePredicate;
@@ -343,11 +342,7 @@ public class GridCommandHandlerIndexingTest extends
GridCommandHandlerClusterPer
* Get index partition file for specific node and cache.
*/
private File indexPartition(Ignite ig, String groupName) {
- IgniteEx ig0 = (IgniteEx)ig;
-
- FilePageStoreManager pageStoreMgr =
((FilePageStoreManager)ig0.context().cache().context().pageStore());
-
- return new File(pageStoreMgr.cacheWorkDir(true, groupName),
INDEX_FILE_NAME);
+ return new
File(((IgniteEx)ig).context().pdsFolderResolver().fileTree().cacheStorage(true,
groupName), INDEX_FILE_NAME);
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
b/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
index f9b3d3f94f5..d6c31b42538 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
@@ -453,7 +453,7 @@ public class CdcMain implements Runnable {
CdcFileLockHolder lock = settings.getLockedFileLockHolder();
if (lock == null) {
- File consIdDir = settings.persistentStoreNodePath();
+ File consIdDir = ft.nodeStorage();
lock = tryLock(consIdDir);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/management/persistence/PersistenceTask.java
b/modules/core/src/main/java/org/apache/ignite/internal/management/persistence/PersistenceTask.java
index 95ec61ac20c..4f6a8dee118 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/management/persistence/PersistenceTask.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/management/persistence/PersistenceTask.java
@@ -44,7 +44,7 @@ import
org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheProcessor;
import
org.apache.ignite.internal.processors.cache.persistence.CheckCorruptedCacheStoresCleanAction;
import
org.apache.ignite.internal.processors.cache.persistence.CleanCacheStoresMaintenanceAction;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.internal.processors.task.GridInternal;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -57,7 +57,6 @@ import org.apache.ignite.maintenance.MaintenanceTask;
import org.jetbrains.annotations.Nullable;
import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CORRUPTED_DATA_FILES_MNTC_TASK_NAME;
-import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.cacheDirName;
/** */
@GridInternal
@@ -78,6 +77,9 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
/** */
private static final long serialVersionUID = 0L;
+ /** Node file tree. */
+ private transient NodeFileTree ft;
+
/**
* Create job with specified argument.
*
@@ -93,6 +95,8 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
if (!ignite.context().maintenanceRegistry().isMaintenanceMode())
return new PersistenceTaskResult(false);
+ ft = ignite.context().pdsFolderResolver().fileTree();
+
if (arg instanceof PersistenceCleanAllTaskArg
|| arg instanceof PersistenceCleanCorruptedTaskArg
|| arg instanceof PersistenceCleanCachesTaskArg)
@@ -110,32 +114,30 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
MaintenanceRegistry mntcReg =
ignite.context().maintenanceRegistry();
MaintenanceTask task =
mntcReg.activeMaintenanceTask(CORRUPTED_DATA_FILES_MNTC_TASK_NAME);
- File workDir =
ignite.context().pdsFolderResolver().fileTree().nodeStorage();
-
if (arg instanceof PersistenceBackupAllTaskArg)
- return backupAll(workDir);
+ return backupAll();
else if (arg instanceof PersistenceBackupCorruptedTaskArg)
- return backupCaches(workDir, corruptedCacheDirectories(task));
+ return backupCaches(corruptedCacheDirectories(task));
else
- return backupCaches(workDir,
cacheDirectoriesFromCacheNames(((PersistenceBackupCachesTaskArg)arg).caches()));
+ return
backupCaches(cacheDirectoriesFromCacheNames(((PersistenceBackupCachesTaskArg)arg).caches()));
}
/** */
- private PersistenceTaskResult backupAll(File workDir) {
+ private PersistenceTaskResult backupAll() {
GridCacheProcessor cacheProc = ignite.context().cache();
List<String> allCacheDirs = cacheProc.cacheDescriptors()
.values()
.stream()
- .map(desc -> cacheDirName(desc.cacheConfiguration()))
+ .map(desc -> ft.cacheDirName(desc.cacheConfiguration()))
.distinct()
.collect(Collectors.toList());
- return backupCaches(workDir, allCacheDirs);
+ return backupCaches(allCacheDirs);
}
/** */
- private PersistenceTaskResult backupCaches(File workDir, List<String>
cacheDirs) {
+ private PersistenceTaskResult backupCaches(List<String> cacheDirs) {
PersistenceTaskResult res = new PersistenceTaskResult(true);
List<String> backupCompletedCaches = new ArrayList<>();
@@ -144,13 +146,13 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
for (String dir : cacheDirs) {
String backupDirName = BACKUP_FOLDER_PREFIX + dir;
- File backupDir = new File(workDir, backupDirName);
+ File backupDir = new File(ft.nodeStorage(), backupDirName);
if (!backupDir.exists()) {
try {
U.ensureDirectory(backupDir, backupDirName, null);
- copyCacheFiles(workDir.toPath().resolve(dir).toFile(),
backupDir);
+
copyCacheFiles(ft.nodeStorage().toPath().resolve(dir).toFile(), backupDir);
backupCompletedCaches.add(backupDirName);
}
@@ -228,7 +230,7 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
try {
pageStore.cleanupPersistentSpace(cacheDescr.cacheConfiguration());
-
cleanedCaches.add(cacheDirName(cacheDescr.cacheConfiguration()));
+
cleanedCaches.add(ft.cacheDirName(cacheDescr.cacheConfiguration()));
}
catch (IgniteCheckedException e) {
failedToCleanCaches.add(name);
@@ -268,7 +270,7 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
List<String> allCacheDirs = cacheProc.cacheDescriptors()
.values()
.stream()
- .map(desc -> cacheDirName(desc.cacheConfiguration()))
+ .map(desc -> ft.cacheDirName(desc.cacheConfiguration()))
.collect(Collectors.toList());
try {
@@ -392,7 +394,7 @@ public class PersistenceTask extends
VisorOneNodeTask<PersistenceTaskArg, Persis
.filter(s ->
CU.isPersistentCache(cacheProc.cacheDescriptor(s).cacheConfiguration(), dsCfg))
.map(s -> cacheProc.cacheDescriptor(s).cacheConfiguration())
- .map(FilePageStoreManager::cacheDirName)
+ .map(ft::cacheDirName)
.distinct()
.collect(Collectors.toList());
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java
index 6f8a9ad648f..412e1a20b12 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java
@@ -273,7 +273,7 @@ public class CachesRegistry {
for (StoredCacheData data : cacheConfigsToPersist) {
try {
FilePageStoreManager.checkAndInitCacheWorkDir(
- cctx.cache().configManager().cacheWorkDir(data.config()),
+
cctx.kernalContext().pdsFolderResolver().fileTree().cacheStorage(data.config()),
log
);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
index 2894875c7a8..d405f6c000d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
@@ -92,7 +92,6 @@ import static
org.apache.ignite.events.EventType.EVT_NODE_JOINED;
import static
org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType.CACHE_PROC;
import static
org.apache.ignite.internal.processors.cache.GridCacheProcessor.CLUSTER_READ_ONLY_MODE_ERROR_MSG_FORMAT;
import static
org.apache.ignite.internal.processors.cache.GridLocalConfigManager.validateIncomingConfiguration;
-import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.cacheDirName;
import static
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.SNP_IN_PROGRESS_ERR_MSG;
/**
@@ -1202,7 +1201,7 @@ public class ClusterCachesInfo {
if (!CU.isPersistentCache(ccfg,
ctx.config().getDataStorageConfiguration()))
return false;
- String expDir = cacheDirName(ccfg);
+ String expDir = ctx.pdsFolderResolver().fileTree().cacheDirName(ccfg);
try {
return !expDir.equals(Paths.get(expDir).toFile().getName());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
index 005a93c7463..0e3ffb8219b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridLocalConfigManager.java
@@ -58,7 +58,7 @@ import org.apache.ignite.failure.FailureContext;
import org.apache.ignite.failure.FailureType;
import org.apache.ignite.internal.GridKernalContext;
import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
-import
org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderSettings;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.CU;
@@ -100,8 +100,8 @@ public class GridLocalConfigManager {
/** Cache processor. */
private final GridCacheProcessor cacheProcessor;
- /** Absolute directory for file page store. Includes consistent id based
folder. */
- private final File storeWorkDir;
+ /** Node file tree. */
+ private final NodeFileTree ft;
/** Marshaller. */
private final Marshaller marshaller;
@@ -124,16 +124,10 @@ public class GridLocalConfigManager {
ctx = kernalCtx;
log = ctx.log(getClass());
marshaller = ctx.marshallerContext().jdkMarshaller();
+ ft = ctx.pdsFolderResolver().fileTree();
- PdsFolderSettings<?> folderSettings =
ctx.pdsFolderResolver().resolveFolders();
-
- if (!ctx.clientNode() && folderSettings.persistentStoreRootPath() !=
null) {
- storeWorkDir = folderSettings.persistentStoreNodePath();
-
- U.ensureDirectory(storeWorkDir, "page store work directory", log);
- }
- else
- storeWorkDir = null;
+ if (!ctx.clientNode() && ft.nodeStorage() != null)
+ U.ensureDirectory(ft.nodeStorage(), "page store work directory",
log);
}
/**
@@ -148,7 +142,7 @@ public class GridLocalConfigManager {
try {
for (CacheConfiguration<?, ?> ccfg : ccfgs) {
- File cacheDir = cacheWorkDir(ccfg);
+ File cacheDir = ft.cacheStorage(ccfg);
if (!cacheDir.exists())
continue;
@@ -175,7 +169,7 @@ public class GridLocalConfigManager {
if (ctx.clientNode())
return Collections.emptyMap();
- File[] files = storeWorkDir.listFiles();
+ File[] files = ft.nodeStorage().listFiles();
if (files == null)
return Collections.emptyMap();
@@ -293,7 +287,7 @@ public class GridLocalConfigManager {
if (!CU.storeCacheConfig(cacheProcessor.context(), ccfg))
return;
- File cacheWorkDir = cacheWorkDir(ccfg);
+ File cacheWorkDir = ft.cacheStorage(ccfg);
FilePageStoreManager.checkAndInitCacheWorkDir(cacheWorkDir, log);
@@ -426,7 +420,7 @@ public class GridLocalConfigManager {
* @throws IgniteCheckedException If fails.
*/
public void removeCacheGroupConfigurationData(CacheGroupContext ctx)
throws IgniteCheckedException {
- File cacheGrpDir = cacheWorkDir(ctx.sharedGroup(),
ctx.cacheOrGroupName());
+ File cacheGrpDir = ft.cacheStorage(ctx.config());
if (cacheGrpDir != null && cacheGrpDir.exists()) {
DirectoryStream.Filter<Path> cacheCfgFileFilter = new
DirectoryStream.Filter<Path>() {
@@ -537,9 +531,7 @@ public class GridLocalConfigManager {
* @return Cache configuration file with respect to {@link
CacheConfiguration#getGroupName} value.
*/
public File cacheConfigurationFile(CacheConfiguration<?, ?> ccfg) {
- File cacheWorkDir = cacheWorkDir(ccfg);
-
- return new File(cacheWorkDir, cacheDataFilename(ccfg));
+ return new File(ft.cacheStorage(ccfg), cacheDataFilename(ccfg));
}
/** @return Name of cache data filename. */
@@ -547,23 +539,6 @@ public class GridLocalConfigManager {
return ccfg.getGroupName() == null ? CACHE_DATA_FILENAME :
(ccfg.getName() + CACHE_DATA_FILENAME);
}
- /**
- * @param ccfg Cache configuration.
- * @return Store dir for given cache.
- */
- public File cacheWorkDir(CacheConfiguration<?, ?> ccfg) {
- return FilePageStoreManager.cacheWorkDir(storeWorkDir,
FilePageStoreManager.cacheDirName(ccfg));
- }
-
- /**
- * @param isSharedGroup {@code True} if cache is sharing the same
`underlying` cache.
- * @param cacheOrGroupName Cache name.
- * @return Store directory for given cache.
- */
- public File cacheWorkDir(boolean isSharedGroup, String cacheOrGroupName) {
- return FilePageStoreManager.cacheWorkDir(storeWorkDir,
FilePageStoreManager.cacheDirName(isSharedGroup, cacheOrGroupName));
- }
-
/**
* @return {@code True} if need locally start all existing caches on
client node start.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/defragmentation/CachePartitionDefragmentationManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/defragmentation/CachePartitionDefragmentationManager.java
index 21b09474185..6e589b1f718 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/defragmentation/CachePartitionDefragmentationManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/defragmentation/CachePartitionDefragmentationManager.java
@@ -58,6 +58,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.Checkp
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.LightweightCheckpointManager;
import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.file.FileVersionCheckingFactory;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import
org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList;
import
org.apache.ignite.internal.processors.cache.persistence.freelist.SimpleDataRow;
import
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryEx;
@@ -290,10 +291,12 @@ public class CachePartitionDefragmentationManager {
IgniteInternalFuture<?> idxDfrgFut = null;
DataPageEvictionMode prevPageEvictionMode = null;
+ NodeFileTree ft =
sharedCtx.kernalContext().pdsFolderResolver().fileTree();
+
for (CacheGroupContext oldGrpCtx : cacheGrpCtxsForDefragmentation)
{
int grpId = oldGrpCtx.groupId();
- File workDir =
filePageStoreMgr.cacheWorkDir(oldGrpCtx.sharedGroup(),
oldGrpCtx.cacheOrGroupName());
+ File workDir = ft.cacheStorage(oldGrpCtx.config());
List<CacheDataStore> oldCacheDataStores = oldStores.get(grpId);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
index dd0c0cbe59a..2bab7c563f1 100755
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
@@ -247,7 +247,7 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
/** {@inheritDoc} */
@Override public void cleanupPersistentSpace(CacheConfiguration
cacheConfiguration) throws IgniteCheckedException {
try {
- File cacheWorkDir = cacheWorkDir(cacheConfiguration);
+ File cacheWorkDir = ft.cacheStorage(cacheConfiguration);
if (!cacheWorkDir.exists())
return;
@@ -368,7 +368,7 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
new
MaintenanceTask(CORRUPTED_DATA_FILES_MNTC_TASK_NAME,
"Corrupted cache groups found",
cacheCfgs.stream()
- .map(ccfg -> cacheWorkDir(ccfg).getName())
+ .map(ccfg -> ft.cacheStorage(ccfg).getName())
.collect(Collectors.joining(File.separator)))
);
}
@@ -403,7 +403,7 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
boolean globalEnabled = cctx.database().walEnabled(grpDescId,
false);
if (!locEnabled || !globalEnabled) {
- File dir = cacheWorkDir(desc.config());
+ File dir = ft.cacheStorage(desc.config());
if (Arrays.stream(
dir.listFiles()).anyMatch(f ->
!f.getName().equals(CACHE_DATA_FILENAME))) {
@@ -540,13 +540,6 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
return store.pageOffset(pageId);
}
- /**
- *
- */
- public Path getPath(boolean isSharedGroup, String cacheOrGroupName, int
partId) {
- return getPartitionFilePath(cacheWorkDir(isSharedGroup,
cacheOrGroupName), partId);
- }
-
/**
* @param grpDesc Cache group descriptor.
* @param ccfg Cache configuration.
@@ -556,7 +549,7 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
private CacheStoreHolder initForCache(CacheGroupDescriptor grpDesc,
CacheConfiguration ccfg) throws IgniteCheckedException {
assert !grpDesc.sharedGroup() || ccfg.getGroupName() != null :
ccfg.getName();
- File cacheWorkDir = cacheWorkDir(ccfg);
+ File cacheWorkDir = ft.cacheStorage(ccfg);
String dataRegionName = grpDesc.config().getDataRegionName();
DataRegion dataRegion = cctx.database().dataRegion(dataRegionName);
@@ -733,7 +726,7 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
* @return Partition file.
*/
@NotNull public static File getPartitionFile(File workDir, String
cacheDirName, int partId) {
- return new File(cacheWorkDir(workDir, cacheDirName),
getPartitionFileName(partId));
+ return new File(NodeFileTree.cacheStorage(workDir, cacheDirName),
getPartitionFileName(partId));
}
/**
@@ -952,51 +945,6 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
return pageCnt;
}
- /**
- * @param ccfg Cache configuration.
- * @return Store dir for given cache.
- */
- public File cacheWorkDir(CacheConfiguration<?, ?> ccfg) {
- return cacheWorkDir(ft.nodeStorage(), cacheDirName(ccfg));
- }
-
- /**
- * @param isSharedGroup {@code True} if cache is sharing the same
`underlying` cache.
- * @param cacheOrGroupName Cache name.
- * @return Store directory for given cache.
- */
- public File cacheWorkDir(boolean isSharedGroup, String cacheOrGroupName) {
- return cacheWorkDir(ft.nodeStorage(), cacheDirName(isSharedGroup,
cacheOrGroupName));
- }
-
- /**
- * @param cacheDirName Cache directory name.
- * @return Store directory for given cache.
- */
- public static File cacheWorkDir(File storeWorkDir, String cacheDirName) {
- return new File(storeWorkDir, cacheDirName);
- }
-
- /**
- * @param isSharedGroup {@code True} if cache is sharing the same
`underlying` cache.
- * @param cacheOrGroupName Cache name.
- * @return The full cache directory name.
- */
- public static String cacheDirName(boolean isSharedGroup, String
cacheOrGroupName) {
- return isSharedGroup ? CACHE_GRP_DIR_PREFIX + cacheOrGroupName
- : CACHE_DIR_PREFIX + cacheOrGroupName;
- }
-
- /**
- * @param ccfg Cache configuration.
- * @return The full cache directory name.
- */
- public static String cacheDirName(CacheConfiguration<?, ?> ccfg) {
- boolean isSharedGrp = ccfg.getGroupName() != null;
-
- return cacheDirName(isSharedGrp, CU.cacheOrGroupName(ccfg));
- }
-
/**
* @param grpId Group id.
* @return Name of cache group directory.
@@ -1011,7 +959,7 @@ public class FilePageStoreManager extends
GridCacheSharedManagerAdapter implemen
if (gctx == null)
throw new IgniteCheckedException("Cache group context has not
found due to the cache group is stopped.");
- return cacheDirName(gctx.config());
+ return ft.cacheDirName(gctx.config());
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/NodeFileTree.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/NodeFileTree.java
index 702adcc4e49..0cb5aacb52d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/NodeFileTree.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/NodeFileTree.java
@@ -19,6 +19,7 @@ package
org.apache.ignite.internal.processors.cache.persistence.filename;
import java.io.File;
import java.nio.file.Paths;
+import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.util.typedef.internal.A;
@@ -31,6 +32,8 @@ import org.jetbrains.annotations.Nullable;
import static
org.apache.ignite.configuration.DataStorageConfiguration.DFLT_WAL_ARCHIVE_PATH;
import static
org.apache.ignite.configuration.DataStorageConfiguration.DFLT_WAL_CDC_PATH;
import static
org.apache.ignite.configuration.DataStorageConfiguration.DFLT_WAL_PATH;
+import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CACHE_DIR_PREFIX;
+import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CACHE_GRP_DIR_PREFIX;
import static
org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderResolver.DB_DEFAULT_FOLDER;
/**
@@ -70,17 +73,17 @@ import static
org.apache.ignite.internal.processors.cache.persistence.filename.P
* │ ├── marshaller
← marshaller (shared between all local nodes)
* │ │ └── 1645778359.classname0
* │ ├── node00-e57e62a9-2ccf-4e1b-a11e-c24c21b9ed4c
← nodeStorage (node 0).
- * │ │ ├── cache-default
+ * │ │ ├── cache-default
← cacheStorage (cache name "default").
* │ │ │ ├── cache_data.dat
* │ │ │ ├── index.bin
* │ │ │ ├── part-0.bin
* │ │ │ ├── part-1.bin
* ...
* │ │ │ └── part-9.bin
- * │ │ ├── cache-ignite-sys-cache
+ * │ │ ├── cache-ignite-sys-cache
← cacheStorage (cache name "ignite-sys-cache").
* │ │ │ ├── cache_data.dat
* │ │ │ └── index.bin
- * │ │ ├── cache-tx-cache
+ * │ │ ├── cacheGroup-tx-cache
← cacheStorage (cache group "tx-cache").
* │ │ │ ├── cache_data.dat
* │ │ │ ├── index.bin
* │ │ │ ├── part-0.bin
@@ -97,11 +100,11 @@ import static
org.apache.ignite.internal.processors.cache.persistence.filename.P
* │ │ │ └── part-1.bin
* │ │ └── snp
← snpTmp (node 0)
* │ ├── node01-e57e62a9-2ccf-4e1b-a11e-d35d32c0fe5d
← nodeStorage (node 1).
- * │ │ ├── cache-default
+ * │ │ ├── cache-default
← cacheStorage (cache name "default").
* ..
- * │ │ ├── cache-ignite-sys-cache
+ * │ │ ├── cache-ignite-sys-cache
← cacheStorage (cache name "ignite-sys-cache").
* ...
- * │ │ ├── cache-tx-cache
+ * │ │ ├── cacheGroup-tx-cache
← cacheStorage (cache group "tx-cache").
* ...
* │ │ ├── cp
← checkpoint (node 1).
* ...
@@ -342,13 +345,67 @@ public class NodeFileTree extends SharedFileTree {
return walArchive != null && wal != null && !walArchive.equals(wal);
}
+ /**
+ * @param ccfg Cache configuration.
+ * @return Store dir for given cache.
+ */
+ public File cacheStorage(CacheConfiguration<?, ?> ccfg) {
+ return cacheStorage(cacheDirName(ccfg));
+ }
+
+ /**
+ * @param isSharedGroup {@code True} if cache is sharing the same
`underlying` cache.
+ * @param cacheOrGroupName Cache name.
+ * @return The full cache directory name.
+ */
+ public File cacheStorage(boolean isSharedGroup, String cacheOrGroupName) {
+ return cacheStorage(cacheDirName(isSharedGroup, cacheOrGroupName));
+ }
+
+ /**
+ * @param ccfg Cache configuration.
+ * @return The full cache directory name.
+ */
+ public String cacheDirName(CacheConfiguration<?, ?> ccfg) {
+ boolean isSharedGrp = ccfg.getGroupName() != null;
+
+ return cacheDirName(isSharedGrp, CU.cacheOrGroupName(ccfg));
+ }
+
+ /**
+ * @param cacheDirName Cache directory name.
+ * @return Store directory for given cache.
+ */
+ public static File cacheStorage(File storeWorkDir, String cacheDirName) {
+ return new File(storeWorkDir, cacheDirName);
+ }
+
+ /**
+ * @param cacheDirName Cache directory name.
+ * @return Store directory for given cache.
+ */
+ public File cacheStorage(String cacheDirName) {
+ return new File(nodeStorage, cacheDirName);
+ }
+
+ /**
+ * @param isSharedGroup {@code True} if cache is sharing the same
`underlying` cache.
+ * @param cacheOrGroupName Cache name.
+ * @return The full cache directory name.
+ */
+ private String cacheDirName(boolean isSharedGroup, String
cacheOrGroupName) {
+ return isSharedGroup
+ ? CACHE_GRP_DIR_PREFIX + cacheOrGroupName
+ : CACHE_DIR_PREFIX + cacheOrGroupName;
+ }
+
/**
* Resolves directory specified by the given arguments.
*
* @param cfg Configured directory path.
* @return Initialized directory.
*/
- public File resolveDirectory(String cfg) {
+ private File resolveDirectory(String cfg) {
File sharedDir = new File(cfg);
return sharedDir.isAbsolute()
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
index cc1259cdbf0..cdc456fc093 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
@@ -3893,7 +3893,7 @@ public class IgniteSnapshotManager extends
GridCacheSharedManagerAdapter
try {
task.partsLeft.compareAndSet(-1, partsCnt);
- File cacheDir =
FilePageStoreManager.cacheWorkDir(ft.nodeStorage(), cacheDirName);
+ File cacheDir = ft.cacheStorage(cacheDirName);
File tmpCacheDir =
U.resolveWorkDirectory(ft.nodeStorage().getAbsolutePath(),
formatTmpDirName(cacheDir).getName(), false);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotFutureTask.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotFutureTask.java
index 8a672fb4239..27e66490be3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotFutureTask.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotFutureTask.java
@@ -73,8 +73,8 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
-import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.cacheWorkDir;
import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.getPartitionFile;
+import static
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.cacheStorage;
import static
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.copy;
import static
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.databaseRelativePath;
import static
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.partDeltaFile;
@@ -265,13 +265,13 @@ class SnapshotFutureTask extends
AbstractCreateSnapshotFutureTask implements Che
throw new IgniteCheckedException("In-memory cache groups
are not allowed to be snapshot: " + grpId);
// Create cache group snapshot directory on start in a single
thread.
- U.ensureDirectory(cacheWorkDir(tmpConsIdDir,
FilePageStoreManager.cacheDirName(gctx.config())),
+ U.ensureDirectory(cacheStorage(tmpConsIdDir,
ft.cacheDirName(gctx.config())),
"directory for snapshotting cache group",
log);
}
if (withMetaStorage) {
- U.ensureDirectory(cacheWorkDir(tmpConsIdDir,
MetaStorage.METASTORAGE_DIR_NAME),
+ U.ensureDirectory(cacheStorage(tmpConsIdDir,
MetaStorage.METASTORAGE_DIR_NAME),
"directory for snapshotting metastorage",
log);
}
@@ -355,7 +355,7 @@ class SnapshotFutureTask extends
AbstractCreateSnapshotFutureTask implements Che
throw new IgniteCheckedException("Cache group is stopped :
" + grpId);
ccfgs.add(gctx.config());
- addPartitionWriters(grpId, e.getValue(),
FilePageStoreManager.cacheDirName(gctx.config()));
+ addPartitionWriters(grpId, e.getValue(),
ft.cacheDirName(gctx.config()));
}
if (withMetaStorage) {
@@ -367,7 +367,7 @@ class SnapshotFutureTask extends
AbstractCreateSnapshotFutureTask implements Che
cctx.cache().configManager().readConfigurationFiles(ccfgs,
(ccfg, ccfgFile) -> ccfgSndrs.add(new
CacheConfigurationSender(ccfg.getName(),
- FilePageStoreManager.cacheDirName(ccfg), ccfgFile)));
+ ft.cacheDirName(ccfg), ccfgFile)));
}
catch (IgniteCheckedException e) {
acceptException(e);
@@ -479,7 +479,7 @@ class SnapshotFutureTask extends
AbstractCreateSnapshotFutureTask implements Che
GroupPartitionId pair = new GroupPartitionId(grpId, partId);
PageStore store = pageStore.getStore(grpId, partId);
- File delta = partDeltaFile(cacheWorkDir(tmpConsIdDir, dirName),
partId);
+ File delta = partDeltaFile(cacheStorage(tmpConsIdDir, dirName),
partId);
partDeltaWriters.put(pair, deltaWriterFactory.apply(store, delta,
encGrpId));
@@ -623,7 +623,7 @@ class SnapshotFutureTask extends
AbstractCreateSnapshotFutureTask implements Che
if (sent || fromTemp)
return;
- File cacheWorkDir = cacheWorkDir(tmpSnpWorkDir, cacheDirName);
+ File cacheWorkDir = cacheStorage(tmpSnpWorkDir, cacheDirName);
if (!U.mkdirs(cacheWorkDir))
throw new IOException("Unable to create temp directory to
copy original configuration file: " + cacheWorkDir);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
index 7674610ea11..2401defe2ad 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
@@ -761,7 +761,7 @@ public class SnapshotRestoreProcess {
}
Map<String, StoredCacheData> cfgsByName = new HashMap<>();
- FilePageStoreManager pageStore =
(FilePageStoreManager)cctx.pageStore();
+ NodeFileTree ft = ctx.pdsFolderResolver().fileTree();
GridLocalConfigManager locCfgMgr = cctx.cache().configManager();
// Collect the cache configurations and prepare a temporary directory
for copying files.
@@ -774,7 +774,7 @@ public class SnapshotRestoreProcess {
if (!F.isEmpty(req.groups()) &&
!req.groups().contains(grpName))
continue;
- File cacheDir =
pageStore.cacheWorkDir(snpCacheDir.getName().startsWith(CACHE_GRP_DIR_PREFIX),
grpName);
+ File cacheDir =
ft.cacheStorage(snpCacheDir.getName().startsWith(CACHE_GRP_DIR_PREFIX),
grpName);
if (cacheDir.exists()) {
if (!cacheDir.isDirectory()) {
@@ -844,12 +844,14 @@ public class SnapshotRestoreProcess {
Map<Integer, StoredCacheData> globalCfgs = new HashMap<>();
+ NodeFileTree ft = ctx.pdsFolderResolver().fileTree();
+
for (Map.Entry<UUID, SnapshotRestoreOperationResponse> e :
res.entrySet()) {
if (e.getValue().ccfgs != null) {
for (StoredCacheData cacheData : e.getValue().ccfgs) {
globalCfgs.put(CU.cacheId(cacheData.config().getName()),
cacheData);
-
opCtx0.dirs.add(((FilePageStoreManager)ctx.cache().context().pageStore()).cacheWorkDir(cacheData.config()));
+ opCtx0.dirs.add(ft.cacheStorage(cacheData.config()));
}
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerFileTransmissionSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerFileTransmissionSelfTest.java
index 8b84c90cc7f..79d6dc63ccd 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerFileTransmissionSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerFileTransmissionSelfTest.java
@@ -53,11 +53,9 @@ import org.apache.ignite.internal.GridTopic;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.NodeStoppingException;
-import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
import
org.apache.ignite.internal.processors.cache.persistence.file.FileIODecorator;
import
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
import org.apache.ignite.internal.processors.cache.persistence.wal.crc.FastCrc;
import org.apache.ignite.internal.util.typedef.T2;
@@ -208,7 +206,7 @@ public class GridIoManagerFileTransmissionSelfTest extends
GridCommonAbstractTes
}
});
- File cacheDirIg0 = cacheWorkDir(snd, DEFAULT_CACHE_NAME);
+ File cacheDirIg0 =
snd.context().pdsFolderResolver().fileTree().cacheStorage(snd.cachex(DEFAULT_CACHE_NAME).configuration());
File[] cacheParts = cacheDirIg0.listFiles(fileBinFilter);
@@ -928,22 +926,6 @@ public class GridIoManagerFileTransmissionSelfTest extends
GridCommonAbstractTes
}
}
- /**
- * @param ignite An ignite instance.
- * @param cacheName Cache name.
- * @return The cache working directory.
- */
- private File cacheWorkDir(IgniteEx ignite, String cacheName) {
- // Resolve cache directory.
- IgniteInternalCache<?, ?> cache = ignite.cachex(cacheName);
-
- FilePageStoreManager pageStoreMgr =
(FilePageStoreManager)cache.context()
- .shared()
- .pageStore();
-
- return pageStoreMgr.cacheWorkDir(cache.configuration());
- }
-
/**
* @param name The file name to create.
* @param size The file size.
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheConfigurationFileConsistencyCheckTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheConfigurationFileConsistencyCheckTest.java
index 2b6bf346a0e..230f8bf7a78 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheConfigurationFileConsistencyCheckTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheConfigurationFileConsistencyCheckTest.java
@@ -35,10 +35,9 @@ import
org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
-import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.GridLocalConfigManager;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.testframework.GridTestUtils;
@@ -144,11 +143,9 @@ public class
IgnitePdsCacheConfigurationFileConsistencyCheckTest extends GridCom
for (int i = 0; i < NODES; i++) {
IgniteEx ig = grid(i);
- GridCacheSharedContext sharedCtx = ig.context().cache().context();
+ NodeFileTree ft = ig.context().pdsFolderResolver().fileTree();
- FilePageStoreManager pageStore =
(FilePageStoreManager)sharedCtx.pageStore();
-
- File[] tmpFile = pageStore.cacheWorkDir(true,
ODD_GROUP_NAME).listFiles(new FilenameFilter() {
+ File[] tmpFile =
ft.cacheStorage(desc.cacheConfiguration()).listFiles(new FilenameFilter() {
@Override public boolean accept(File dir, String name) {
return name.endsWith(CACHE_DATA_TMP_FILENAME);
}
@@ -214,15 +211,13 @@ public class
IgnitePdsCacheConfigurationFileConsistencyCheckTest extends GridCom
for (int i = 0; i < NODES; i++) {
IgniteEx ig = grid(i);
- GridCacheSharedContext sharedCtx = ig.context().cache().context();
-
- FilePageStoreManager pageStore =
(FilePageStoreManager)sharedCtx.pageStore();
+ NodeFileTree ft = ig.context().pdsFolderResolver().fileTree();
StoredCacheData data =
cacheDescr.toStoredData(ig.context().cache().splitter());
data.config().setGroupName(ODD_GROUP_NAME);
- File tmp = new File(pageStore.cacheWorkDir(true, ODD_GROUP_NAME),
data.config().getName() + CACHE_DATA_TMP_FILENAME);
+ File tmp = new File(ft.cacheStorage(data.config()),
data.config().getName() + CACHE_DATA_TMP_FILENAME);
try (OutputStream stream = new BufferedOutputStream(new
FileOutputStream(tmp))) {
marshaller.marshal(data, stream);
@@ -240,15 +235,13 @@ public class
IgnitePdsCacheConfigurationFileConsistencyCheckTest extends GridCom
for (int i = 0; i < NODES; i++) {
IgniteEx ig = grid(i);
- GridCacheSharedContext sharedCtx = ig.context().cache().context();
-
- FilePageStoreManager pageStore =
(FilePageStoreManager)sharedCtx.pageStore();
+ NodeFileTree ft = ig.context().pdsFolderResolver().fileTree();
StoredCacheData data =
cacheDescr.toStoredData(ig.context().cache().splitter());
data.config().setGroupName(ODD_GROUP_NAME);
- File cfg = new File(pageStore.cacheWorkDir(true, ODD_GROUP_NAME),
data.config().getName() + CACHE_DATA_FILENAME);
+ File cfg = new File(ft.cacheStorage(data.config()),
data.config().getName() + CACHE_DATA_FILENAME);
try (DataOutputStream os = new DataOutputStream(new
FileOutputStream(cfg))) {
os.writeLong(-1L);
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
index db5ca30441f..f95681d9ef1 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
@@ -42,6 +42,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.DataRegionMetrics
import
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore;
import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.CU;
@@ -399,13 +400,15 @@ public class IgnitePdsDataRegionMetricsTest extends
GridCommonAbstractTest {
/** */
private void checkMetricsConsistency(final IgniteEx node, String
cacheName) throws Exception {
FilePageStoreManager pageStoreMgr =
(FilePageStoreManager)node.context().cache().context().pageStore();
+ NodeFileTree ft = node.context().pdsFolderResolver().fileTree();
assert pageStoreMgr != null : "Persistence is not enabled";
boolean metaStore = METASTORAGE_CACHE_NAME.equals(cacheName);
- File cacheWorkDir = metaStore ? new
File(node.context().pdsFolderResolver().fileTree().nodeStorage(),
METASTORAGE_DIR_NAME) :
- pageStoreMgr.cacheWorkDir(node.cachex(cacheName).configuration());
+ File cacheWorkDir = metaStore
+ ? new File(ft.nodeStorage(), METASTORAGE_DIR_NAME)
+ : ft.cacheStorage(node.cachex(cacheName).configuration());
long totalPersistenceSize = 0;
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
index 11334ebc45a..f7a9e5f5a07 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
@@ -77,7 +77,6 @@ import
org.apache.ignite.internal.pagemem.wal.record.WALRecord;
import org.apache.ignite.internal.processors.cache.CacheGroupContext;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.filename.SharedFileTree;
import
org.apache.ignite.internal.processors.cache.persistence.partstate.GroupPartitionId;
import org.apache.ignite.internal.processors.cache.persistence.wal.WALPointer;
@@ -316,7 +315,7 @@ public abstract class AbstractSnapshotSelfTest extends
GridCommonAbstractTest {
assertTrue("The process has not finished on the node " +
kctx.localNodeId(), success);
- File dir =
((FilePageStoreManager)kctx.cache().context().pageStore()).cacheWorkDir(ccfg);
+ File dir = kctx.pdsFolderResolver().fileTree().cacheStorage(ccfg);
String errMsg = String.format("%s, dir=%s, exists=%b, files=%s",
ignite.name(), dir, dir.exists(), Arrays.toString(dir.list()));
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotCheckTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotCheckTest.java
index e4b8e7bcddc..09f20378f51 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotCheckTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotCheckTest.java
@@ -68,6 +68,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabase
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointListener;
import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore;
import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
import
org.apache.ignite.internal.processors.cache.persistence.tree.io.PagePartitionMetaIO;
import
org.apache.ignite.internal.processors.cache.persistence.wal.crc.IgniteDataIntegrityViolationException;
@@ -88,7 +89,6 @@ import org.junit.Test;
import static org.apache.ignite.cluster.ClusterState.ACTIVE;
import static
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion.NONE;
import static
org.apache.ignite.internal.processors.cache.GridCacheUtils.TTL_ETERNAL;
-import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.cacheDirName;
import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.getPartitionFileName;
import static
org.apache.ignite.internal.processors.cache.persistence.partstate.GroupPartitionId.getTypeByPartId;
import static
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.SNAPSHOT_METAFILE_EXT;
@@ -164,11 +164,12 @@ public class IgniteClusterSnapshotCheckTest extends
AbstractSnapshotSelfTest {
@Test
public void testClusterSnapshotCheckMissedGroup() throws Exception {
IgniteEx ignite = startGridsWithCache(3, dfltCacheCfg,
CACHE_KEYS_RANGE);
+ NodeFileTree ft = ignite.context().pdsFolderResolver().fileTree();
createAndCheckSnapshot(ignite, SNAPSHOT_NAME);
Path dir =
Files.walk(snp(ignite).snapshotLocalDir(SNAPSHOT_NAME).toPath())
- .filter(d ->
d.toFile().getName().equals(cacheDirName(dfltCacheCfg)))
+ .filter(d ->
d.toFile().getName().equals(ft.cacheDirName(dfltCacheCfg)))
.findFirst()
.orElseThrow(() -> new RuntimeException("Cache directory not
found"));
@@ -682,7 +683,7 @@ public class IgniteClusterSnapshotCheckTest extends
AbstractSnapshotSelfTest {
) throws IgniteCheckedException, IOException {
Path cachePath =
Paths.get(snp(ignite).snapshotLocalDir(snpName).getAbsolutePath(),
databaseRelativePath(ignite.context().pdsFolderResolver().resolveFolders().folderName()),
- cacheDirName(ccfg));
+
ignite.context().pdsFolderResolver().fileTree().cacheDirName(ccfg));
Path part0 = U.searchFileRecursively(cachePath,
getPartitionFileName(partId));
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotRestoreSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotRestoreSelfTest.java
index 2f3209ec983..6b27adde607 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotRestoreSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotRestoreSelfTest.java
@@ -56,7 +56,6 @@ import
org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsSingleMessage;
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
import
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
import
org.apache.ignite.internal.util.distributed.DistributedProcess.DistributedProcessType;
import org.apache.ignite.internal.util.distributed.SingleNodeMessage;
@@ -684,8 +683,7 @@ public class IgniteClusterSnapshotRestoreSelfTest extends
IgniteClusterSnapshotR
}
}));
- File node2dbDir =
((FilePageStoreManager)grid(2).context().cache().context().pageStore()).
- cacheWorkDir(dfltCacheCfg).getParentFile();
+ File node2dbDir =
grid(2).context().pdsFolderResolver().fileTree().cacheStorage(dfltCacheCfg).getParentFile();
IgniteInternalFuture<Object> stopFut = runAsync(() -> {
U.await(stopLatch, TIMEOUT, TimeUnit.MILLISECONDS);
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/PlainSnapshotTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/PlainSnapshotTest.java
index 348637139a7..90d77ebfe6b 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/PlainSnapshotTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/PlainSnapshotTest.java
@@ -26,19 +26,14 @@ import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
-import
org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderSettings;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.CU;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteFuture;
import org.junit.Test;
import org.junit.runners.Parameterized;
import static org.apache.ignite.cluster.ClusterState.ACTIVE;
-import static
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.cacheDirName;
-import static
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.databaseRelativePath;
import static
org.apache.ignite.testframework.GridTestUtils.assertThrowsAnyCause;
/**
@@ -102,30 +97,17 @@ public class PlainSnapshotTest extends
AbstractSnapshotSelfTest {
snpFut.get();
- File cacheWorkDir = ((FilePageStoreManager)ig.context()
- .cache()
- .context()
- .pageStore())
- .cacheWorkDir(dfltCacheCfg);
-
// Checkpoint forces on cluster deactivation (currently only single
node in cluster),
// so we must have the same data in snapshot partitions and those
which left
// after node stop.
stopGrid(ig.name());
// Calculate CRCs.
- PdsFolderSettings<?> settings =
ig.context().pdsFolderResolver().resolveFolders();
- String nodePath = databaseRelativePath(settings.folderName());
NodeFileTree ft = ig.context().pdsFolderResolver().fileTree();
- NodeFileTree snpFt = new
NodeFileTree(mgr.snapshotLocalDir(SNAPSHOT_NAME).getAbsolutePath(),
settings.folderName());
-
- final Map<String, Integer> origPartCRCs =
calculateCRC32Partitions(cacheWorkDir);
- final Map<String, Integer> snpPartCRCs = calculateCRC32Partitions(
-
FilePageStoreManager.cacheWorkDir(U.resolveWorkDirectory(mgr.snapshotLocalDir(SNAPSHOT_NAME)
- .getAbsolutePath(),
- nodePath,
- false),
- cacheDirName(dfltCacheCfg)));
+ NodeFileTree snpFt = new
NodeFileTree(mgr.snapshotLocalDir(SNAPSHOT_NAME).getAbsolutePath(),
ft.folderName());
+
+ final Map<String, Integer> origPartCRCs =
calculateCRC32Partitions(ft.cacheStorage(dfltCacheCfg));
+ final Map<String, Integer> snpPartCRCs =
calculateCRC32Partitions(snpFt.cacheStorage(dfltCacheCfg));
assertEquals("Partitions must have the same CRC after file copying and
merging partition delta files",
origPartCRCs, snpPartCRCs);
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/AbstractIndexingCommonTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/AbstractIndexingCommonTest.java
index be12cac67b2..c3bcc10bec0 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/AbstractIndexingCommonTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/AbstractIndexingCommonTest.java
@@ -30,7 +30,6 @@ import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.managers.indexing.IndexesRebuildTask;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import org.apache.ignite.internal.processors.query.h2.ConnectionManager;
import org.apache.ignite.internal.processors.query.h2.H2PooledConnection;
import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
@@ -95,11 +94,7 @@ public class AbstractIndexingCommonTest extends
GridCommonAbstractTest {
assertNotNull(cachex);
- FilePageStoreManager pageStoreMgr =
(FilePageStoreManager)cachex.context().shared().pageStore();
-
- assertNotNull(pageStoreMgr);
-
- File cacheWorkDir =
pageStoreMgr.cacheWorkDir(cachex.configuration());
+ File cacheWorkDir =
grid.context().pdsFolderResolver().fileTree().cacheStorage(cachex.configuration());
return cacheWorkDir.toPath().resolve("index.bin");
})
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/RebuildIndexLogMessageTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/RebuildIndexLogMessageTest.java
index 6b5d8d7d6d3..191cfb50474 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/RebuildIndexLogMessageTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/RebuildIndexLogMessageTest.java
@@ -31,7 +31,7 @@ import
org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
+import
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.testframework.CallbackExecutorLogListener;
import org.apache.ignite.testframework.ListeningTestLogger;
@@ -152,10 +152,10 @@ public class RebuildIndexLogMessageTest extends
GridCommonAbstractTest implement
forceCheckpoint();
- File cacheAWorkDir =
((FilePageStoreManager)cacheAEx.context().shared().pageStore())
- .cacheWorkDir(cacheAEx.configuration());
- File cacheBWorkDir =
((FilePageStoreManager)cacheBEx.context().shared().pageStore())
- .cacheWorkDir(cacheBEx.configuration());
+ NodeFileTree ft = ignite.context().pdsFolderResolver().fileTree();
+
+ File cacheAWorkDir = ft.cacheStorage(cacheAEx.configuration());
+ File cacheBWorkDir = ft.cacheStorage(cacheBEx.configuration());
File idxPathA = cacheAWorkDir.toPath().resolve("index.bin").toFile();
File idxPathB = cacheBWorkDir.toPath().resolve("index.bin").toFile();
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRecoveryTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRecoveryTest.java
index 907ea597678..29f52038440 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRecoveryTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRecoveryTest.java
@@ -91,7 +91,6 @@ import
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabase
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointEntry;
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointEntryType;
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointMarkersStorage;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage;
import
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryEx;
import
org.apache.ignite.internal.processors.cache.persistence.tree.io.CompactablePageIO;
@@ -581,9 +580,7 @@ public class IgniteWalRecoveryTest extends
GridCommonAbstractTest {
// Resolve cache directory. Emulating cache destroy in the middle of
checkpoint.
IgniteInternalCache<Object, Object> destoryCache =
ig2.cachex(CACHE_TO_DESTROY_NAME);
- FilePageStoreManager pageStoreMgr =
(FilePageStoreManager)destoryCache.context().shared().pageStore();
-
- File destroyCacheWorkDir =
pageStoreMgr.cacheWorkDir(destoryCache.configuration());
+ File destroyCacheWorkDir =
ig2.context().pdsFolderResolver().fileTree().cacheStorage(destoryCache.configuration());
// Stop the whole cluster
stopAllGrids();
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
index ffb9bc69af3..41d45e07a8e 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
@@ -45,7 +45,6 @@ import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
import
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
import
org.apache.ignite.internal.processors.configuration.distributed.DistributedChangeableProperty;
import org.apache.ignite.internal.util.typedef.F;
@@ -185,7 +184,7 @@ public class IgniteClusterSnapshotMetricsTest extends
IgniteClusterSnapshotResto
IgniteEx ignite = startGridsWithSnapshot(2, CACHE_KEYS_RANGE);
- String failingFilePath =
Paths.get(FilePageStoreManager.cacheDirName(dfltCacheCfg),
+ String failingFilePath =
Paths.get(ignite.context().pdsFolderResolver().fileTree().cacheDirName(dfltCacheCfg),
PART_FILE_PREFIX + primaries[0] + FILE_SUFFIX).toString();
FileIOFactory ioFactory = new RandomAccessFileIOFactory();
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java
index 6f661046835..342e6f99d07 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java
@@ -37,7 +37,6 @@ import
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManager;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import
org.apache.ignite.internal.processors.cache.index.DynamicIndexAbstractSelfTest;
import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
-import
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import
org.apache.ignite.internal.processors.query.schema.IndexRebuildCancelToken;
import
org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure;
@@ -299,8 +298,8 @@ public class GridIndexRebuildSelfTest extends
DynamicIndexAbstractSelfTest {
protected File indexFile(IgniteInternalCache internalCache) {
requireNonNull(internalCache);
- File cacheWorkDir =
((FilePageStoreManager)internalCache.context().shared().pageStore())
- .cacheWorkDir(internalCache.configuration());
+ File cacheWorkDir =
internalCache.context().kernalContext().pdsFolderResolver().fileTree()
+ .cacheStorage(internalCache.configuration());
return cacheWorkDir.toPath().resolve(INDEX_FILE_NAME).toFile();
}