diff --git a/dashboard/src/components/app/Storage.vue b/dashboard/src/components/app/Storage.vue index a0e91162d..b355b4a4d 100644 --- a/dashboard/src/components/app/Storage.vue +++ b/dashboard/src/components/app/Storage.vue @@ -225,7 +225,7 @@ onMounted(async () => {
- + diff --git a/dashboard/src/views/AppConfigureView.vue b/dashboard/src/views/AppConfigureView.vue index b7759b38f..226df35a9 100644 --- a/dashboard/src/views/AppConfigureView.vue +++ b/dashboard/src/views/AppConfigureView.vue @@ -151,7 +151,7 @@ function isViewEnabled(view, errorState) { } else if (view === 'resources') { return errorState === ISTATES.PENDING_RESIZE || errorState === ISTATES.PENDING_RECREATE_CONTAINER; } else if (view === 'storage') { - return errorState === ISTATES.PENDING_DATA_DIR_MIGRATION || errorState === ISTATES.PENDING_RECREATE_CONTAINER; + return true; // allow in all states because a volume error can happen at any time } else if (view === 'services') { return errorState === ISTATES.PENDING_SERVICES_CHANGE; } else if (view === 'email') { diff --git a/src/apps.js b/src/apps.js index f943ceaec..e410a1af8 100644 --- a/src/apps.js +++ b/src/apps.js @@ -1752,8 +1752,8 @@ function checkAppState(app, state) { // allow task to be called again if that was the errored task if (app.error.installationState === state) return null; - // allow uninstall from any state - if (state !== ISTATE_PENDING_UNINSTALL && state !== ISTATE_PENDING_RESTORE && state !== ISTATE_PENDING_IMPORT) return new BoxError(BoxError.BAD_STATE, 'Not allowed in error state'); + // allow uninstall, restore, import and recreate (for mount/device/env edits) from any error state + if (state !== ISTATE_PENDING_UNINSTALL && state !== ISTATE_PENDING_RESTORE && state !== ISTATE_PENDING_IMPORT && state !== ISTATE_PENDING_RECREATE_CONTAINER) return new BoxError(BoxError.BAD_STATE, 'Not allowed in error state'); } if (app.runState === RSTATE_STOPPED) {