Repository: ignite Updated Branches: refs/heads/master 7ab8a273f -> 7637ed99e
IGNITE-8456 Print warning if IGNITE_HOME & WORK and persistentStoreDir is not set, but persistence enabled - Fixes #3976. Signed-off-by: Ivan Rakov <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7637ed99 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7637ed99 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7637ed99 Branch: refs/heads/master Commit: 7637ed99e9321720dd7d0a0a4a833d042e89dee2 Parents: 7ab8a27 Author: Dmitrii Ryabov <[email protected]> Authored: Mon May 14 17:09:56 2018 +0300 Committer: Ivan Rakov <[email protected]> Committed: Mon May 14 17:09:56 2018 +0300 ---------------------------------------------------------------------- .../persistence/file/FilePageStoreManager.java | 12 +++ .../PersistenceDirectoryWarningLoggingTest.java | 85 ++++++++++++++++++++ .../IgnitePdsWithIndexingCoreTestSuite.java | 2 + 3 files changed, 99 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7637ed99/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java ---------------------------------------------------------------------- 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 18185c5..90da4ec 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 @@ -144,6 +144,7 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen /** {@inheritDoc} */ @Override public void start0() throws IgniteCheckedException { final GridKernalContext ctx = cctx.kernalContext(); + if (ctx.clientNode()) return; @@ -152,6 +153,17 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen storeWorkDir = new File(folderSettings.persistentStoreRootPath(), folderSettings.folderName()); U.ensureDirectory(storeWorkDir, "page store work directory", log); + + String tmpDir = System.getProperty("java.io.tmpdir"); + + if (tmpDir != null && storeWorkDir.getAbsolutePath().contains(tmpDir)) { + log.warning("Persistence store directory is in the temp directory and may be cleaned." + + "To avoid this set \"IGNITE_HOME\" environment variable properly or " + + "change location of persistence directories in data storage configuration " + + "(see DataStorageConfiguration#walPath, DataStorageConfiguration#walArchivePath, " + + "DataStorageConfiguration#storagePath properties). " + + "Current persistence store directory is: [" + tmpDir + "]"); + } } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/7637ed99/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/PersistenceDirectoryWarningLoggingTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/PersistenceDirectoryWarningLoggingTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/PersistenceDirectoryWarningLoggingTest.java new file mode 100644 index 0000000..7d67402 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/PersistenceDirectoryWarningLoggingTest.java @@ -0,0 +1,85 @@ +/* + * 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.processors.cache.persistence; + +import org.apache.ignite.configuration.DataStorageConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.testframework.GridStringLogger; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; + +/** + * Tests that warning is logged when persistence store directory equals {@code System.getProperty("java.io.tmpdir")}. + */ +public class PersistenceDirectoryWarningLoggingTest extends GridCommonAbstractTest { + /** Warning message to test. */ + private static final String WARN_MSG_PREFIX = "Persistence store directory is in the temp " + + "directory and may be cleaned."; + + /** String logger to check. */ + private GridStringLogger log0 = new GridStringLogger(); + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + super.afterTest(); + + stopAllGrids(); + } + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); + + cfg.setGridLogger(log0); + + DataStorageConfiguration dsCfg = new DataStorageConfiguration(); + + dsCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true); + + cfg.setDataStorageConfiguration(dsCfg); + + return cfg; + } + + /** + * @throws Exception If failed. + */ + public void testPdsDirWarningSuppressed() throws Exception { + startGrid(); + + assertFalse(log0.toString().contains(WARN_MSG_PREFIX)); + } + + /** + * @throws Exception If failed. + */ + public void testPdsDirWarningIsLogged() throws Exception { + IgniteConfiguration cfg = getConfiguration("0"); + + String tempDir = System.getProperty("java.io.tmpdir"); + + assertNotNull(tempDir); + + // Emulates that Ignite work directory has not been calculated, + // and IgniteUtils#workDirectory resolved directory into "java.io.tmpdir" + cfg.setWorkDirectory(tempDir); + + startGrid(cfg); + + assertTrue(log0.toString().contains(WARN_MSG_PREFIX)); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/7637ed99/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java index 943d43f..6232362 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java +++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java @@ -25,6 +25,7 @@ import org.apache.ignite.internal.processors.cache.persistence.IgnitePdsMarshall import org.apache.ignite.internal.processors.cache.persistence.IgnitePdsTxCacheHistoricalRebalancingTest; import org.apache.ignite.internal.processors.cache.persistence.IgnitePdsTxCacheRebalancingTest; import org.apache.ignite.internal.processors.cache.persistence.IgnitePersistentStoreCacheGroupsTest; +import org.apache.ignite.internal.processors.cache.persistence.PersistenceDirectoryWarningLoggingTest; import org.apache.ignite.internal.processors.cache.persistence.db.IgnitePdsMultiNodePutGetRestartTest; import org.apache.ignite.internal.processors.cache.persistence.db.IgnitePdsPageEvictionTest; import org.apache.ignite.internal.processors.cache.persistence.db.file.IgnitePdsCacheDestroyDuringCheckpointTest; @@ -54,6 +55,7 @@ public class IgnitePdsWithIndexingCoreTestSuite extends TestSuite { suite.addTestSuite(IgnitePdsPageEvictionTest.class); suite.addTestSuite(IgnitePdsMultiNodePutGetRestartTest.class); suite.addTestSuite(IgnitePersistentStoreCacheGroupsTest.class); + suite.addTestSuite(PersistenceDirectoryWarningLoggingTest.class); suite.addTestSuite(WalPathsTest.class); suite.addTestSuite(WalRecoveryTxLogicalRecordsTest.class);
