Skip to content

Commit 2166e3a

Browse files
authored
IGNITE-24421 Move checkpoint dir to NodeFileTree (#11854)
1 parent 2332899 commit 2166e3a

File tree

40 files changed

+233
-356
lines changed

40 files changed

+233
-356
lines changed

modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jol/FileStoreHeapUtilizationJolBenchmark.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.apache.ignite.internal.benchmarks.jol;
1818

19+
import java.io.File;
1920
import java.util.Collections;
2021
import java.util.HashMap;
2122
import java.util.Map;
@@ -35,6 +36,7 @@
3536
import org.apache.ignite.internal.util.typedef.F;
3637
import org.apache.ignite.internal.util.typedef.G;
3738
import org.apache.ignite.internal.util.typedef.internal.U;
39+
import org.apache.ignite.spi.checkpoint.sharedfs.SharedFsCheckpointSpi;
3840
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
3941
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
4042
import org.openjdk.jol.info.GraphLayout;
@@ -69,7 +71,7 @@ private void cleanPersistenceDir() throws Exception {
6971

7072
SharedFileTree sft = new SharedFileTree(U.defaultWorkDirectory());
7173

72-
U.delete(U.resolveWorkDirectory(U.defaultWorkDirectory(), "cp", false));
74+
U.delete(new File(sft.root(), SharedFsCheckpointSpi.DFLT_ROOT));
7375
U.delete(sft.marshaller().getParentFile());
7476
}
7577

modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IgnitePersistenceCompatibilityAbstractTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.ignite.compatibility.testframework.junits.IgniteCompatibilityAbstractTest;
2424
import org.apache.ignite.compatibility.testframework.util.CompatibilityTestsUtils;
2525
import org.apache.ignite.internal.util.typedef.internal.U;
26+
import org.apache.ignite.spi.checkpoint.sharedfs.SharedFsCheckpointSpi;
2627

2728
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.DFLT_STORE_DIR;
2829
import static org.apache.ignite.internal.processors.cache.persistence.filename.SharedFileTree.BINARY_METADATA_DIR;
@@ -34,7 +35,7 @@
3435
public abstract class IgnitePersistenceCompatibilityAbstractTest extends IgniteCompatibilityAbstractTest {
3536
/** Persistence directories. */
3637
private static final List<String> PERSISTENCE_DIRS
37-
= Arrays.asList(DFLT_STORE_DIR, BINARY_METADATA_DIR, "cp", MARSHALLER_DIR);
38+
= Arrays.asList(DFLT_STORE_DIR, BINARY_METADATA_DIR, SharedFsCheckpointSpi.DFLT_ROOT, MARSHALLER_DIR);
3839

3940
/** {@inheritDoc} */
4041
@Override protected void beforeTest() throws Exception {

modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MigratingToWalV2SerializerWithCompactionTest.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import org.apache.ignite.configuration.WALMode;
3333
import org.apache.ignite.internal.IgniteEx;
3434
import org.apache.ignite.internal.processors.cache.GridCacheAbstractFullApiSelfTest;
35-
import org.apache.ignite.internal.util.typedef.internal.U;
35+
import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
3636
import org.apache.ignite.lang.IgniteInClosure;
3737
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
3838
import org.junit.Test;
@@ -122,14 +122,9 @@ private void doTestStartupWithOldVersion(String ver) throws Exception {
122122

123123
int expCompressedWalSegments = PAYLOAD_SIZE * ENTRIES * 4 / WAL_SEGMENT_SIZE - 1;
124124

125-
String nodeFolderName = ignite.context().pdsFolderResolver().resolveFolders().folderName();
125+
NodeFileTree ft = ignite.context().pdsFolderResolver().fileTree();
126126

127-
File dbDir = U.resolveWorkDirectory(U.defaultWorkDirectory(), "db", false);
128-
File walDir = new File(dbDir, "wal");
129-
File archiveDir = new File(walDir, "archive");
130-
File nodeArchiveDir = new File(archiveDir, nodeFolderName);
131-
132-
File[] compressedSegments = nodeArchiveDir.listFiles(new FilenameFilter() {
127+
File[] compressedSegments = ft.walArchive().listFiles(new FilenameFilter() {
133128
@Override public boolean accept(File dir, String name) {
134129
return name.endsWith(".wal.zip");
135130
}
@@ -142,15 +137,12 @@ private void doTestStartupWithOldVersion(String ver) throws Exception {
142137

143138
stopAllGrids();
144139

145-
File nodeLfsDir = new File(dbDir, nodeFolderName);
146-
File cpMarkersDir = new File(nodeLfsDir, "cp");
147-
148-
File[] cpMarkers = cpMarkersDir.listFiles();
140+
File[] cpMarkers = ft.checkpoint().listFiles();
149141

150142
assertNotNull(cpMarkers);
151143
assertTrue(cpMarkers.length > 0);
152144

153-
File cacheDir = new File(nodeLfsDir, "cache-" + TEST_CACHE_NAME);
145+
File cacheDir = new File(ft.nodeStorage(), "cache-" + TEST_CACHE_NAME);
154146
File[] partFiles = cacheDir.listFiles(new FilenameFilter() {
155147
@Override public boolean accept(File dir, String name) {
156148
return name.startsWith("part");

modules/compress/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotCompressionBasicTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.apache.ignite.internal.management.cache.IdleVerifyResult;
5252
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
5353
import org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIO;
54+
import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
5455
import org.apache.ignite.internal.processors.compress.CompressionProcessor;
5556
import org.apache.ignite.internal.util.typedef.F;
5657
import org.apache.ignite.internal.util.typedef.G;
@@ -288,10 +289,12 @@ public void testRestoreNotCompressed_OnGridWithoutCompression() throws Exception
288289
continue;
289290
}
290291

291-
U.delete(U.resolveWorkDirectory(dir.toString(), "cp", false));
292-
U.delete(U.resolveWorkDirectory(dir.toString(), DFLT_STORE_DIR, false));
293-
U.delete(nodeFileTree(dir.toString()).marshaller());
294-
U.delete(nodeFileTree(dir.toString()).binaryMetaRoot());
292+
NodeFileTree ft = nodeFileTree(dir.toString());
293+
294+
U.delete(ft.checkpoint());
295+
U.delete(ft.nodeStorage().getParentFile());
296+
U.delete(ft.marshaller());
297+
U.delete(ft.binaryMetaRoot());
295298
}
296299
}
297300
catch (IOException e) {

modules/compress/src/test/java/org/apache/ignite/internal/processors/cache/transform/CacheObjectCompressionConsumptionTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.apache.ignite.internal.processors.cache.transform;
1919

20+
import java.io.File;
2021
import java.util.ArrayList;
2122
import java.util.Collection;
2223
import java.util.HashMap;
@@ -40,7 +41,6 @@
4041
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
4142
import org.apache.ignite.internal.util.typedef.G;
4243
import org.apache.ignite.internal.util.typedef.T3;
43-
import org.apache.ignite.internal.util.typedef.internal.U;
4444
import org.apache.ignite.metric.MetricRegistry;
4545
import org.apache.ignite.spi.communication.CommunicationSpi;
4646
import org.apache.ignite.spi.metric.LongMetric;
@@ -49,7 +49,6 @@
4949
import org.junit.runner.RunWith;
5050
import org.junit.runners.Parameterized;
5151

52-
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.DFLT_STORE_DIR;
5352
import static org.apache.ignite.internal.processors.metric.GridMetricManager.CLIENT_CONNECTOR_METRICS;
5453
import static org.apache.ignite.internal.util.nio.GridNioServer.RECEIVED_BYTES_METRIC_NAME;
5554
import static org.apache.ignite.internal.util.nio.GridNioServer.SENT_BYTES_METRIC_NAME;
@@ -361,10 +360,10 @@ private Consumption doTest(int cnt, Function<Integer, Object> keyGen, Function<I
361360

362361
mem += metrics.getTotalAllocatedSize();
363362

364-
String nodeFolder = ((IgniteEx)node).context().pdsFolderResolver().resolveFolders().folderName();
363+
File nodeFolder = ((IgniteEx)node).context().pdsFolderResolver().fileTree().nodeStorage();
365364

366-
pers += FileUtils.sizeOfDirectory(
367-
U.resolveWorkDirectory(U.defaultWorkDirectory(), DFLT_STORE_DIR + "/" + nodeFolder, false));
365+
if (nodeFolder != null)
366+
pers += FileUtils.sizeOfDirectory(nodeFolder);
368367

369368
if (mode != ConsumptionTestMode.PERSISTENT)
370369
assertEquals(0, pers);

modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/indexreader/IgniteIndexReaderTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import org.apache.ignite.internal.pagemem.PageIdAllocator;
5555
import org.apache.ignite.internal.processors.cache.persistence.IndexStorageImpl;
5656
import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore;
57-
import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
5857
import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
5958
import org.apache.ignite.internal.processors.query.QueryUtils;
6059
import org.apache.ignite.internal.util.GridStringBuilder;
@@ -228,7 +227,7 @@ protected void prepareWorkDir() throws Exception {
228227
try (IgniteEx node = startGrid(0)) {
229228
populateData(node, null);
230229

231-
workDir = ((FilePageStoreManager)node.context().cache().context().pageStore()).workDir();
230+
workDir = node.context().pdsFolderResolver().fileTree().nodeStorage();
232231
}
233232
}
234233

modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
import org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.dumpprocessors.ToFileDumpProcessor;
104104
import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
105105
import org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
106+
import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
106107
import org.apache.ignite.internal.processors.cache.persistence.snapshot.DataStreamerUpdatesHandler;
107108
import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager;
108109
import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotPartitionsVerifyTaskResult;
@@ -328,10 +329,7 @@ private File startGridAndPutNodeToMaintenance(CacheConfiguration[] cachesToStart
328329
IgniteEx ig0 = startGrid(0);
329330
IgniteEx ig1 = startGrid(1);
330331

331-
String ig1Folder = ig1.context().pdsFolderResolver().resolveFolders().folderName();
332-
File dbDir = U.resolveWorkDirectory(ig1.configuration().getWorkDirectory(), "db", false);
333-
334-
File ig1LfsDir = new File(dbDir, ig1Folder);
332+
NodeFileTree ft1 = ig1.context().pdsFolderResolver().fileTree();
335333

336334
ig0.cluster().baselineAutoAdjustEnabled(false);
337335
ig0.cluster().state(ACTIVE);
@@ -362,7 +360,7 @@ private File startGridAndPutNodeToMaintenance(CacheConfiguration[] cachesToStart
362360

363361
stopGrid(1);
364362

365-
File[] cpMarkers = new File(ig1LfsDir, "cp").listFiles();
363+
File[] cpMarkers = ft1.checkpoint().listFiles();
366364

367365
for (File cpMark : cpMarkers) {
368366
if (cpMark.getName().contains("-END"))
@@ -371,7 +369,7 @@ private File startGridAndPutNodeToMaintenance(CacheConfiguration[] cachesToStart
371369

372370
assertThrows(log, () -> startGrid(1), Exception.class, null);
373371

374-
return ig1LfsDir;
372+
return ft1.nodeStorage();
375373
}
376374

377375
/**

modules/core/src/main/java/org/apache/ignite/internal/management/persistence/PersistenceTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ private PersistenceTaskResult backup(PersistenceTaskArg arg) {
110110
MaintenanceRegistry mntcReg = ignite.context().maintenanceRegistry();
111111
MaintenanceTask task = mntcReg.activeMaintenanceTask(CORRUPTED_DATA_FILES_MNTC_TASK_NAME);
112112

113-
File workDir = ((FilePageStoreManager)ignite.context().cache().context().pageStore()).workDir();
113+
File workDir = ignite.context().pdsFolderResolver().fileTree().nodeStorage();
114114

115115
if (arg instanceof PersistenceBackupAllTaskArg)
116116
return backupAll(workDir);

modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,8 @@ private DataRegionConfiguration createDefragmentationMappingRegionConfig(long re
566566
kernalCtx.cache(),
567567
() -> cpFreqDeviation.getOrDefault(DEFAULT_CHECKPOINT_DEVIATION),
568568
kernalCtx.pools().getSystemExecutorService(),
569-
kernalCtx.marshallerContext().jdkMarshaller()
569+
kernalCtx.marshallerContext().jdkMarshaller(),
570+
kernalCtx.pdsFolderResolver().fileTree()
570571
);
571572

572573
final NodeFileLockHolder preLocked = kernalCtx.pdsFolderResolver()
@@ -745,8 +746,9 @@ private void acquireFileLock(NodeFileLockHolder preLocked) throws IgniteCheckedE
745746
if (cctx.kernalContext().clientNode())
746747
return;
747748

748-
fileLockHolder = preLocked == null ?
749-
new NodeFileLockHolder(storeMgr.workDir().getPath(), cctx.kernalContext(), log) : preLocked;
749+
fileLockHolder = preLocked == null
750+
? new NodeFileLockHolder(cctx.kernalContext().pdsFolderResolver().fileTree().nodeStorage().getPath(), cctx.kernalContext(), log)
751+
: preLocked;
750752

751753
if (!fileLockHolder.isLocked()) {
752754
if (log.isDebugEnabled())
@@ -1314,7 +1316,9 @@ else if (regCfg.getPageEvictionMode() != DataPageEvictionMode.DISABLED) {
13141316
"Invalid page store manager was created: " + cctx.pageStore();
13151317

13161318
Path anyIdxPartFile = IgniteUtils.searchFileRecursively(
1317-
((FilePageStoreManager)cctx.pageStore()).workDir().toPath(), FilePageStoreManager.INDEX_FILE_NAME);
1319+
cctx.kernalContext().pdsFolderResolver().fileTree().nodeStorage().toPath(),
1320+
FilePageStoreManager.INDEX_FILE_NAME
1321+
);
13181322

13191323
if (anyIdxPartFile != null) {
13201324
memCfg.setPageSize(resolvePageSizeFromPartitionFile(anyIdxPartFile));
@@ -1839,13 +1843,6 @@ private Map<Integer, Set<Integer>> partitionsApplicableForWalRebalance() {
18391843
return lastCheckpointEntry == null ? null : lastCheckpointEntry.checkpointMark();
18401844
}
18411845

1842-
/**
1843-
* @return Checkpoint directory.
1844-
*/
1845-
public File checkpointDirectory() {
1846-
return checkpointManager.checkpointDirectory();
1847-
}
1848-
18491846
/**
18501847
* @param lsnr Listener.
18511848
* @param dataRegion Data region for which listener is corresponded to.
@@ -1889,10 +1886,8 @@ private CheckpointStatus readCheckpointStatus() throws IgniteCheckedException {
18891886
if (mntcTask != null) {
18901887
log.warning("Maintenance task found, stop restoring memory");
18911888

1892-
File workDir = ((FilePageStoreManager)cctx.pageStore()).workDir();
1893-
18941889
mntcRegistry.registerWorkflowCallback(CORRUPTED_DATA_FILES_MNTC_TASK_NAME,
1895-
new CorruptedPdsMaintenanceCallback(workDir,
1890+
new CorruptedPdsMaintenanceCallback(cctx.kernalContext().pdsFolderResolver().fileTree().nodeStorage(),
18961891
Arrays.asList(mntcTask.parameters().split(Pattern.quote(File.separator))))
18971892
);
18981893

modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointManager.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
package org.apache.ignite.internal.processors.cache.persistence.checkpoint;
1919

20-
import java.io.File;
2120
import java.nio.ByteBuffer;
2221
import java.nio.ByteOrder;
2322
import java.util.Collection;
@@ -38,6 +37,7 @@
3837
import org.apache.ignite.internal.processors.cache.persistence.DataStorageMetricsImpl;
3938
import org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
4039
import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager;
40+
import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
4141
import org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryEx;
4242
import org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl;
4343
import org.apache.ignite.internal.processors.cache.persistence.wal.WALPointer;
@@ -108,7 +108,7 @@ public class CheckpointManager {
108108
* @param cpFreqDeviation Distributed checkpoint frequency deviation.
109109
* @param checkpointMapSnapshotExecutor Checkpoint map snapshot executor.
110110
* @param marsh JDK marshaller.
111-
* @throws IgniteCheckedException if fail.
111+
* @param ft Node file tree.
112112
*/
113113
public CheckpointManager(
114114
Function<Class<?>, IgniteLogger> logger,
@@ -129,8 +129,9 @@ public CheckpointManager(
129129
GridCacheProcessor cacheProcessor,
130130
Supplier<Integer> cpFreqDeviation,
131131
Executor checkpointMapSnapshotExecutor,
132-
JdkMarshaller marsh
133-
) throws IgniteCheckedException {
132+
JdkMarshaller marsh,
133+
NodeFileTree ft
134+
) {
134135
CheckpointHistory cpHistory = new CheckpointHistory(
135136
persistenceCfg,
136137
logger,
@@ -147,7 +148,7 @@ public CheckpointManager(
147148
logger,
148149
cpHistory,
149150
ioFactory,
150-
pageStoreManager.workDir().getAbsolutePath(),
151+
ft,
151152
lock,
152153
checkpointMapSnapshotExecutor,
153154
marsh
@@ -259,13 +260,6 @@ public void memoryRecoveryRecordPtr(WALPointer memoryRecoveryRecordPtr) {
259260
checkpointWorkflow.memoryRecoveryRecordPtr(memoryRecoveryRecordPtr);
260261
}
261262

262-
/**
263-
* @return Checkpoint directory.
264-
*/
265-
public File checkpointDirectory() {
266-
return checkpointMarkersStorage.cpDir;
267-
}
268-
269263
/**
270264
* @return Checkpoint storage.
271265
*/

0 commit comments

Comments
 (0)