geosolutions-it / geonode-project

A django template project for creating custom GeoNode projects.
http://geonode.org
0 stars 5 forks source link

B/R - Geoserver backup fails in docker-compose #35

Closed bieganowski closed 3 years ago

bieganowski commented 3 years ago

When setting up Geonode using docker-compose (https://github.com/GeoNode/geonode/blob/master/docker-compose.yml), and performing Backup/Restore procedures on a fresh instance, the restore procedure always fails on Geoserver restoration, with Exception occurred while storing GeoServer globals and services settings! exception.

When executing Backup and Restore manually on the Geoserver, before triggering Geonode's B/R, later Geonode's B/R are finished successfully.

Test of Geonode's B/R was performed as follows:

  1. loading a layer in Geonode (UI)
  2. creating backup directory mkdir /geoserver_data/data/backup
  3. executing backup with python manage.py backup -c /usr/src/geonode/geonode/br/management/commands/settings_docker_sample.ini --backup-dir /geoserver_data/data/backup
  4. restoring the backup python manage.py restore -c /usr/src/geonode/geonode/br/management/commands/settings_docker_sample.ini --backup-file /geoserver_data/data/backup/<generated-archive>

The full log from restoration:

root@ed75d19223ac:/usr/src/geonode# python manage.py restore -c /usr/src/geonode/geonode/br/management/commands/settings_docker_sample.ini --backup-file /geoserver_data/data/backup/2021-01-14_101041.zip
Before proceeding with the Restore, please ensure that:
 1. The backend (DB or whatever) is accessible and you have rights
 2. The GeoServer is up and running and reachable from this machine
WARNING: The restore will overwrite ALL GeoNode data. You want to proceed? [n]|y: y
[Sanity Check] Full Write Access to '/geoserver_data/data/backup/tmp2cd9' ...
[Sanity Check] Full Write Access to '/mnt/volumes/statics/uploaded/' ...
[Sanity Check] Full Write Access to '/mnt/volumes/statics/static/' ...
[Sanity Check] Full Write Access to '/usr/src/geonode/geonode/static' ...
[Sanity Check] Full Write Access to '/usr/src/geonode/geonode/templates' ...
[Sanity Check] Full Write Access to '/usr/src/geonode/geonode/locale' ...
[Sanity Check] Full Write Access to '/geoserver_data/data/backup/tmp2cd9/2021-01-14_101041' ...
Restoring 'GeoServer Catalog [http://geoserver:8080/geoserver/]' from '/geoserver_data/data/backup/tmp2cd9/2021-01-14_101041/geoserver_catalog.zip'.
STARTED - 3/11
FAILED - 8/11
Traceback (most recent call last):
  File "manage.py", line 29, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/src/geonode/geonode/br/management/commands/restore.py", line 162, in handle
    self.execute_restore(**options)
  File "/usr/src/geonode/geonode/br/management/commands/restore.py", line 305, in execute_restore
    raise exception
  File "/usr/src/geonode/geonode/br/management/commands/restore.py", line 286, in execute_restore
    self.restore_geoserver_backup(config, settings, target_folder,
  File "/usr/src/geonode/geonode/br/management/commands/restore.py", line 701, in restore_geoserver_backup
    raise ValueError(error_backup.format(url, r.status_code, r.text))
ValueError: Could not successfully restore GeoServer catalog [http://geoserver:8080/geoserver/rest/br/restore/]: 200 - {"restore":{"totalNumberOfSteps":11,"execution":{"id":1,"version":2,"stepExecutions":{"@class":"java.util.concurrent.CopyOnWriteArraySet","step":[{"name":"restoreNamespaceInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":1,"writeCount":1,"failureExceptions":""},{"name":"restoreWorkspaceInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":1,"writeCount":1,"failureExceptions":""},{"name":"restoreStoreInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":1,"writeCount":1,"failureExceptions":""},{"name":"restoreResourceInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":1,"writeCount":1,"failureExceptions":""},{"name":"restoreStyleInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":7,"writeCount":7,"failureExceptions":""},{"name":"restoreLayerInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":1,"writeCount":1,"failureExceptions":""},{"name":"restoreLayerGroupInfos","status":"COMPLETED","exitStatus":{"exitCode":"COMPLETED","exitDescription":""},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":0,"writeCount":0,"failureExceptions":""},{"name":"restoreGeoServerInfos","status":"FAILED","exitStatus":{"exitCode":"FAILED","exitDescription":"java.util.concurrent.ExecutionException: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat java.util.concurrent.FutureTask.report(FutureTask.java:122)\n\tat java.util.concurrent.FutureTask.get(FutureTask.java:192)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet.execute(AbstractCatalogBackupRestoreTasklet.java:229)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:406)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:330)\n\tat org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:271)\n\tat org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:81)\n\tat org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374)\n\tat org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)\n\tat org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:257)\n\tat org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:200)\n\tat org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)\n\tat org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)\n\tat org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:67)\n\tat org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:169)\n\tat org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:144)\n\tat org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:134)\n\tat org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:306)\n\tat org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135)\n\tat org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:275)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:120)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:210)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:206)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\t... 1 more\nCaused by: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:345)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:117)\n\t... 4 more\nCaused by: java.lang.IllegalStateException: File (not a directory) at layergroups\n\tat org.geoserver.platform.resource.FileSystemResourceStore$FileSystemResource.dir(FileSystemResourceStore.java:393)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.hardRestore(CatalogBackupRestoreTasklet.java:437)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:337)\n\t... 5 more\n"},"startTime":"1\/14\/21 10:11 AM","endTime":"1\/14\/21 10:11 AM","lastUpdated":"1\/14\/21 10:11 AM","parameters":{"BK_SKIP_SETTINGS":true,"BK_SKIP_SECURITY":true,"BK_CLEANUP_TEMP":true,"BK_BEST_EFFORT":false,"exclude.file.path":"","job.execution.name":"restoreJob","input.file.path":"file:\/\/\/geoserver_data\/data\/temp\/tmp64b14a39-50a1-43ff-96b1-c5f09bee192f","time":1610619103960},"readCount":0,"writeCount":0,"failureExceptions":{"SEVERE":"org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\njava.util.concurrent.ExecutionException: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat java.util.concurrent.FutureTask.report(FutureTask.java:122)\n\tat java.util.concurrent.FutureTask.get(FutureTask.java:192)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet.execute(AbstractCatalogBackupRestoreTasklet.java:229)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:406)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:330)\n\tat org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:271)\n\tat org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:81)\n\tat org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374)\n\tat org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)\n\tat org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)\n\tat org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:257)\n\tat org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:200)\n\tat org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)\n\tat org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)\n\tat org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:67)\n\tat org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:169)\n\tat org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:144)\n\tat org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:134)\n\tat org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:306)\n\tat org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135)\n\tat org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:275)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:120)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:210)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:206)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\t... 1 more\nCaused by: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:345)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:117)\n\t... 4 more\nCaused by: java.lang.IllegalStateException: File (not a directory) at layergroups\n\tat org.geoserver.platform.resource.FileSystemResourceStore$FileSystemResource.dir(FileSystemResourceStore.java:393)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.hardRestore(CatalogBackupRestoreTasklet.java:437)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:337)\n\t... 5 more\n\nException occurred while storing GeoServer globals and services settings!\norg.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:120)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:210)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:206)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:345)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:117)\n\t... 4 more\nCaused by: java.lang.IllegalStateException: File (not a directory) at layergroups\n\tat org.geoserver.platform.resource.FileSystemResourceStore$FileSystemResource.dir(FileSystemResourceStore.java:393)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.hardRestore(CatalogBackupRestoreTasklet.java:437)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:337)\n\t... 5 more\n\nException occurred while storing GeoServer globals and services settings!\norg.springframework.batch.core.UnexpectedJobExecutionException: Exception occurred while storing GeoServer globals and services settings!\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:345)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:117)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:210)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:206)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.lang.IllegalStateException: File (not a directory) at layergroups\n\tat org.geoserver.platform.resource.FileSystemResourceStore$FileSystemResource.dir(FileSystemResourceStore.java:393)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.hardRestore(CatalogBackupRestoreTasklet.java:437)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:337)\n\t... 5 more\n\nFile (not a directory) at layergroups\njava.lang.IllegalStateException: File (not a directory) at layergroups\n\tat org.geoserver.platform.resource.FileSystemResourceStore$FileSystemResource.dir(FileSystemResourceStore.java:393)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.hardRestore(CatalogBackupRestoreTasklet.java:437)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doRestore(CatalogBackupRestoreTasklet.java:337)\n\tat org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.doExecute(CatalogBackupRestoreTasklet.java:117)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:210)\n\tat org.geoserver.backuprestore.tasklet.AbstractCatalogBackupRestoreTasklet$4.call(AbstractCatalogBackupRestoreTasklet.java:206)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.lang.Thread.run(Thread.java:748)\n"}}]},"status":"FAILED","startTime":"2021-01-14 10:11:43.963 UTC","createTime":"2021-01-14 10:11:43.961 UTC","endTime":"2021-01-14 10:11:45.420 UTC","lastUpdated":"2021-01-14 10:11:45.449 UTC","exitStatus":{"exitCode":"FAILED","exitDescription":""},"progress":"8\/11"},"options":{"@class":"synchList","option":["BK_SKIP_SECURITY=true","BK_BEST_EFFORT=false","job.execution.name=restoreJob","exclude.file.path=","BK_SKIP_SETTINGS=true","BK_CLEANUP_TEMP=true"]},"archiveFile":{"@class":"resource","$":"\/geoserver_data\/data\/backup\/tmp2cd9\/2021-01-14_101041\/geoserver_catalog.zip"}}}