Skip to content

Commit

Permalink
IGNITE-24454 Cache partition files calculation in NodeFileTree (#11867)
Browse files Browse the repository at this point in the history
  • Loading branch information
nizhikov authored Feb 12, 2025
1 parent 29f24fc commit c2c733b
Show file tree
Hide file tree
Showing 53 changed files with 308 additions and 300 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
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.file.FileVersionCheckingFactory;
import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.internal.processors.cache.persistence.freelist.io.PagesListMetaIO;
import org.apache.ignite.internal.processors.cache.persistence.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.processors.cache.persistence.tree.io.AbstractDataPageIO;
Expand Down Expand Up @@ -115,9 +116,9 @@
import static org.apache.ignite.internal.pagemem.PageIdUtils.pageId;
import static org.apache.ignite.internal.pagemem.PageIdUtils.pageIndex;
import static org.apache.ignite.internal.pagemem.PageIdUtils.partId;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.PART_FILE_TEMPLATE;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreV2.VERSION;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.PART_FILE_TEMPLATE;
import static org.apache.ignite.internal.util.GridUnsafe.allocateBuffer;
import static org.apache.ignite.internal.util.GridUnsafe.bufferAddress;
import static org.apache.ignite.internal.util.GridUnsafe.freeBuffer;
Expand Down Expand Up @@ -199,7 +200,7 @@ public class IgniteIndexReader implements AutoCloseable {
/** Logger. */
private final IgniteLogger log;

/** Page store of {@link FilePageStoreManager#INDEX_FILE_NAME}. */
/** Page store of {@link NodeFileTree#INDEX_FILE_NAME}. */
private final FilePageStore idxStore;

/** Partitions page stores, may contains {@code null}. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@
import static org.apache.ignite.internal.pagemem.PageIdAllocator.INDEX_PARTITION;
import static org.apache.ignite.internal.pagemem.PageIdUtils.pageIndex;
import static org.apache.ignite.internal.pagemem.PageIdUtils.partId;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.PART_FILE_TEMPLATE;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.PART_FILE_TEMPLATE;
import static org.apache.ignite.testframework.GridTestUtils.assertContains;
import static org.apache.ignite.testframework.GridTestUtils.assertNotContains;
import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_IGNITE_INSTANCE_NAME;
import static org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_OK;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.verify.IdleVerifyUtility.GRID_NOT_IDLE_MSG;
import static org.apache.ignite.testframework.GridTestUtils.assertContains;
import static org.apache.ignite.testframework.GridTestUtils.assertNotContains;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static org.apache.ignite.internal.MarshallerPlatformIds.otherPlatforms;
import static org.apache.ignite.internal.binary.BinaryUtils.MAPPING_FILE_EXTENSION;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;

/**
* File-based persistence provider for {@link MarshallerContextImpl}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@

import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;

/**
* Binary utils.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@

import static java.nio.file.StandardCopyOption.ATOMIC_MOVE;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.FILE_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.FILE_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.wal.WALPointer.POINTER_SIZE;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@

import static java.nio.file.Files.newDirectoryStream;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.UTILITY_CACHE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CACHE_DATA_FILENAME;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.CACHE_DATA_FILENAME;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.query.QueryUtils.normalizeObjectName;
import static org.apache.ignite.internal.processors.query.QueryUtils.normalizeSchemaName;

Expand Down Expand Up @@ -145,7 +145,7 @@ public void readConfigurationFiles(
if (!cacheDir.exists())
continue;

File[] ccfgFiles = cacheDir.listFiles((dir, name) -> name.endsWith(CACHE_DATA_FILENAME));
File[] ccfgFiles = cacheDir.listFiles(NodeFileTree::cacheOrCacheGroupConfigFile);

if (ccfgFiles == null)
continue;
Expand All @@ -167,18 +167,17 @@ public Map<String, StoredCacheData> readCacheConfigurations() throws IgniteCheck
if (ctx.clientNode())
return Collections.emptyMap();

File[] files = ft.nodeStorage().listFiles();
File[] dirs = ft.nodeStorage().listFiles(File::isDirectory);

if (files == null)
if (dirs == null)
return Collections.emptyMap();

Map<String, StoredCacheData> ccfgs = new HashMap<>();

Arrays.sort(files);
Arrays.sort(dirs);

for (File file : files) {
if (file.isDirectory())
readCacheConfigurations(file, ccfgs);
for (File file : dirs) {
readCacheConfigurations(file, ccfgs);
}

return ccfgs;
Expand Down Expand Up @@ -293,7 +292,7 @@ public void saveCacheConfiguration(

assert cacheWorkDir.exists() : "Work directory does not exist: " + cacheWorkDir;

File file = cacheConfigurationFile(ccfg);
File file = ft.cacheConfigurationFile(ccfg);
Path filePath = file.toPath();

chgLock.readLock().lock();
Expand Down Expand Up @@ -337,7 +336,7 @@ public void removeCacheData(StoredCacheData cacheData) throws IgniteCheckedExcep

try {
CacheConfiguration<?, ?> ccfg = cacheData.config();
File file = cacheConfigurationFile(ccfg);
File file = ft.cacheConfigurationFile(ccfg);

if (file.exists()) {
for (BiConsumer<String, File> lsnr : lsnrs)
Expand Down Expand Up @@ -425,7 +424,7 @@ public void removeCacheGroupConfigurationData(CacheGroupContext ctx) throws Igni
if (cacheGrpDir != null && cacheGrpDir.exists()) {
DirectoryStream.Filter<Path> cacheCfgFileFilter = new DirectoryStream.Filter<Path>() {
@Override public boolean accept(Path path) {
return Files.isRegularFile(path) && path.getFileName().toString().endsWith(CACHE_DATA_FILENAME);
return Files.isRegularFile(path) && NodeFileTree.cacheOrCacheGroupConfigFile(path.toFile());
}
};

Expand All @@ -451,7 +450,7 @@ private void readCacheGroupCaches(File grpDir, Map<String, StoredCacheData> ccfg
return;

for (File file : files) {
if (!file.isDirectory() && file.getName().endsWith(CACHE_DATA_FILENAME) && file.length() > 0)
if (!file.isDirectory() && NodeFileTree.cacheOrCacheGroupConfigFile(file) && file.length() > 0)
readAndAdd(
ccfgs,
file,
Expand Down Expand Up @@ -526,19 +525,6 @@ private boolean inMemoryCdcCache(CacheConfiguration<?, ?> cfg) {
return drCfg != null && !drCfg.isPersistenceEnabled() && drCfg.isCdcEnabled();
}

/**
* @param ccfg Cache configuration.
* @return Cache configuration file with respect to {@link CacheConfiguration#getGroupName} value.
*/
public File cacheConfigurationFile(CacheConfiguration<?, ?> ccfg) {
return new File(ft.cacheStorage(ccfg), cacheDataFilename(ccfg));
}

/** @return Name of cache data filename. */
public static String cacheDataFilename(CacheConfiguration<?, ?> ccfg) {
return ccfg.getGroupName() == null ? CACHE_DATA_FILENAME : (ccfg.getName() + CACHE_DATA_FILENAME);
}

/**
* @return {@code True} if need locally start all existing caches on client node start.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@

import static java.nio.file.StandardCopyOption.ATOMIC_MOVE;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;

/**
* Class handles saving/restoring binary metadata to/from disk.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,11 @@
package org.apache.ignite.internal.processors.cache.persistence;

import java.io.File;

import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.maintenance.MaintenanceAction;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CACHE_DATA_FILENAME;

/** */
public class CheckCorruptedCacheStoresCleanAction implements MaintenanceAction<Boolean> {
/** */
Expand All @@ -49,7 +47,7 @@ public CheckCorruptedCacheStoresCleanAction(File rootStoreDir, String[] cacheSto

if (cacheStoreDir.exists() && cacheStoreDir.isDirectory()) {
for (File f : cacheStoreDir.listFiles()) {
if (!f.getName().equals(CACHE_DATA_FILENAME))
if (!NodeFileTree.cacheConfigFile(f))
return Boolean.FALSE;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,11 @@
package org.apache.ignite.internal.processors.cache.persistence;

import java.io.File;

import org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
import org.apache.ignite.maintenance.MaintenanceAction;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CACHE_DATA_FILENAME;

/**
*
*/
Expand Down Expand Up @@ -54,7 +52,7 @@ public CleanCacheStoresMaintenanceAction(File rootStoreDir, String[] cacheStoreD

if (cacheStoreDir.exists() && cacheStoreDir.isDirectory()) {
for (File file : cacheStoreDir.listFiles()) {
if (!file.getName().equals(CACHE_DATA_FILENAME))
if (!NodeFileTree.cacheConfigFile(file))
file.delete();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.apache.ignite.maintenance.MaintenanceWorkflowCallback;
import org.jetbrains.annotations.NotNull;

import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.CACHE_DATA_FILENAME;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.CACHE_DATA_FILENAME;

/**
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@
import org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
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.metastorage.MetaStorage;
import org.apache.ignite.internal.processors.cache.persistence.metastorage.MetastorageLifecycleListener;
import org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryEx;
Expand Down Expand Up @@ -1320,7 +1321,7 @@ else if (regCfg.getPageEvictionMode() != DataPageEvictionMode.DISABLED) {

Path anyIdxPartFile = IgniteUtils.searchFileRecursively(
cctx.kernalContext().pdsFolderResolver().fileTree().nodeStorage().toPath(),
FilePageStoreManager.INDEX_FILE_NAME
NodeFileTree.INDEX_FILE_NAME
);

if (anyIdxPartFile != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
import org.apache.ignite.internal.processors.cache.persistence.StorageException;
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.filename.NodeFileTree;
import org.apache.ignite.internal.processors.cache.persistence.wal.WALPointer;
import org.apache.ignite.internal.util.IgniteUtils;
Expand All @@ -57,6 +56,7 @@
import static java.nio.file.StandardOpenOption.READ;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_CHECKPOINT_MAP_SNAPSHOT_THRESHOLD;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_FILE_MATCHER;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;

/**
* Abstraction responsible for managing checkpoint markers storage.
Expand All @@ -79,7 +79,7 @@ public class CheckpointMarkersStorage {

/** Earliest checkpoint map snapshot temporary file name. */
private static final String EARLIEST_CP_SNAPSHOT_TMP_FILE =
EARLIEST_CP_SNAPSHOT_FILE + FilePageStoreManager.TMP_SUFFIX;
EARLIEST_CP_SNAPSHOT_FILE + TMP_SUFFIX;

/** Checkpoint map snapshot executor. */
private final Executor checkpointMapSnapshotExecutor;
Expand Down Expand Up @@ -464,7 +464,7 @@ private void writeCheckpointEntry(
boolean skipSync
) throws StorageException {
String fileName = checkpointFileName(cp, type);
String tmpFileName = fileName + FilePageStoreManager.TMP_SUFFIX;
String tmpFileName = fileName + NodeFileTree.TMP_SUFFIX;

try {
try (FileIO io = ioFactory.create(Paths.get(ft.checkpoint().getAbsolutePath(), skipSync ? fileName : tmpFileName).toFile(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static java.nio.file.StandardOpenOption.CREATE_NEW;
import static java.nio.file.StandardOpenOption.WRITE;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.FILE_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.INDEX_FILE_PREFIX;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.PART_FILE_PREFIX;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.PART_FILE_TEMPLATE;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.TMP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.FILE_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.INDEX_FILE_NAME;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.INDEX_FILE_PREFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.PART_FILE_PREFIX;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.PART_FILE_TEMPLATE;
import static org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree.TMP_SUFFIX;

/**
* Everything related to file management during defragmentation process.
Expand Down
Loading

0 comments on commit c2c733b

Please sign in to comment.