diff --git a/sirepo/job_api.py b/sirepo/job_api.py index 4728438901..d07257e0a4 100644 --- a/sirepo/job_api.py +++ b/sirepo/job_api.py @@ -223,6 +223,8 @@ async def api_sbatchLogin(self): @sirepo.quest.Spec("require_plan") async def api_sbatchLoginStatus(self): + if sirepo.job.SBATCH not in simulation_db.JOB_RUN_MODE_MAP: + raise AssertionError(f"{sirepo.job.SBATCH} jobRunMode is not enabled") return await self._request_api( _request_content=self._request_content( PKDict(computeJobHash="unused", jobRunMode=sirepo.job.SBATCH), diff --git a/sirepo/package_data/static/js/sirepo.js b/sirepo/package_data/static/js/sirepo.js index a00344e99c..ede3d7d3b8 100644 --- a/sirepo/package_data/static/js/sirepo.js +++ b/sirepo/package_data/static/js/sirepo.js @@ -3927,6 +3927,12 @@ SIREPO.app.factory('persistentSimulation', function(simulationQueue, appState, a }; state.resetSimulation = function() { + // ensure the selected jobRunMode is present + const m = appState.models[state.model]; + if (m && m.jobRunMode && ! (m.jobRunMode in authState.jobRunModeMap)) { + m.jobRunMode = 'parallel'; + appState.saveQuietly(state.model); + } setSimulationStatus({state: 'missing'}); frameCache.setFrameCount(0); appState.whenModelsLoaded(controller.simScope, runStatus);