[ 
https://issues.apache.org/jira/browse/IGNITE-15450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17481846#comment-17481846
 ] 

Pavel Pereslegin edited comment on IGNITE-15450 at 2/17/22, 6:01 PM:
---------------------------------------------------------------------

The final solution is to add a "--sync" option to wait for the entire operation 
to complete.

*Create*
{noformat}
  Create cluster snapshot:
    control.(sh|bat) --snapshot create snapshot_name [--sync]

    Parameters:
      snapshot_name  - Snapshot name.
      sync           - Run the operation synchronously, the command will wait 
for the entire operation to complete. Otherwise, it will be performed in the 
background, and the command will immediately return control.
{noformat}

*Restore*
{noformat}
  Restore snapshot:
    control.(sh|bat) --snapshot restore snapshot_name --start [--groups 
group1,...groupN] [--sync]

    Parameters:
      snapshot_name     - Snapshot name.
      group1,...groupN  - Cache group names.
      sync              - Run the operation synchronously, the command will 
wait for the entire operation to complete. Otherwise, it will be performed in 
the background, and the command will immediately return control.
{noformat}

Example of an error output in the console if cache exists:
{noformat}
Command [SNAPSHOT] started
Arguments: --snapshot restore snapshot_02052020 --start --sync --yes 
--------------------------------------------------------------------------------
Unable to restore cache group - directory is not empty. Cache group should be 
destroyed manually before perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
Command [SNAPSHOT] finished with code: 4
Error stack trace:
class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1114)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.convertException(IgniteFutureImpl.java:186)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.get(IgniteFutureImpl.java:155)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:70)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:52)
        at org.apache.ignite.internal.visor.VisorJob.execute(VisorJob.java:69)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
        at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7334)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:674)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:540)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:860)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:590)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:570)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:223)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsync(GridTaskCommandHandler.java:162)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest0(GridRestProcessor.java:317)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest(GridRestProcessor.java:303)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.access$000(GridRestProcessor.java:108)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor$2.body(GridRestProcessor.java:189)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        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.IgniteCheckedException: Unable to restore 
cache group - directory is not empty. Cache group should be destroyed manually 
before perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepareContext(SnapshotRestoreProcess.java:683)
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepare(SnapshotRestoreProcess.java:586)
        at 
org.apache.ignite.internal.util.distributed.DistributedProcess.lambda$new$2(DistributedProcess.java:149)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:772)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.access$7500(GridDiscoveryManager.java:559)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4$NotificationTask.run(GridDiscoveryManager.java:994)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2852)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2890)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        ... 1 more

Control utility has completed execution at: 2022-02-17T20:58:21.129
Execution time: 203 ms
{noformat}



was (Author: xtern):
The final solution is to add a "--sync" option to wait for the entire operation 
to complete.

*Create*
{noformat}
  Create cluster snapshot:
    control.(sh|bat) --snapshot create snapshot_name [--sync]

    Parameters:
      snapshot_name  - Snapshot name.
      sync           - Run the operation synchronously, the command will wait 
for the entire operation to complete. Otherwise, it will be performed in the 
background, and the command will immediately return control.
{noformat}

*Restore*
{noformat}
  Restore snapshot:
    control.(sh|bat) --snapshot restore snapshot_name --start [--groups 
group1,...groupN] [--sync]

    Parameters:
      snapshot_name     - Snapshot name.
      group1,...groupN  - Cache group names.
      sync              - Run the operation synchronously, the command will 
wait for the entire operation to complete. Otherwise, it will be performed in 
the background, and the command will immediately return control.
{noformat}

Example of error message if cache exists: 
_class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest0/cache-test-cache]]_

Full console output for this type of error:
{noformat}
Command [SNAPSHOT] started
Arguments: --snapshot restore snapshot_02052020 --start --sync --yes 
--------------------------------------------------------------------------------
Failed to perform operation.
Failed to reduce job results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]],
 trace=class org.apache.ignite.IgniteCheckedException: Failed to reduce job 
results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]]
        at 
org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7836)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:260)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:172)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:259)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:253)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:253)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsync(GridTaskCommandHandler.java:162)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest0(GridRestProcessor.java:317)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest(GridRestProcessor.java:303)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.access$000(GridRestProcessor.java:108)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor$2.body(GridRestProcessor.java:189)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        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.compute.ComputeUserUndeclaredException: 
Failed to reduce job results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]]
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1197)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:985)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processDelayedResponses(GridTaskWorker.java:721)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:546)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:860)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:590)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:570)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:223)
        ... 9 more
Caused by: class org.apache.ignite.IgniteException: Unable to restore cache 
group - directory is not empty. Cache group should be destroyed manually before 
perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1114)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.convertException(IgniteFutureImpl.java:186)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.get(IgniteFutureImpl.java:155)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:71)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:53)
        at org.apache.ignite.internal.visor.VisorJob.execute(VisorJob.java:69)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
        at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7334)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:674)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:540)
        ... 14 more
Caused by: class org.apache.ignite.IgniteCheckedException: Unable to restore 
cache group - directory is not empty. Cache group should be destroyed manually 
before perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepareContext(SnapshotRestoreProcess.java:683)
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepare(SnapshotRestoreProcess.java:586)
        at 
org.apache.ignite.internal.util.distributed.DistributedProcess.lambda$new$2(DistributedProcess.java:149)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:772)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.access$7500(GridDiscoveryManager.java:559)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4$NotificationTask.run(GridDiscoveryManager.java:994)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2852)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2890)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        ... 1 more

Failed to reduce job results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]],
 trace=class org.apache.ignite.IgniteCheckedException: Failed to reduce job 
results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]]
        at 
org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7836)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:260)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:172)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:259)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:253)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:253)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsync(GridTaskCommandHandler.java:162)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest0(GridRestProcessor.java:317)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest(GridRestProcessor.java:303)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.access$000(GridRestProcessor.java:108)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor$2.body(GridRestProcessor.java:189)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        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.compute.ComputeUserUndeclaredException: 
Failed to reduce job results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]]
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1197)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:985)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processDelayedResponses(GridTaskWorker.java:721)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:546)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:860)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:590)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:570)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:223)
        ... 9 more
Caused by: class org.apache.ignite.IgniteException: Unable to restore cache 
group - directory is not empty. Cache group should be destroyed manually before 
perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1114)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.convertException(IgniteFutureImpl.java:186)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.get(IgniteFutureImpl.java:155)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:71)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:53)
        at org.apache.ignite.internal.visor.VisorJob.execute(VisorJob.java:69)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
        at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7334)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:674)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:540)
        ... 14 more
Caused by: class org.apache.ignite.IgniteCheckedException: Unable to restore 
cache group - directory is not empty. Cache group should be destroyed manually 
before perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepareContext(SnapshotRestoreProcess.java:683)
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepare(SnapshotRestoreProcess.java:586)
        at 
org.apache.ignite.internal.util.distributed.DistributedProcess.lambda$new$2(DistributedProcess.java:149)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:772)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.access$7500(GridDiscoveryManager.java:559)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4$NotificationTask.run(GridDiscoveryManager.java:994)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2852)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2890)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        ... 1 more

Command [SNAPSHOT] finished with code: 4
Error stack trace:
class org.apache.ignite.internal.client.GridClientException: Failed to handle 
request: [req=EXE, 
taskName=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask, 
params=[VisorTaskArgument [debug=false]], err=Failed to reduce job results due 
to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]],
 trace=class org.apache.ignite.IgniteCheckedException: Failed to reduce job 
results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]]
        at 
org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7836)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:260)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:172)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:259)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:253)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:253)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsync(GridTaskCommandHandler.java:162)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest0(GridRestProcessor.java:317)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest(GridRestProcessor.java:303)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.access$000(GridRestProcessor.java:108)
        at 
org.apache.ignite.internal.processors.rest.GridRestProcessor$2.body(GridRestProcessor.java:189)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        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.compute.ComputeUserUndeclaredException: 
Failed to reduce job results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask@1fd7cb69,
 err=class org.apache.ignite.IgniteException: Unable to restore cache group - 
directory is not empty. Cache group should be destroyed manually before perform 
restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]]
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1197)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:985)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processDelayedResponses(GridTaskWorker.java:721)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:546)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:860)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:590)
        at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:570)
        at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:223)
        ... 9 more
Caused by: class org.apache.ignite.IgniteException: Unable to restore cache 
group - directory is not empty. Cache group should be destroyed manually before 
perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1114)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.convertException(IgniteFutureImpl.java:186)
        at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.get(IgniteFutureImpl.java:155)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:71)
        at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotRestoreTask$VisorSnapshotStartRestoreJob.run(VisorSnapshotRestoreTask.java:53)
        at org.apache.ignite.internal.visor.VisorJob.execute(VisorJob.java:69)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
        at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7334)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:674)
        at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:540)
        ... 14 more
Caused by: class org.apache.ignite.IgniteCheckedException: Unable to restore 
cache group - directory is not empty. Cache group should be destroyed manually 
before perform restore operation [group=test-cache, 
dir=/home/xtern/src/java/ignite/source/work/db/gridCommandHandlerTest1/cache-test-cache]
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepareContext(SnapshotRestoreProcess.java:683)
        at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotRestoreProcess.prepare(SnapshotRestoreProcess.java:586)
        at 
org.apache.ignite.internal.util.distributed.DistributedProcess.lambda$new$2(DistributedProcess.java:149)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:772)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.access$7500(GridDiscoveryManager.java:559)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4$NotificationTask.run(GridDiscoveryManager.java:994)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2852)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2890)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        ... 1 more
]
        at 
org.apache.ignite.internal.client.impl.connection.GridClientNioTcpConnection.handleClientResponse(GridClientNioTcpConnection.java:632)
        at 
org.apache.ignite.internal.client.impl.connection.GridClientNioTcpConnection.handleResponse(GridClientNioTcpConnection.java:563)
        at 
org.apache.ignite.internal.client.impl.connection.GridClientConnectionManagerAdapter$NioListener.onMessage(GridClientConnectionManagerAdapter.java:691)
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
        at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onMessageReceived(GridNioCodecFilter.java:116)
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
        at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onMessageReceived(GridNioServer.java:3734)
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onMessageReceived(GridNioFilterChain.java:175)
        at 
org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:1211)
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2508)
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2273)
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at java.lang.Thread.run(Thread.java:748)

Control utility has completed execution at: 2022-02-17T15:46:29.859
Execution time: 276 ms
{noformat}


> Add special option to run snapshot commands (create/restore) synchronously.
> ---------------------------------------------------------------------------
>
>                 Key: IGNITE-15450
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15450
>             Project: Ignite
>          Issue Type: Improvement
>          Components: control.sh
>            Reporter: Pavel Pereslegin
>            Assignee: Pavel Pereslegin
>            Priority: Major
>              Labels: iep-43, ise
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> The process of restoring a snapshot fails if at least one of the restored 
> caches already exists. 
>  However, when starting this operation via control.sh, the command returns a 
> successful startup status, which can be confusing for users.
> We can improve this behavior by adding a separate check for existing caches 
> when starting the restore operation and displaying a user-friendly error 
> message.
> An *alternative* option is to start a snapshot restore operation 
> synchronously.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to