You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by mm...@apache.org on 2021/02/09 22:09:22 UTC
[ignite] branch master updated: IGNITE-14141 Remove unnecessary
storage configuration from PageStore (#8774)
This is an automated email from the ASF dual-hosted git repository.
mmuzaf 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 1af728f IGNITE-14141 Remove unnecessary storage configuration from PageStore (#8774)
1af728f is described below
commit 1af728f33d1e2c9b904cd7390336897d1949cad6
Author: Maxim Muzafarov <mm...@apache.org>
AuthorDate: Wed Feb 10 01:08:49 2021 +0300
IGNITE-14141 Remove unnecessary storage configuration from PageStore (#8774)
---
.../cache/persistence/file/FilePageStore.java | 32 ++++++++++++---------
.../persistence/file/FilePageStoreManager.java | 2 +-
.../cache/persistence/file/FilePageStoreV2.java | 14 +++------
.../file/FileVersionCheckingFactory.java | 33 ++++++++++++----------
.../persistence/IgnitePdsTaskCancelingTest.java | 2 +-
5 files changed, 43 insertions(+), 40 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
index 6b63d31..67a8c51 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
@@ -34,7 +34,6 @@ import java.util.function.LongConsumer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteSystemProperties;
-import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.internal.pagemem.PageIdUtils;
import org.apache.ignite.internal.pagemem.store.PageStore;
import org.apache.ignite.internal.pagemem.store.PageWriteListener;
@@ -85,12 +84,12 @@ public class FilePageStore implements PageStore {
*/
private volatile Boolean fileExists;
- /** */
+ /**
+ * The type of stored pages into given page storage. The field can take the following values:
+ * {@link PageStore#TYPE_DATA} for regular affinity partition files or {@link PageStore#TYPE_IDX} for index pages.
+ */
private final byte type;
- /** Database configuration. */
- protected final DataStorageConfiguration dbCfg;
-
/** Factory to provide I/O interfaces for read/write operations with files */
private final FileIOFactory ioFactory;
@@ -124,20 +123,27 @@ public class FilePageStore implements PageStore {
/** */
private final ReadWriteLock lock = new ReentrantReadWriteLock();
- /** */
+ /**
+ * @param type Type of stored pages.
+ * @param pathProvider Store path.
+ * @param factory Factory producing an IO accessor.
+ * @param pageSize Page size.
+ * @param allocatedTracker Allocation tracker.
+ */
public FilePageStore(
byte type,
IgniteOutClosure<Path> pathProvider,
FileIOFactory factory,
- DataStorageConfiguration cfg,
+ int pageSize,
LongConsumer allocatedTracker
) {
+ assert type == PageStore.TYPE_DATA || type == PageStore.TYPE_IDX : type;
+
this.type = type;
this.pathProvider = pathProvider;
- this.dbCfg = cfg;
this.ioFactory = factory;
this.allocated = new AtomicLong();
- this.pageSize = dbCfg.getPageSize();
+ this.pageSize = pageSize;
this.allocatedTracker = allocatedTracker;
}
@@ -248,12 +254,12 @@ public class FilePageStore implements PageStore {
*/
private long initFile(FileIO fileIO) throws IOException {
try {
- ByteBuffer hdr = header(type, dbCfg.getPageSize());
+ ByteBuffer hdr = header(type, pageSize);
fileIO.writeFully(hdr);
//there is 'super' page in every file
- return headerSize() + dbCfg.getPageSize();
+ return headerSize() + pageSize;
}
catch (ClosedByInterruptException e) {
// If thread was interrupted written header can be inconsistent.
@@ -310,9 +316,9 @@ public class FilePageStore implements PageStore {
int pageSize = hdr.getInt();
- if (dbCfg.getPageSize() != pageSize)
+ if (this.pageSize != pageSize)
throw new IOException(prefix + "(invalid page size)" +
- " [expectedPageSize=" + dbCfg.getPageSize() +
+ " [expectedPageSize=" + this.pageSize +
", filePageSize=" + pageSize + "]");
long fileSize = cfgFile.length();
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 f8f28d8..197296a 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
@@ -703,7 +703,7 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
FileVersionCheckingFactory pageStoreFactory = new FileVersionCheckingFactory(
pageStoreFileIoFactory,
pageStoreV1FileIoFactory,
- igniteCfg.getDataStorageConfiguration()
+ igniteCfg.getDataStorageConfiguration()::getPageSize
);
if (encrypted) {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreV2.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreV2.java
index 84609c9..8c1db88 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreV2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreV2.java
@@ -18,7 +18,6 @@ package org.apache.ignite.internal.processors.cache.persistence.file;
import java.nio.file.Path;
import java.util.function.LongConsumer;
-import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.lang.IgniteOutClosure;
/**
@@ -28,32 +27,27 @@ public class FilePageStoreV2 extends FilePageStore {
/** File version. */
public static final int VERSION = 2;
- /** Header size. */
- private final int hdrSize;
-
/**
* Constructor which initializes file path provider closure, allowing to calculate file path in any time.
*
* @param type Type.
* @param pathProvider file path provider.
* @param factory Factory.
- * @param cfg Config.
+ * @param pageSize Page size.
* @param allocatedTracker Allocated tracker.
*/
public FilePageStoreV2(
byte type,
IgniteOutClosure<Path> pathProvider,
FileIOFactory factory,
- DataStorageConfiguration cfg,
+ int pageSize,
LongConsumer allocatedTracker) {
- super(type, pathProvider, factory, cfg, allocatedTracker);
-
- hdrSize = cfg.getPageSize();
+ super(type, pathProvider, factory, pageSize, allocatedTracker);
}
/** {@inheritDoc} */
@Override public int headerSize() {
- return hdrSize;
+ return pageSize;
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FileVersionCheckingFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FileVersionCheckingFactory.java
index e650242..656a9bd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FileVersionCheckingFactory.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FileVersionCheckingFactory.java
@@ -22,9 +22,9 @@ import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.function.IntSupplier;
import java.util.function.LongConsumer;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.internal.pagemem.store.PageStore;
import org.apache.ignite.lang.IgniteOutClosure;
@@ -45,41 +45,42 @@ public class FileVersionCheckingFactory implements FilePageStoreFactory {
* Factory to provide I/O interfaces for read/write operations with files.
* This is backup factory for V1 page store.
*/
- private FileIOFactory fileIOFactoryStoreV1;
+ private final FileIOFactory fileIOFactoryStoreV1;
/** Memory configuration. */
- private final DataStorageConfiguration memCfg;
+ private final IntSupplier pageSize;
/**
* @param fileIOFactory File IO factory.
* @param fileIOFactoryStoreV1 File IO factory for V1 page store and for version checking.
- * @param memCfg Memory configuration.
+ * @param pageSize Page size supplier.
*/
public FileVersionCheckingFactory(
FileIOFactory fileIOFactory,
FileIOFactory fileIOFactoryStoreV1,
- DataStorageConfiguration memCfg
+ IntSupplier pageSize
) {
this.fileIOFactory = fileIOFactory;
this.fileIOFactoryStoreV1 = fileIOFactoryStoreV1;
- this.memCfg = memCfg;
+ this.pageSize = pageSize;
}
/** {@inheritDoc} */
@Override public PageStore createPageStore(
byte type,
IgniteOutClosure<Path> pathProvider,
- LongConsumer allocatedTracker) throws IgniteCheckedException {
+ LongConsumer allocatedTracker
+ ) throws IgniteCheckedException {
Path filePath = pathProvider.apply();
if (!Files.exists(filePath))
- return createPageStore(type, pathProvider, latestVersion(), allocatedTracker);
+ return createPageStore(type, pathProvider, pageSize.getAsInt(), latestVersion(), allocatedTracker);
try (FileIO fileIO = fileIOFactoryStoreV1.create(filePath.toFile())) {
int minHdr = FilePageStore.HEADER_SIZE;
if (fileIO.size() < minHdr)
- return createPageStore(type, pathProvider, latestVersion(), allocatedTracker);
+ return createPageStore(type, pathProvider, pageSize.getAsInt(), latestVersion(), allocatedTracker);
ByteBuffer hdr = ByteBuffer.allocate(minHdr).order(ByteOrder.nativeOrder());
@@ -91,7 +92,7 @@ public class FileVersionCheckingFactory implements FilePageStoreFactory {
int ver = hdr.getInt();
- return createPageStore(type, pathProvider, ver, allocatedTracker);
+ return createPageStore(type, pathProvider, pageSize.getAsInt(), ver, allocatedTracker);
}
catch (IOException e) {
throw new IgniteCheckedException("Error while creating file page store [file=" + filePath.toAbsolutePath() + "]:", e);
@@ -118,20 +119,22 @@ public class FileVersionCheckingFactory implements FilePageStoreFactory {
*
* @param type Type.
* @param ver Version.
+ * @param pageSize Page size.
* @param allocatedTracker Metrics updater
*/
private FilePageStore createPageStore(
byte type,
IgniteOutClosure<Path> pathProvider,
+ int pageSize,
int ver,
- LongConsumer allocatedTracker) {
-
+ LongConsumer allocatedTracker
+ ) {
switch (ver) {
case FilePageStore.VERSION:
- return new FilePageStore(type, pathProvider, fileIOFactoryStoreV1, memCfg, allocatedTracker);
+ return new FilePageStore(type, pathProvider, fileIOFactoryStoreV1, pageSize, allocatedTracker);
case FilePageStoreV2.VERSION:
- return new FilePageStoreV2(type, pathProvider, fileIOFactory, memCfg, allocatedTracker);
+ return new FilePageStoreV2(type, pathProvider, fileIOFactory, pageSize, allocatedTracker);
default:
throw new IllegalArgumentException("Unknown version of file page store: " + ver + " for file [" + pathProvider.apply().toAbsolutePath() + "]");
@@ -148,7 +151,7 @@ public class FileVersionCheckingFactory implements FilePageStoreFactory {
return FilePageStore.HEADER_SIZE;
case FilePageStoreV2.VERSION:
- return memCfg.getPageSize();
+ return pageSize.getAsInt();
default:
throw new IllegalArgumentException("Unknown version of file page store.");
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsTaskCancelingTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsTaskCancelingTest.java
index 300ce4e..ba702c6 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsTaskCancelingTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsTaskCancelingTest.java
@@ -198,7 +198,7 @@ public class IgnitePdsTaskCancelingTest extends GridCommonAbstractTest {
DataStorageConfiguration dbCfg = getDataStorageConfiguration();
- FilePageStore pageStore = new FilePageStore(PageMemory.FLAG_DATA, file::toPath, factory, dbCfg, val -> {});
+ FilePageStore pageStore = new FilePageStore(PageMemory.FLAG_DATA, file::toPath, factory, dbCfg.getPageSize(), val -> {});
int pageSize = dbCfg.getPageSize();