This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 4235b2880a4 IGNITE-26201 Stop persisting calculated default storage
profile size (#6422)
4235b2880a4 is described below
commit 4235b2880a4d6340d18afe83c2cf3f402cbf9c5e
Author: Ivan Bessonov <[email protected]>
AuthorDate: Thu Aug 14 15:59:58 2025 +0300
IGNITE-26201 Stop persisting calculated default storage profile size (#6422)
---
.../storageprofile/ItStorageProfilesTest.java | 102 ---------------------
.../pagememory/PersistentPageMemoryDataRegion.java | 26 +++++-
.../PersistentPageMemoryStorageEngine.java | 29 ------
.../pagememory/VolatilePageMemoryDataRegion.java | 40 +++++++-
.../VolatilePageMemoryStorageEngine.java | 44 ---------
.../PersistentPageMemoryStorageEngineTest.java | 7 --
.../VolatilePageMemoryStorageEngineTest.java | 23 -----
.../storage/rocksdb/RocksDbStorageEngine.java | 29 +-----
.../storage/rocksdb/RocksDbStorageProfile.java | 35 ++++++-
.../rocksdb/engine/RocksDbStorageEngineTest.java | 7 --
.../instance/SharedRocksDbInstanceTest.java | 4 +-
11 files changed, 89 insertions(+), 257 deletions(-)
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/storageprofile/ItStorageProfilesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/storageprofile/ItStorageProfilesTest.java
deleted file mode 100644
index 93382ef3ea4..00000000000
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/storageprofile/ItStorageProfilesTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.storageprofile;
-
-import static org.apache.ignite.internal.TestWrappers.unwrapIgniteImpl;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import com.typesafe.config.parser.ConfigDocument;
-import com.typesafe.config.parser.ConfigDocumentFactory;
-import org.apache.ignite.configuration.NamedListView;
-import org.apache.ignite.internal.ClusterPerClassIntegrationTest;
-import org.apache.ignite.internal.app.IgniteImpl;
-import
org.apache.ignite.internal.storage.configurations.StorageExtensionConfiguration;
-import org.apache.ignite.internal.storage.configurations.StorageProfileView;
-import org.apache.ignite.internal.storage.engine.StorageEngine;
-import
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryStorageEngine;
-import
org.apache.ignite.internal.storage.pagememory.VolatilePageMemoryStorageEngine;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryProfileView;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryProfileView;
-import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
-import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbProfileView;
-import org.junit.jupiter.api.Test;
-
-/**
- * Test class for validating storage profiles configuration.
- */
-public class ItStorageProfilesTest extends ClusterPerClassIntegrationTest {
- private static final String AIPERSIST_PROFILE_NAME =
ItStorageProfilesTest.class.getSimpleName() + "_aipersist";
- private static final String AIMEM_PROFILE_NAME =
ItStorageProfilesTest.class.getSimpleName() + "_aimem";
- private static final String ROCKSDB_PROFILE_NAME =
ItStorageProfilesTest.class.getSimpleName() + "_rocksdb";
-
- @Override
- protected int initialNodes() {
- return 1;
- }
-
- @Override
- protected String getNodeBootstrapConfigTemplate() {
- ConfigDocument document =
ConfigDocumentFactory.parseString(super.getNodeBootstrapConfigTemplate());
-
- document = document.withValueText(profileKey(ROCKSDB_PROFILE_NAME),
RocksDbStorageEngine.ENGINE_NAME);
-
- document = document.withValueText(profileKey(AIPERSIST_PROFILE_NAME),
PersistentPageMemoryStorageEngine.ENGINE_NAME);
-
- document = document.withValueText(profileKey(AIMEM_PROFILE_NAME),
VolatilePageMemoryStorageEngine.ENGINE_NAME);
-
- return document.render();
- }
-
- private static String profileKey(String profileName) {
- return String.format("ignite.storage.profiles.%s.engine", profileName);
- }
-
- /**
- * Checks that profiles with default values get initialized correctly.
- */
- @Test
- void validateDefaultStorageProfileSettings() {
- long defaultDataRegionSize = StorageEngine.defaultDataRegionSize();
-
- IgniteImpl node = unwrapIgniteImpl(CLUSTER.aliveNode());
-
- NamedListView<StorageProfileView> profilesConfiguration =
node.nodeConfiguration()
- .getConfiguration(StorageExtensionConfiguration.KEY)
- .storage()
- .profiles()
- .value();
-
- var aipersistConfiguration = (PersistentPageMemoryProfileView)
profilesConfiguration.get(AIPERSIST_PROFILE_NAME);
-
- assertThat(aipersistConfiguration, is(notNullValue()));
- assertThat(aipersistConfiguration.sizeBytes(),
is(defaultDataRegionSize));
-
- var aimemConfiguration = (VolatilePageMemoryProfileView)
profilesConfiguration.get(AIMEM_PROFILE_NAME);
-
- assertThat(aimemConfiguration, is(notNullValue()));
- assertThat(aimemConfiguration.initSizeBytes(),
is(defaultDataRegionSize));
- assertThat(aimemConfiguration.maxSizeBytes(),
is(defaultDataRegionSize));
-
- var rocksdbConfiguration = (RocksDbProfileView)
profilesConfiguration.get(ROCKSDB_PROFILE_NAME);
-
- assertThat(rocksdbConfiguration, is(notNullValue()));
- assertThat(rocksdbConfiguration.sizeBytes(),
is(defaultDataRegionSize));
- }
-}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataRegion.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataRegion.java
index be1edae8b23..cac367ccfc9 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataRegion.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataRegion.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.storage.pagememory;
+import static
org.apache.ignite.internal.storage.configurations.StorageProfileConfigurationSchema.UNSPECIFIED_SIZE;
import static
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryStorageEngine.ENGINE_NAME;
import static
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryStorageEngine.THROTTLING_LOG_THRESHOLD_SYSTEM_PROPERTY;
import static
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryStorageEngine.THROTTLING_MAX_DIRTY_PAGES_SYSTEM_PROPERTY;
@@ -57,6 +58,7 @@ import
org.apache.ignite.internal.pagememory.persistence.throttling.PagesWriteTh
import
org.apache.ignite.internal.pagememory.persistence.throttling.TargetRatioPagesWriteThrottle;
import
org.apache.ignite.internal.pagememory.persistence.throttling.ThrottlingType;
import org.apache.ignite.internal.storage.StorageException;
+import org.apache.ignite.internal.storage.engine.StorageEngine;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryProfileConfiguration;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryProfileView;
import
org.apache.ignite.internal.storage.pagememory.mv.PersistentPageMemoryMvPartitionStorage;
@@ -151,12 +153,22 @@ class PersistentPageMemoryDataRegion implements
DataRegion<PersistentPageMemory>
public void start() {
var dataRegionConfigView = (PersistentPageMemoryProfileView)
cfg.value();
+ long sizeBytes = dataRegionConfigView.sizeBytes();
+ if (sizeBytes == UNSPECIFIED_SIZE) {
+ long defaultDataRegionSize = StorageEngine.defaultDataRegionSize();
+
+ LOG.info(
+ "{}.{} property is not specified, setting its value to {}",
+ cfg.name().value(), cfg.sizeBytes().key(),
defaultDataRegionSize
+ );
+ }
+
PersistentPageMemory pageMemory = new PersistentPageMemory(
- regionConfiguration(dataRegionConfigView, pageSize),
+ regionConfiguration(dataRegionConfigView, sizeBytes, pageSize),
metricSource,
ioRegistry,
- calculateSegmentSizes(dataRegionConfigView.sizeBytes(),
Runtime.getRuntime().availableProcessors()),
-
calculateCheckpointBufferSize(dataRegionConfigView.sizeBytes()),
+ calculateSegmentSizes(sizeBytes,
Runtime.getRuntime().availableProcessors()),
+ calculateCheckpointBufferSize(sizeBytes),
filePageStoreManager,
this::flushDirtyPageOnReplacement,
checkpointManager.checkpointTimeoutLock(),
@@ -177,11 +189,15 @@ class PersistentPageMemoryDataRegion implements
DataRegion<PersistentPageMemory>
this.pageMemory = pageMemory;
}
- private static PersistentDataRegionConfiguration
regionConfiguration(PersistentPageMemoryProfileView cfg, int pageSize) {
+ private static PersistentDataRegionConfiguration regionConfiguration(
+ PersistentPageMemoryProfileView cfg,
+ long sizeBytes,
+ int pageSize
+ ) {
return PersistentDataRegionConfiguration.builder()
.name(cfg.name())
.pageSize(pageSize)
- .size(cfg.sizeBytes())
+ .size(sizeBytes)
.replacementMode(ReplacementMode.valueOf(cfg.replacementMode()))
.build();
}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
index 1e9cee00c47..38318a9f7c3 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.storage.pagememory;
import static java.util.Objects.requireNonNull;
-import static
org.apache.ignite.internal.storage.configurations.StorageProfileConfigurationSchema.UNSPECIFIED_SIZE;
import static org.apache.ignite.internal.util.IgniteUtils.closeAll;
import static
org.apache.ignite.internal.util.IgniteUtils.shutdownAndAwaitTermination;
@@ -26,15 +25,12 @@ import java.io.IOException;
import java.nio.file.Path;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
-import org.apache.ignite.configuration.ConfigurationValue;
import org.apache.ignite.internal.components.LogSyncer;
import org.apache.ignite.internal.components.LongJvmPauseDetector;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
@@ -58,7 +54,6 @@ import org.apache.ignite.internal.storage.StorageException;
import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
import org.apache.ignite.internal.storage.configurations.StorageProfileView;
import org.apache.ignite.internal.storage.engine.MvTableStorage;
-import org.apache.ignite.internal.storage.engine.StorageEngine;
import org.apache.ignite.internal.storage.engine.StorageTableDescriptor;
import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PageMemoryCheckpointConfiguration;
@@ -354,8 +349,6 @@ public class PersistentPageMemoryStorageEngine extends
AbstractPageMemoryStorage
* Creates, starts and adds a new data region to the engine.
*/
private void addDataRegion(PersistentPageMemoryProfileConfiguration
storageProfileConfiguration) {
- initDataRegionSize(storageProfileConfiguration);
-
int pageSize = engineConfig.pageSizeBytes().value();
PersistentPageMemoryDataRegion dataRegion = new
PersistentPageMemoryDataRegion(
@@ -374,28 +367,6 @@ public class PersistentPageMemoryStorageEngine extends
AbstractPageMemoryStorage
regions.put(storageProfileConfiguration.name().value(), dataRegion);
}
- private static void
initDataRegionSize(PersistentPageMemoryProfileConfiguration
storageProfileConfiguration) {
- ConfigurationValue<Long> dataRegionSize =
storageProfileConfiguration.sizeBytes();
-
- if (dataRegionSize.value() == UNSPECIFIED_SIZE) {
- long defaultDataRegionSize = StorageEngine.defaultDataRegionSize();
-
- CompletableFuture<Void> updateFuture =
dataRegionSize.update(defaultDataRegionSize);
-
- // Node local configuration is synchronous, wait just in case.
- try {
- updateFuture.get();
- } catch (InterruptedException | ExecutionException e) {
- throw new StorageException(e);
- }
-
- LOG.info(
- "{}.{} property is not specified, setting its value to {}",
- storageProfileConfiguration.name().value(),
dataRegionSize.key(), defaultDataRegionSize
- );
- }
- }
-
@Override
public Set<Integer> tableIdsOnDisk() {
return requireNonNull(filePageStoreManager, "Not
started").allGroupIdsOnFs();
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
index 1b0705e6397..2669fb37c1d 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
@@ -18,10 +18,13 @@
package org.apache.ignite.internal.storage.pagememory;
import static org.apache.ignite.internal.pagememory.PageIdAllocator.FLAG_AUX;
+import static
org.apache.ignite.internal.storage.configurations.StorageProfileConfigurationSchema.UNSPECIFIED_SIZE;
import static org.apache.ignite.internal.util.IgniteUtils.closeAllManually;
import org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.lang.IgniteSystemProperties;
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.pagememory.DataRegion;
import org.apache.ignite.internal.pagememory.PageMemory;
import
org.apache.ignite.internal.pagememory.configuration.VolatileDataRegionConfiguration;
@@ -30,6 +33,7 @@ import
org.apache.ignite.internal.pagememory.inmemory.VolatilePageMemory;
import org.apache.ignite.internal.pagememory.io.PageIoRegistry;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
import org.apache.ignite.internal.storage.StorageException;
+import org.apache.ignite.internal.storage.engine.StorageEngine;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryProfileConfiguration;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryProfileView;
import org.apache.ignite.internal.util.OffheapReadWriteLock;
@@ -38,6 +42,9 @@ import org.apache.ignite.internal.util.OffheapReadWriteLock;
* Implementation of {@link DataRegion} for in-memory case.
*/
public class VolatilePageMemoryDataRegion implements
DataRegion<VolatilePageMemory> {
+ /** Logger. */
+ private static final IgniteLogger LOG =
Loggers.forClass(VolatilePageMemoryDataRegion.class);
+
/** Ignite page memory concurrency level. */
private static final String IGNITE_OFFHEAP_LOCK_CONCURRENCY_LEVEL =
"IGNITE_OFFHEAP_LOCK_CONCURRENCY_LEVEL";
@@ -82,7 +89,7 @@ public class VolatilePageMemoryDataRegion implements
DataRegion<VolatilePageMemo
Integer.highestOneBit(Runtime.getRuntime().availableProcessors() * 4)
);
- VolatileDataRegionConfiguration cfg =
regionConfiguration((VolatilePageMemoryProfileView) this.cfg.value(), pageSize);
+ VolatileDataRegionConfiguration cfg = regionConfiguration(this.cfg,
pageSize);
var pageMemory = new VolatilePageMemory(cfg, ioRegistry, new
OffheapReadWriteLock(lockConcLvl));
pageMemory.start();
@@ -96,12 +103,35 @@ public class VolatilePageMemoryDataRegion implements
DataRegion<VolatilePageMemo
this.pageMemory = pageMemory;
}
- private static VolatileDataRegionConfiguration
regionConfiguration(VolatilePageMemoryProfileView cfg, int pageSize) {
+ private static VolatileDataRegionConfiguration
regionConfiguration(VolatilePageMemoryProfileConfiguration cfg, int pageSize) {
+ var cfgView = (VolatilePageMemoryProfileView) cfg.value();
+
+ long initSize = cfgView.initSizeBytes();
+ long maxSize = cfgView.maxSizeBytes();
+
+ if (maxSize == UNSPECIFIED_SIZE) {
+ maxSize = StorageEngine.defaultDataRegionSize();
+
+ LOG.info(
+ "{}.{} property is not specified, setting its value to {}",
+ cfg.name().value(), cfg.maxSizeBytes().key(), maxSize
+ );
+ }
+
+ if (initSize == UNSPECIFIED_SIZE) {
+ initSize = maxSize;
+
+ LOG.info(
+ "{}.{} property is not specified, setting its value to {}",
+ cfg.name().value(), cfg.initSizeBytes().key(), maxSize
+ );
+ }
+
return VolatileDataRegionConfiguration.builder()
- .name(cfg.name())
+ .name(cfgView.name())
.pageSize(pageSize)
- .initSize(cfg.initSizeBytes())
- .maxSize(cfg.maxSizeBytes())
+ .initSize(initSize)
+ .maxSize(maxSize)
.build();
}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
index 26f587b5299..59e16b38d08 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
@@ -18,21 +18,17 @@
package org.apache.ignite.internal.storage.pagememory;
import static java.util.Collections.emptySet;
-import static
org.apache.ignite.internal.storage.configurations.StorageProfileConfigurationSchema.UNSPECIFIED_SIZE;
import static org.apache.ignite.internal.util.IgniteUtils.closeAll;
import static
org.apache.ignite.internal.util.IgniteUtils.shutdownAndAwaitTermination;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
-import org.apache.ignite.configuration.ConfigurationValue;
import org.apache.ignite.internal.failure.FailureProcessor;
import org.apache.ignite.internal.hlc.HybridClock;
import org.apache.ignite.internal.logger.IgniteLogger;
@@ -43,7 +39,6 @@ import org.apache.ignite.internal.pagememory.tree.BplusTree;
import org.apache.ignite.internal.storage.StorageException;
import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
import org.apache.ignite.internal.storage.configurations.StorageProfileView;
-import org.apache.ignite.internal.storage.engine.StorageEngine;
import org.apache.ignite.internal.storage.engine.StorageTableDescriptor;
import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryProfileConfiguration;
@@ -202,8 +197,6 @@ public class VolatilePageMemoryStorageEngine extends
AbstractPageMemoryStorageEn
* Creates, starts and adds a new data region to the engine.
*/
private void addDataRegion(VolatilePageMemoryProfileConfiguration
storageProfileConfiguration) {
- initDataRegionSize(storageProfileConfiguration);
-
int pageSize = engineConfig.pageSizeBytes().value();
VolatilePageMemoryDataRegion dataRegion = new
VolatilePageMemoryDataRegion(
@@ -216,41 +209,4 @@ public class VolatilePageMemoryStorageEngine extends
AbstractPageMemoryStorageEn
regions.put(storageProfileConfiguration.name().value(), dataRegion);
}
-
- private static void
initDataRegionSize(VolatilePageMemoryProfileConfiguration
storageProfileConfiguration) {
- ConfigurationValue<Long> maxSize =
storageProfileConfiguration.maxSizeBytes();
-
- if (maxSize.value() == UNSPECIFIED_SIZE) {
- long defaultDataRegionSize = StorageEngine.defaultDataRegionSize();
-
- updateConfigValue(maxSize, defaultDataRegionSize);
-
- LOG.info(
- "{}.{} property is not specified, setting its value to {}",
- storageProfileConfiguration.name().value(), maxSize.key(),
defaultDataRegionSize
- );
- }
-
- ConfigurationValue<Long> initSize =
storageProfileConfiguration.initSizeBytes();
-
- if (initSize.value() == UNSPECIFIED_SIZE) {
- updateConfigValue(initSize, maxSize.value());
-
- LOG.info(
- "{}.{} property is not specified, setting its value to {}",
- storageProfileConfiguration.name().value(),
initSize.key(), maxSize.value()
- );
- }
- }
-
- private static <T> void updateConfigValue(ConfigurationValue<T> config, T
newValue) {
- CompletableFuture<Void> updateFuture = config.update(newValue);
-
- // Node local configuration is synchronous, wait just in case.
- try {
- updateFuture.get();
- } catch (InterruptedException | ExecutionException e) {
- throw new StorageException(e);
- }
- }
}
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/PersistentPageMemoryStorageEngineTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/PersistentPageMemoryStorageEngineTest.java
index 94016ec43bd..49742c22cd4 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/PersistentPageMemoryStorageEngineTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/PersistentPageMemoryStorageEngineTest.java
@@ -80,13 +80,6 @@ public class PersistentPageMemoryStorageEngineTest extends
AbstractPersistentSto
);
}
- @Test
- void dataRegionSizeGetsInitialized() {
- for (StorageProfileView view : storageConfig.profiles().value()) {
- assertThat(((PersistentPageMemoryProfileView) view).sizeBytes(),
is(StorageEngine.defaultDataRegionSize()));
- }
- }
-
@Test
void dataRegionSizeUsedWhenSet(
@InjectConfiguration("mock.profiles.default {engine = aipersist,
sizeBytes = 12345}")
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/VolatilePageMemoryStorageEngineTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/VolatilePageMemoryStorageEngineTest.java
index e377943a778..f402763c296 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/VolatilePageMemoryStorageEngineTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/engine/VolatilePageMemoryStorageEngineTest.java
@@ -59,14 +59,6 @@ public class VolatilePageMemoryStorageEngineTest extends
AbstractVolatileStorage
);
}
- @Test
- void dataRegionSizeGetsInitialized() {
- for (StorageProfileView view : storageConfig.profiles().value()) {
- assertThat(((VolatilePageMemoryProfileView) view).initSizeBytes(),
is(StorageEngine.defaultDataRegionSize()));
- assertThat(((VolatilePageMemoryProfileView) view).maxSizeBytes(),
is(StorageEngine.defaultDataRegionSize()));
- }
- }
-
@Test
void dataRegionSizeUsedWhenSet(
@InjectConfiguration("mock.profiles.default {engine = aimem,
maxSizeBytes = 12345000, initSizeBytes = 123000}")
@@ -81,19 +73,4 @@ public class VolatilePageMemoryStorageEngineTest extends
AbstractVolatileStorage
assertThat(((VolatilePageMemoryProfileView) view).maxSizeBytes(),
is(12345000L));
}
}
-
- @Test
- void initSizeSetToMaxSizeByDefault(
- @InjectConfiguration("mock.profiles.default {engine = aimem,
maxSizeBytes = 12345000}")
- StorageConfiguration storageConfig
- ) {
- StorageEngine anotherEngine = createEngine(storageConfig);
-
- anotherEngine.start();
-
- for (StorageProfileView view : storageConfig.profiles().value()) {
- assertThat(((VolatilePageMemoryProfileView) view).initSizeBytes(),
is(12345000L));
- assertThat(((VolatilePageMemoryProfileView) view).maxSizeBytes(),
is(12345000L));
- }
- }
}
diff --git
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
index 9d74d2e5b59..27bea4a9f69 100644
---
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
+++
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.storage.rocksdb;
import static java.util.concurrent.CompletableFuture.allOf;
import static java.util.stream.Collectors.toUnmodifiableSet;
-import static
org.apache.ignite.internal.storage.configurations.StorageProfileConfigurationSchema.UNSPECIFIED_SIZE;
import static org.apache.ignite.internal.util.IgniteUtils.closeAll;
import static org.apache.ignite.internal.util.IgniteUtils.closeAllManually;
import static
org.apache.ignite.internal.util.IgniteUtils.shutdownAndAwaitTermination;
@@ -29,12 +28,10 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
-import org.apache.ignite.configuration.ConfigurationValue;
import org.apache.ignite.internal.close.ManuallyCloseable;
import org.apache.ignite.internal.components.LogSyncer;
import org.apache.ignite.internal.failure.FailureProcessor;
@@ -185,11 +182,9 @@ public class RocksDbStorageEngine implements StorageEngine
{
}
private void registerProfile(RocksDbProfileConfiguration profileConfig) {
- initDataRegionSize(profileConfig);
-
String profileName = profileConfig.name().value();
- var profile = new RocksDbStorageProfile((RocksDbProfileView)
profileConfig.value());
+ var profile = new RocksDbStorageProfile(profileConfig);
profile.start();
@@ -200,28 +195,6 @@ public class RocksDbStorageEngine implements StorageEngine
{
assert previousStorage == null : "Storage already exists for profile:
" + profileName;
}
- private static void initDataRegionSize(RocksDbProfileConfiguration
storageProfileConfiguration) {
- ConfigurationValue<Long> dataRegionSize =
storageProfileConfiguration.sizeBytes();
-
- if (dataRegionSize.value() == UNSPECIFIED_SIZE) {
- long defaultDataRegionSize = StorageEngine.defaultDataRegionSize();
-
- CompletableFuture<Void> updateFuture =
dataRegionSize.update(defaultDataRegionSize);
-
- // Node local configuration is synchronous, wait just in case.
- try {
- updateFuture.get();
- } catch (InterruptedException | ExecutionException e) {
- throw new StorageException(e);
- }
-
- LOG.info(
- "{}.{} property is not specified, setting its value to {}",
- storageProfileConfiguration.name().value(),
dataRegionSize.key(), defaultDataRegionSize
- );
- }
- }
-
private SharedRocksDbInstance newRocksDbInstance(String profileName,
RocksDbStorageProfile profile) {
Path dbPath = storagePath.resolve("rocksdb-" + profileName);
diff --git
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageProfile.java
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageProfile.java
index bea45eb8545..5d4068d8495 100644
---
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageProfile.java
+++
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageProfile.java
@@ -17,6 +17,12 @@
package org.apache.ignite.internal.storage.rocksdb;
+import static
org.apache.ignite.internal.storage.configurations.StorageProfileConfigurationSchema.UNSPECIFIED_SIZE;
+
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
+import org.apache.ignite.internal.storage.engine.StorageEngine;
+import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbProfileConfiguration;
import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbProfileView;
import org.apache.ignite.internal.util.IgniteUtils;
import org.rocksdb.Cache;
@@ -27,8 +33,11 @@ import org.rocksdb.WriteBufferManager;
* Storage profile implementation for {@link RocksDbStorageEngine}. Based on a
{@link Cache}.
*/
public class RocksDbStorageProfile {
+ /** Logger. */
+ private static final IgniteLogger LOG =
Loggers.forClass(RocksDbStorageProfile.class);
+
/** Profile configuration view. */
- private final RocksDbProfileView storageProfileConfig;
+ private final RocksDbProfileConfiguration storageProfileConfig;
/** RocksDB cache instance. */
private Cache cache;
@@ -41,7 +50,7 @@ public class RocksDbStorageProfile {
*
* @param storageProfileConfig Storage profile configuration view.
*/
- public RocksDbStorageProfile(RocksDbProfileView storageProfileConfig) {
+ public RocksDbStorageProfile(RocksDbProfileConfiguration
storageProfileConfig) {
this.storageProfileConfig = storageProfileConfig;
}
@@ -49,20 +58,36 @@ public class RocksDbStorageProfile {
* Start the profile.
*/
public void start() {
- long writeBufferSize = storageProfileConfig.writeBufferSizeBytes();
+ long writeBufferSize =
storageProfileConfig.writeBufferSizeBytes().value();
- long totalCacheSize = storageProfileConfig.sizeBytes() +
writeBufferSize;
+ long totalCacheSize = sizeBytes() + writeBufferSize;
cache = new LRUCache(totalCacheSize, -1, false);
writeBufferManager = new WriteBufferManager(writeBufferSize, cache);
}
+ private long sizeBytes() {
+ var storageProfileConfigView = (RocksDbProfileView)
storageProfileConfig.value();
+ long dataRegionSize = storageProfileConfigView.sizeBytes();
+
+ if (dataRegionSize == UNSPECIFIED_SIZE) {
+ dataRegionSize = StorageEngine.defaultDataRegionSize();
+
+ LOG.info(
+ "{}.{} property is not specified, setting its value to {}",
+ storageProfileConfigView.name(),
storageProfileConfig.writeBufferSizeBytes().key(), dataRegionSize
+ );
+ }
+
+ return dataRegionSize;
+ }
+
/**
* Returns profile name.
*/
public String name() {
- return storageProfileConfig.name();
+ return storageProfileConfig.value().name();
}
/**
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
index 1d9ddeef024..a22f19ffafc 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
@@ -76,13 +76,6 @@ public class RocksDbStorageEngineTest extends
AbstractPersistentStorageEngineTes
assertThat(((RocksDbStorageEngine) storageEngine).flush(),
willCompleteSuccessfully());
}
- @Test
- void dataRegionSizeGetsInitialized() {
- for (StorageProfileView view :
storageConfiguration.profiles().value()) {
- assertThat(((RocksDbProfileView) view).sizeBytes(),
is(StorageEngine.defaultDataRegionSize()));
- }
- }
-
@Test
void dataRegionSizeUsedWhenSet(
@InjectConfiguration("mock.profiles.default {engine = rocksdb,
sizeBytes = 12345}")
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
index df13504456e..ba3b7a7f261 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
@@ -53,7 +53,7 @@ import
org.apache.ignite.internal.storage.configurations.StorageConfiguration;
import
org.apache.ignite.internal.storage.index.StorageSortedIndexDescriptor.StorageSortedIndexColumnDescriptor;
import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageProfile;
-import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbProfileView;
+import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbProfileConfiguration;
import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
import org.apache.ignite.internal.testframework.InjectExecutorService;
@@ -99,7 +99,7 @@ class SharedRocksDbInstanceTest extends IgniteAbstractTest {
engine.start();
- var profileConfig = (RocksDbProfileView)
storageConfiguration.profiles().get("default").value();
+ var profileConfig = (RocksDbProfileConfiguration)
storageConfiguration.profiles().get("default");
storageProfile = new RocksDbStorageProfile(profileConfig);