[ 
https://issues.apache.org/jira/browse/IGNITE-16194?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Pavlov updated IGNITE-16194:
-----------------------------------
    Labels: ise  (was: )

> Snapshot restore operation fails if any baseline node doesn't contain 
> metadata for the specified snapshot.
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-16194
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16194
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.11, 2.12
>            Reporter: Pavel Pereslegin
>            Assignee: Pavel Pereslegin
>            Priority: Blocker
>              Labels: ise
>             Fix For: 2.12
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Snapshot restore operation fails if any baseline node doesn't contain 
> metadata for the specified snapshot. Current tests do not reproduce this 
> problem because they share the same working folder for the snapshots. 
> Reproducer (uses dedicated work dir):
> {code:java}
> public class IgniteSnapshotRestoreWithNewNodeTest extends 
> AbstractSnapshotSelfTest {
>     private static final String DEDICATED_CLUSTER_PREFIX = "tmp-cluster-";
>     @Test
>     public void testRestoreOnNewTopologyWithDedicatedSnapshotLocation() 
> throws Exception {
>         String workDir = U.defaultWorkDirectory();
>         IgniteEx ignite = startGridsWithCache(2, CACHE_KEYS_RANGE, valBuilder,
>             (id, cfg) -> Paths.get(workDir, DEDICATED_CLUSTER_PREFIX + 
> U.maskForFileName(cfg.getIgniteInstanceName())).toString(), dfltCacheCfg);
>         ignite.snapshot().createSnapshot(SNAPSHOT_NAME).get(TIMEOUT);
>         ignite.destroyCache(DEFAULT_CACHE_NAME);
>         awaitPartitionMapExchange();
>         // Start new node with an empty snapshots work directory.
>         
> startGrid(optimize(getConfiguration(getTestIgniteInstanceName(2)).setCacheConfiguration()));
>         resetBaselineTopology();
>         ignite.snapshot().restoreSnapshot(SNAPSHOT_NAME, null).get(TIMEOUT); 
> // fails here
>         for (Ignite grid : G.allGrids())
>             assertCacheKeys(grid.cache(DEFAULT_CACHE_NAME), CACHE_KEYS_RANGE);
>     }
>     @Parameterized.Parameters(name = "Encryption is disabled")
>     public static Iterable<Boolean> disabledEncryption() {
>         return Collections.singletonList(false);
>     }
>     /** {@inheritDoc} */
>     @After
>     @Override public void afterTestSnapshot() throws Exception {
>         super.afterTestSnapshot();
>         try (DirectoryStream<Path> ds = 
> Files.newDirectoryStream(Paths.get(U.defaultWorkDirectory()),
>             path -> Files.isDirectory(path) && 
> path.getFileName().toString().toLowerCase().startsWith(DEDICATED_CLUSTER_PREFIX))
>         ) {
>             for (Path dir : ds)
>                 U.delete(dir);
>         }
>     }
> }
> {code}
> Log output
> {noformat}
> class org.apache.ignite.compute.ComputeUserUndeclaredException: Failed to 
> reduce job results due to undeclared user exception 
> [task=org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataCollectorTask@4bb91e74,
>  err=class 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotVerifyException:
>  /home/user/ignite/source/work/snapshots/testSnapshot]
>       at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1188)
>       at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:976)
>       at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.processJobExecuteResponse(GridTaskProcessor.java:1155)
>       at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor$JobMessageListener.onMessage(GridTaskProcessor.java:1390)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1907)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1528)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$5300(GridIoManager.java:242)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1421)
>       at 
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: class 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotVerifyException:
>  /home/user/ignite/source/work/snapshots/testSnapshot
>       at 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataCollectorTask.reduce(SnapshotMetadataCollectorTask.java:105)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataCollectorTask.reduce(SnapshotMetadataCollectorTask.java:39)
>       at 
> org.apache.ignite.internal.processors.task.GridTaskWorker$6.call(GridTaskWorker.java:1149)
>       at 
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7276)
>       at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1147)
>       ... 11 more
> Caused by: class org.apache.ignite.IgniteException: 
> /home/user/ignite/source/work/snapshots/testSnapshot
>       at 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.readSnapshotMetadatas(IgniteSnapshotManager.java:1253)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataCollectorTask$1.execute(SnapshotMetadataCollectorTask.java:59)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMetadataCollectorTask$1.execute(SnapshotMetadataCollectorTask.java:53)
>       at 
> org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:601)
>       at 
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7276)
>       at 
> org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:595)
>       at 
> org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:522)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>       at 
> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1305)
>       at 
> org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:2155)
>       ... 8 more
> Caused by: java.nio.file.NoSuchFileException: 
> /home/user/ignite/source/work/snapshots/testSnapshot
>       at 
> sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
>       at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
>       at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
>       at 
> sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:427)
>       at java.nio.file.Files.newDirectoryStream(Files.java:457)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.readSnapshotMetadatas(IgniteSnapshotManager.java:1246)
>       ... 17 more
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to