From e44e6df12cd82e2e55952daa7f31538b3f1e332b Mon Sep 17 00:00:00 2001 From: a-polyakov Date: Sat, 15 Dec 2018 03:02:20 +0300 Subject: [PATCH 1/6] IGNITE-9120 Metadata writer does not propagate error to failure handler Signed-off-by: a-polyakov --- .../cache/binary/BinaryMetadataFileStore.java | 23 ++- .../IgnitePdsNoSpaceLeftOnDeviceTest.java | 134 ++++++++++++++++++ 2 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java index 662839c6f99f1..ba7523e28925b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java @@ -22,9 +22,12 @@ import java.util.concurrent.ConcurrentMap; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; +import org.apache.ignite.failure.FailureContext; +import org.apache.ignite.failure.FailureType; import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.binary.BinaryMetadata; import org.apache.ignite.internal.binary.BinaryUtils; +import org.apache.ignite.internal.processors.cache.persistence.file.FileIO; import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.U; import org.jetbrains.annotations.Nullable; @@ -91,17 +94,27 @@ void writeMetadata(BinaryMetadata binMeta) { return; try { - File file = new File(workDir, Integer.toString(binMeta.typeId()) + ".bin"); + File file = new File(workDir, binMeta.typeId() + ".bin"); - try(FileOutputStream out = new FileOutputStream(file, false)) { - byte[] marshalled = U.marshal(ctx, binMeta); + byte[] marshalled = U.marshal(ctx, binMeta); - out.write(marshalled); + if (ctx.config() != null + && ctx.config().getDataStorageConfiguration() != null + && ctx.config().getDataStorageConfiguration().getFileIOFactory() != null) { + try (final FileIO out = ctx.config().getDataStorageConfiguration().getFileIOFactory().create(file)) { + out.write(marshalled, 0, marshalled.length); + } + } + else { + try (FileOutputStream out = new FileOutputStream(file, false)) { + out.write(marshalled); + } } } catch (Exception e) { - U.warn(log, "Failed to save metadata for typeId: " + binMeta.typeId() + + U.error(log, "Failed to save metadata for typeId: " + binMeta.typeId() + "; exception was thrown: " + e.getMessage()); + ctx.failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e)); } } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java new file mode 100644 index 0000000000000..460e7dd7b012c --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java @@ -0,0 +1,134 @@ +/* + * 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 java.io.File; +import java.io.IOException; +import java.nio.file.OpenOption; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.cache.CacheAtomicityMode; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.DataStorageConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.failure.StopNodeFailureHandler; +import org.apache.ignite.internal.IgniteEx; +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.RandomAccessFileIOFactory; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; +import org.apache.ignite.transactions.Transaction; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * + */ +@RunWith(JUnit4.class) +public class IgnitePdsNoSpaceLeftOnDeviceTest extends GridCommonAbstractTest { + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(gridName); + + final DataStorageConfiguration dataStorageConfiguration = new DataStorageConfiguration(); + + dataStorageConfiguration.getDefaultDataRegionConfiguration().setPersistenceEnabled(true); + dataStorageConfiguration.setFileIOFactory(new FailingFileIOFactory()); + + cfg.setDataStorageConfiguration(dataStorageConfiguration); + + CacheConfiguration ccfg = new CacheConfiguration(); + + ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); + ccfg.setName(DEFAULT_CACHE_NAME); + ccfg.setBackups(1); + + cfg.setCacheConfiguration(ccfg); + + cfg.setFailureHandler(new StopNodeFailureHandler()); + + return cfg; + } + + /** {@inheritDoc} */ + @Override protected void beforeTest() throws Exception { + cleanPersistenceDir(); + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + cleanPersistenceDir(); + } + + /** + * https://issues.apache.org/jira/browse/IGNITE-9120 + * Metadata writer does not propagate error to failure handler + * + * @throws Exception If failed. + */ + @Test + public void testWhileWritingBinaryMetadataFile() throws Exception { + final IgniteEx ignite0 = startGrid(0); + + startGrid(1); + + ignite0.cluster().active(true); + + final IgniteCache cache = ignite0.cache(DEFAULT_CACHE_NAME); + + for (int i = 0; i < 30; i++) { + try (Transaction tx = ignite0.transactions().txStart()) { + cache.put(1, ignite0.binary().builder("test").setField("field1", i).build()); + + cache.put(1 << i, ignite0.binary().builder("test").setField("field1", i).build()); + + tx.commit(); + } + catch (Exception e) { + } + } + + waitForTopology(1); + + stopAllGrids(); + } + + /** + * Generating error "No space left on device" when writing binary_meta file on the second node + */ + private static class FailingFileIOFactory implements FileIOFactory { + /** + * + */ + private static final long serialVersionUID = 0L; + + /** + * + */ + private final FileIOFactory delegateFactory = new RandomAccessFileIOFactory(); + + /** {@inheritDoc} */ + @Override public FileIO create(File file, OpenOption... modes) throws IOException { + if (file.getAbsolutePath().contains("node01-") && file.getAbsolutePath().contains("binary_meta")) + throw new IOException("No space left on device"); + + return delegateFactory.create(file, modes); + } + } +} From 1b282acd58f4bf9c531edd07eeffe523195613f8 Mon Sep 17 00:00:00 2001 From: a-polyakov Date: Fri, 21 Dec 2018 10:17:16 +0300 Subject: [PATCH 2/6] IGNITE-9120 Metadata writer does not propagate error to failure handler. Work on the remark. Signed-off-by: a-polyakov --- .../cache/binary/BinaryMetadataFileStore.java | 15 ++++++++-- .../IgnitePdsNoSpaceLeftOnDeviceTest.java | 29 +++++++++++++++---- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java index ba7523e28925b..36771a1e0ba94 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java @@ -102,7 +102,11 @@ void writeMetadata(BinaryMetadata binMeta) { && ctx.config().getDataStorageConfiguration() != null && ctx.config().getDataStorageConfiguration().getFileIOFactory() != null) { try (final FileIO out = ctx.config().getDataStorageConfiguration().getFileIOFactory().create(file)) { - out.write(marshalled, 0, marshalled.length); + int left = marshalled.length; + while ((left -= out.writeFully(marshalled, 0, Math.min(marshalled.length, left))) > 0) + ; + + out.force(); } } else { @@ -112,9 +116,14 @@ void writeMetadata(BinaryMetadata binMeta) { } } catch (Exception e) { - U.error(log, "Failed to save metadata for typeId: " + binMeta.typeId() + - "; exception was thrown: " + e.getMessage()); + final String msg = "Failed to save metadata for typeId: " + binMeta.typeId() + + "; exception was thrown: " + e.getMessage(); + + U.error(log, msg); + ctx.failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e)); + + throw new RuntimeException(msg ,e); } } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java index 460e7dd7b012c..55698a2e35343 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.OpenOption; +import java.util.concurrent.atomic.AtomicReference; import org.apache.ignite.IgniteCache; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.configuration.CacheConfiguration; @@ -30,6 +31,7 @@ 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.RandomAccessFileIOFactory; +import org.apache.ignite.internal.processors.cache.persistence.wal.reader.StandaloneGridKernalContext; import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; import org.apache.ignite.transactions.Transaction; import org.junit.Test; @@ -48,7 +50,7 @@ public class IgnitePdsNoSpaceLeftOnDeviceTest extends GridCommonAbstractTest { final DataStorageConfiguration dataStorageConfiguration = new DataStorageConfiguration(); - dataStorageConfiguration.getDefaultDataRegionConfiguration().setPersistenceEnabled(true); + dataStorageConfiguration.getDefaultDataRegionConfiguration().setPersistenceEnabled(true).setMaxSize(1<<24); dataStorageConfiguration.setFileIOFactory(new FailingFileIOFactory()); cfg.setDataStorageConfiguration(dataStorageConfiguration); @@ -77,8 +79,8 @@ public class IgnitePdsNoSpaceLeftOnDeviceTest extends GridCommonAbstractTest { } /** - * https://issues.apache.org/jira/browse/IGNITE-9120 - * Metadata writer does not propagate error to failure handler + * The tests to validate IGNITE-9120 + * Metadata writer does not propagate error to failure handler. * * @throws Exception If failed. */ @@ -86,7 +88,9 @@ public class IgnitePdsNoSpaceLeftOnDeviceTest extends GridCommonAbstractTest { public void testWhileWritingBinaryMetadataFile() throws Exception { final IgniteEx ignite0 = startGrid(0); - startGrid(1); + final IgniteEx ignite1 = startGrid(1); + + FailingFileIOFactory.setUnluckyConsistentId(ignite1.localNode().consistentId().toString()); ignite0.cluster().active(true); @@ -123,12 +127,27 @@ private static class FailingFileIOFactory implements FileIOFactory { */ private final FileIOFactory delegateFactory = new RandomAccessFileIOFactory(); + /** + * Node ConsistentId for which the error will be generated + */ + private static final AtomicReference unluckyConsistentId =new AtomicReference<>(); + /** {@inheritDoc} */ @Override public FileIO create(File file, OpenOption... modes) throws IOException { - if (file.getAbsolutePath().contains("node01-") && file.getAbsolutePath().contains("binary_meta")) + if (unluckyConsistentId.get()!=null + && file.getAbsolutePath().contains(unluckyConsistentId.get()) + && file.getAbsolutePath().contains(StandaloneGridKernalContext.BINARY_META_FOLDER)) throw new IOException("No space left on device"); return delegateFactory.create(file, modes); } + + /** + * Set node ConsistentId for which the error will be generated + * @param unluckyConsistentId Node ConsistentId. + */ + public static void setUnluckyConsistentId(String unluckyConsistentId){ + FailingFileIOFactory.unluckyConsistentId.set(unluckyConsistentId); + } } } From 9584299c13fa74fa11e6975f8858249a0687e84b Mon Sep 17 00:00:00 2001 From: a-polyakov Date: Fri, 21 Dec 2018 14:36:26 +0300 Subject: [PATCH 3/6] IGNITE-9120 Metadata writer does not propagate error to failure handler. Work on the remark part 2. --- .../cache/binary/BinaryMetadataFileStore.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java index 36771a1e0ba94..9b15b41e59d99 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java @@ -28,6 +28,7 @@ import org.apache.ignite.internal.binary.BinaryMetadata; import org.apache.ignite.internal.binary.BinaryUtils; 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.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.U; import org.jetbrains.annotations.Nullable; @@ -48,6 +49,9 @@ class BinaryMetadataFileStore { /** */ private final GridKernalContext ctx; + /** */ + private final FileIOFactory fileIOFactory; + /** */ private final IgniteLogger log; @@ -67,8 +71,13 @@ class BinaryMetadataFileStore { this.ctx = ctx; this.log = log; - if (!CU.isPersistenceEnabled(ctx.config())) + if (!CU.isPersistenceEnabled(ctx.config())) { + this.fileIOFactory = null; + return; + } + else + this.fileIOFactory = ctx.config().getDataStorageConfiguration().getFileIOFactory(); if (binaryMetadataFileStoreDir != null) workDir = binaryMetadataFileStoreDir; @@ -98,10 +107,8 @@ void writeMetadata(BinaryMetadata binMeta) { byte[] marshalled = U.marshal(ctx, binMeta); - if (ctx.config() != null - && ctx.config().getDataStorageConfiguration() != null - && ctx.config().getDataStorageConfiguration().getFileIOFactory() != null) { - try (final FileIO out = ctx.config().getDataStorageConfiguration().getFileIOFactory().create(file)) { + if (fileIOFactory != null) { + try (final FileIO out = fileIOFactory.create(file)) { int left = marshalled.length; while ((left -= out.writeFully(marshalled, 0, Math.min(marshalled.length, left))) > 0) ; From 6905cb3c0e615fc208761844c87044ccbb0e617d Mon Sep 17 00:00:00 2001 From: a-polyakov Date: Fri, 21 Dec 2018 15:53:47 +0300 Subject: [PATCH 4/6] IGNITE-9120 Metadata writer does not propagate error to failure handler. Work on the remark part 3. --- .../cache/binary/BinaryMetadataFileStore.java | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java index 9b15b41e59d99..fa0aa36f015ea 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java @@ -50,7 +50,7 @@ class BinaryMetadataFileStore { private final GridKernalContext ctx; /** */ - private final FileIOFactory fileIOFactory; + private FileIOFactory fileIOFactory; /** */ private final IgniteLogger log; @@ -71,13 +71,10 @@ class BinaryMetadataFileStore { this.ctx = ctx; this.log = log; - if (!CU.isPersistenceEnabled(ctx.config())) { - this.fileIOFactory = null; - + if (!CU.isPersistenceEnabled(ctx.config())) return; - } - else - this.fileIOFactory = ctx.config().getDataStorageConfiguration().getFileIOFactory(); + + fileIOFactory = ctx.config().getDataStorageConfiguration().getFileIOFactory(); if (binaryMetadataFileStoreDir != null) workDir = binaryMetadataFileStoreDir; @@ -107,19 +104,12 @@ void writeMetadata(BinaryMetadata binMeta) { byte[] marshalled = U.marshal(ctx, binMeta); - if (fileIOFactory != null) { - try (final FileIO out = fileIOFactory.create(file)) { - int left = marshalled.length; - while ((left -= out.writeFully(marshalled, 0, Math.min(marshalled.length, left))) > 0) - ; + try (final FileIO out = fileIOFactory.create(file)) { + int left = marshalled.length; + while ((left -= out.writeFully(marshalled, 0, Math.min(marshalled.length, left))) > 0) + ; - out.force(); - } - } - else { - try (FileOutputStream out = new FileOutputStream(file, false)) { - out.write(marshalled); - } + out.force(); } } catch (Exception e) { @@ -130,7 +120,7 @@ void writeMetadata(BinaryMetadata binMeta) { ctx.failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e)); - throw new RuntimeException(msg ,e); + throw new RuntimeException(msg, e); } } From a20c71871c9b69552085671327b6228ac676a2f8 Mon Sep 17 00:00:00 2001 From: a-polyakov Date: Fri, 21 Dec 2018 17:36:44 +0300 Subject: [PATCH 5/6] IGNITE-9120 Metadata writer does not propagate error to failure handler. Work on the remark part 4. --- .../cache/binary/BinaryMetadataFileStore.java | 1 - .../IgnitePdsNoSpaceLeftOnDeviceTest.java | 13 +++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java index fa0aa36f015ea..4cc6bb679d126 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java @@ -18,7 +18,6 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.util.concurrent.ConcurrentMap; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java index 55698a2e35343..d53a344b6018f 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsNoSpaceLeftOnDeviceTest.java @@ -50,7 +50,7 @@ public class IgnitePdsNoSpaceLeftOnDeviceTest extends GridCommonAbstractTest { final DataStorageConfiguration dataStorageConfiguration = new DataStorageConfiguration(); - dataStorageConfiguration.getDefaultDataRegionConfiguration().setPersistenceEnabled(true).setMaxSize(1<<24); + dataStorageConfiguration.getDefaultDataRegionConfiguration().setPersistenceEnabled(true).setMaxSize(1 << 24); dataStorageConfiguration.setFileIOFactory(new FailingFileIOFactory()); cfg.setDataStorageConfiguration(dataStorageConfiguration); @@ -75,6 +75,8 @@ public class IgnitePdsNoSpaceLeftOnDeviceTest extends GridCommonAbstractTest { /** {@inheritDoc} */ @Override protected void afterTest() throws Exception { + stopAllGrids(); + cleanPersistenceDir(); } @@ -109,8 +111,6 @@ public void testWhileWritingBinaryMetadataFile() throws Exception { } waitForTopology(1); - - stopAllGrids(); } /** @@ -130,11 +130,11 @@ private static class FailingFileIOFactory implements FileIOFactory { /** * Node ConsistentId for which the error will be generated */ - private static final AtomicReference unluckyConsistentId =new AtomicReference<>(); + private static final AtomicReference unluckyConsistentId = new AtomicReference<>(); /** {@inheritDoc} */ @Override public FileIO create(File file, OpenOption... modes) throws IOException { - if (unluckyConsistentId.get()!=null + if (unluckyConsistentId.get() != null && file.getAbsolutePath().contains(unluckyConsistentId.get()) && file.getAbsolutePath().contains(StandaloneGridKernalContext.BINARY_META_FOLDER)) throw new IOException("No space left on device"); @@ -144,9 +144,10 @@ private static class FailingFileIOFactory implements FileIOFactory { /** * Set node ConsistentId for which the error will be generated + * * @param unluckyConsistentId Node ConsistentId. */ - public static void setUnluckyConsistentId(String unluckyConsistentId){ + public static void setUnluckyConsistentId(String unluckyConsistentId) { FailingFileIOFactory.unluckyConsistentId.set(unluckyConsistentId); } } From d34c90d78344e483eb6dda2a64211e05161f435e Mon Sep 17 00:00:00 2001 From: a-polyakov Date: Mon, 24 Dec 2018 19:22:22 +0300 Subject: [PATCH 6/6] IGNITE-9120 Metadata writer does not propagate error to failure handler. Work on the remark part 5. --- .../processors/cache/binary/BinaryMetadataFileStore.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java index 4cc6bb679d126..bee40994bc63b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataFileStore.java @@ -20,6 +20,7 @@ import java.io.FileInputStream; import java.util.concurrent.ConcurrentMap; import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.IgniteException; import org.apache.ignite.IgniteLogger; import org.apache.ignite.failure.FailureContext; import org.apache.ignite.failure.FailureType; @@ -119,7 +120,7 @@ void writeMetadata(BinaryMetadata binMeta) { ctx.failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e)); - throw new RuntimeException(msg, e); + throw new IgniteException(msg, e); } }