diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java index 2192eca6fbde654cfd458042136f067d8eb58d11..4a0ca929aad350c800592269af9b4cd5bf617923 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java @@ -612,7 +612,7 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat * Subclasses can override and implement their own handling logic. */ public void didPreRegistration(DataSetRegistrationService<T> service, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder persistentMapHolder) { } @@ -622,7 +622,7 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat * Subclasses can override and implement their own handling logic. */ public void didPostRegistration(DataSetRegistrationService<T> service, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder persistentMapHolder) { } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationPersistentMap.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationPersistentMap.java index 7eb6b56f2cc33c5fbf37e9790e80e5952cf4b7a9..3cb76667fa9f752baa3d60be04ebfaf9052a37d2 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationPersistentMap.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationPersistentMap.java @@ -15,10 +15,6 @@ import java.util.Set; */ public class DataSetRegistrationPersistentMap implements Serializable { - public static interface IHolder - { - DataSetRegistrationPersistentMap getRegistrationContext(); - } private static final long serialVersionUID = 1L; diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java index fc08a31eda635cd9bbf9dd0df0f5a4d41bc0e5cb..b7efb6781c54eb72577fef5621ea090c17c4a649 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java @@ -269,13 +269,13 @@ public class DataSetRegistrationService<T extends DataSetInformation> implements } @Override - public void executePreRegistration(DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + public void executePreRegistration(DataSetRegistrationContext.IHolder persistentMapHolder) { registrator.didPreRegistration(this, persistentMapHolder); } @Override - public void executePostRegistration(DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + public void executePostRegistration(DataSetRegistrationContext.IHolder persistentMapHolder) { registrator.didPostRegistration(this, persistentMapHolder); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java index 7a1f4bf0cb3533a75b295130fd25e606bed9b47c..fcaa2071c29038dbaee1e26783c27de5c43d1fcb 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageAlgorithmRunner.java @@ -27,8 +27,8 @@ import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.etlserver.DssRegistrationLogger; -import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; import ch.systemsx.cisd.etlserver.IStorageProcessorTransactional.IStorageProcessorTransaction; +import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; import ch.systemsx.cisd.etlserver.registrator.IDataSetOnErrorActionDecision.ErrorType; import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.DataSetRegistrationTransaction; import ch.systemsx.cisd.etlserver.registrator.monitor.DssRegistrationHealthMonitor; @@ -78,10 +78,10 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> public static interface IPrePostRegistrationHook<T extends DataSetInformation> { public void executePreRegistration( - DataSetRegistrationPersistentMap.IHolder persistentMapHolder); +DataSetRegistrationContext.IHolder persistentMapHolder); public void executePostRegistration( - DataSetRegistrationPersistentMap.IHolder persistentMapHolder); +DataSetRegistrationContext.IHolder persistentMapHolder); } static private final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, @@ -102,7 +102,7 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> private final IRollbackStack rollbackStack; - private final DataSetRegistrationPersistentMap.IHolder persistentMapHolder; + private final DataSetRegistrationContext.IHolder persistentMapHolder; private final IPrePostRegistrationHook<T> postPreRegistrationHooks; @@ -155,7 +155,7 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> DssRegistrationLogger dssRegistrationLog, IEncapsulatedOpenBISService openBISService, IPrePostRegistrationHook<T> postPreRegistrationHooks, IDataSetStorageRecoveryManager storageRecoveryManager, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder, + DataSetRegistrationContext.IHolder persistentMapHolder, TopLevelDataSetRegistratorGlobalState globalState) { this.dataSetStorageAlgorithms = @@ -820,7 +820,7 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> return incomingDataSetFile; } - public DataSetRegistrationPersistentMap getPersistentMap() + public DataSetRegistrationContext getRegistrationContext() { return persistentMapHolder.getRegistrationContext(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java index 80251896d40c56fb6cdbdafa5df531110bfaf4a2..0c42d383930cf7c0c2bc635e1dbc2797e0ae2217 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java @@ -312,7 +312,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends @Override public void didPreRegistration(DataSetRegistrationService<T> service, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder persistentMapHolder) { super.didPreRegistration(service, persistentMapHolder); invokePreRegistrationFunction(service, persistentMapHolder); @@ -320,7 +320,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends @Override public void didPostRegistration(DataSetRegistrationService<T> service, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder persistentMapHolder) { super.didPostRegistration(service, persistentMapHolder); invokePostRegistrationFunction(service, persistentMapHolder); @@ -439,7 +439,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends } private void invokePreRegistrationFunction(DataSetRegistrationService<T> service, - DataSetRegistrationPersistentMap.IHolder persistentMapholder) + DataSetRegistrationContext.IHolder persistentMapholder) { PythonInterpreter interpreter = getInterpreterFromService(service); PyFunction function = @@ -452,7 +452,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends } private void invokePostRegistrationFunction(DataSetRegistrationService<T> service, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder persistentMapHolder) { PyFunction function = tryGetPostRegistrationFunction(service); if (null != function) @@ -513,7 +513,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends } private void invokeTransactionFunctionWithContext(PyFunction function, - DataSetRegistrationPersistentMap.IHolder persistentMapHolder, Object... additionalArgs) + DataSetRegistrationContext.IHolder persistentMapHolder, Object... additionalArgs) { if (additionalArgs.length > 0) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java index b6fc86d5f5bc3465dd910e4ce701e59089eecdb2..75156ceae77c51cc5459fdcdae358cd299a834fc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java @@ -22,7 +22,7 @@ import net.lemnik.eodsql.DynamicTransactionQuery; import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; import ch.systemsx.cisd.etlserver.registrator.AbstractOmniscientTopLevelDataSetRegistrator.OmniscientTopLevelDataSetRegistratorState; -import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap; +import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationContext; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.authorization.IAuthorizationService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; @@ -278,7 +278,7 @@ public interface IDataSetRegistrationTransaction * * @return The context, a hash-map-like object. */ - DataSetRegistrationPersistentMap getRegistrationContext(); + DataSetRegistrationContext getRegistrationContext(); /** * Returns the service registrator context. diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java index ffc3dc5b49ad4bd9abd73358b164a73eb2d3d513..0c76ea2ccb3f055a34e6d016312ee590e2d87029 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java @@ -34,6 +34,7 @@ import ch.systemsx.cisd.etlserver.DssRegistrationLogger; import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; import ch.systemsx.cisd.etlserver.registrator.AbstractOmniscientTopLevelDataSetRegistrator.OmniscientTopLevelDataSetRegistratorState; import ch.systemsx.cisd.etlserver.registrator.DataSetFile; +import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationContext; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationDetails; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationService; @@ -91,7 +92,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; public class DataSetRegistrationTransaction<T extends DataSetInformation> implements IDataSetRegistrationTransaction, DataSetStorageAlgorithmRunner.IRollbackDelegate<T>, DataSetStorageAlgorithmRunner.IDataSetInApplicationServerRegistrator<T>, - DataSetRegistrationPersistentMap.IHolder + DataSetRegistrationContext.IHolder { private static final String ROLLBACK_QUEUE1_FILE_NAME_SUFFIX = "rollBackQueue1"; @@ -193,7 +194,7 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem private AbstractTransactionState<T> state; - private DataSetRegistrationPersistentMap registrationContext; + private DataSetRegistrationContext registrationContext; // The registration service that owns this transaction private final DataSetRegistrationService<T> registrationService; @@ -222,7 +223,9 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem this.openBisService = this.registrationService.getRegistratorContext().getGlobalState() .getOpenBisService(); - this.registrationContext = new DataSetRegistrationPersistentMap(); + this.registrationContext = + new DataSetRegistrationContext(new DataSetRegistrationPersistentMap(), + this.registrationService.getRegistratorContext().getGlobalState()); this.autoRecoverySettings = autoRecoverySettings; } @@ -428,7 +431,7 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem } @Override - public DataSetRegistrationPersistentMap getRegistrationContext() + public DataSetRegistrationContext getRegistrationContext() { return registrationContext; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java index 58cc68dd34b1846c4819e03289ee5405c4ab8f11..93400bba286a4483319b968036cbafb36489fbd5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java @@ -21,7 +21,7 @@ import java.io.File; import net.lemnik.eodsql.DynamicTransactionQuery; import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; -import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap; +import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationContext; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetRegistrationTransaction; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; @@ -217,7 +217,7 @@ class DataSetRegistrationTransactionV2Delegate implements IDataSetRegistrationTr } @Override - public DataSetRegistrationPersistentMap getRegistrationContext() + public DataSetRegistrationContext getRegistrationContext() { return transaction.getRegistrationContext(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java index 7303d5dfdb3251fce40189a2a3c13362d7d6b892..29345b1546596aec918a78bb2aa95ee4f26c6f3c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java @@ -21,7 +21,7 @@ import java.io.File; import net.lemnik.eodsql.DynamicTransactionQuery; import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; -import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap; +import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationContext; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperiment; @@ -265,7 +265,7 @@ public interface IDataSetRegistrationTransactionV2 * * @return The context, a hash-map-like object. */ - DataSetRegistrationPersistentMap getRegistrationContext(); + DataSetRegistrationContext getRegistrationContext(); /** * @return Global state for this dropbox, including configuration properties specified by the diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java index 09b4ebe39b50cb53fa4dd489da5f7f778bd55412..8cd9be074b369c15e14f8a6c903bdf7b75d9092c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java @@ -35,7 +35,7 @@ import ch.systemsx.cisd.etlserver.IStorageProcessorTransactional.UnstoreDataActi import ch.systemsx.cisd.etlserver.ITopLevelDataSetRegistratorDelegate; import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; import ch.systemsx.cisd.etlserver.registrator.DataSetFile; -import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap; +import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationContext; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationService; import ch.systemsx.cisd.etlserver.registrator.DataSetStorageAlgorithm; import ch.systemsx.cisd.etlserver.registrator.DataSetStorageAlgorithmRunner; @@ -196,7 +196,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend + " time (max allowed is " + processMaxRetryCount + ")"); } - DataSetRegistrationPersistentMap persistentMap = + DataSetRegistrationContext persistentMap = service.getTransaction().getRegistrationContext(); PyObject retryFunctionResult = null; @@ -236,7 +236,8 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend // should we catch some exceptions here? can we recover if whatever went wrong in here // creates the new transaction and propagates the values in the persistent map - service.transaction().getRegistrationContext().putAll(persistentMap); + service.transaction().getRegistrationContext().getPersistentMap() + .putAll(persistentMap.getPersistentMap()); waitTheRetryPeriod(processRetryPauseInSec); } @@ -461,14 +462,15 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend new RecoveryHookAdaptor(recoveryState.getIncomingDataSetFile() .getLogicalIncomingFile()); - DataSetRegistrationPersistentMap.IHolder persistentMapHolder = - new DataSetRegistrationPersistentMap.IHolder() + DataSetRegistrationContext.IHolder persistentMapHolder = + new DataSetRegistrationContext.IHolder() { @Override - public DataSetRegistrationPersistentMap getRegistrationContext() + public DataSetRegistrationContext getRegistrationContext() { - return recoveryState.getPersistentMap(); + return new DataSetRegistrationContext(recoveryState.getPersistentMap(), + state.getGlobalState()); } }; @@ -653,14 +655,14 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend @Override public void executePreRegistration( - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) +DataSetRegistrationContext.IHolder persistentMapHolder) { throw new NotImplementedException("Recovery cannot execute pre-registration hook."); } @Override public void executePostRegistration( - DataSetRegistrationPersistentMap.IHolder persistentMapHolder) +DataSetRegistrationContext.IHolder persistentMapHolder) { PyFunction function = tryJythonFunction(getInterpreter(), @@ -675,7 +677,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend * This method does not belong to the IPrePostRegistrationHook interface. Is called directly * by recovery. */ - public void executePostStorage(DataSetRegistrationPersistentMap.IHolder persistentMapHolder) + public void executePostStorage(DataSetRegistrationContext.IHolder persistentMapHolder) { PyFunction function = tryJythonFunction(getInterpreter(), @@ -687,7 +689,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend } public void executePreRegistrationRollback( - DataSetRegistrationPersistentMap.IHolder persistentMapHolder, Throwable t) + DataSetRegistrationContext.IHolder persistentMapHolder, Throwable t) { PyFunction function = tryJythonFunction(getInterpreter(), diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/recovery/DataSetStorageRecoveryManager.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/recovery/DataSetStorageRecoveryManager.java index a47d8a2300cb41acdd3c2de9753d512117bdfc86..712648be28b41a4afdc37da66f9de4fec8dfd898 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/recovery/DataSetStorageRecoveryManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/recovery/DataSetStorageRecoveryManager.java @@ -66,7 +66,8 @@ public class DataSetStorageRecoveryManager implements IDataSetStorageRecoveryMan DataSetStoragePrecommitRecoveryState<T> recoveryState = new DataSetStoragePrecommitRecoveryState<T>(registrationId, runner.getDataSetStorageAlgorithms(), runner.getDssRegistrationLogger(), - runner.getRollbackStack(), incoming, runner.getPersistentMap()); + runner.getRollbackStack(), incoming, runner.getRegistrationContext() + .getPersistentMap()); checkpointState(runner, recoveryState, RecoveryStage.PRECOMMIT); } @@ -80,7 +81,8 @@ public class DataSetStorageRecoveryManager implements IDataSetStorageRecoveryMan DataSetStoragePrecommitRecoveryState<T> recoveryState = new DataSetStoragePrecommitRecoveryState<T>(null, runner.getDataSetStorageAlgorithms(), runner.getDssRegistrationLogger(), - runner.getRollbackStack(), incoming, runner.getPersistentMap()); + runner.getRollbackStack(), incoming, runner.getRegistrationContext() + .getPersistentMap()); checkpointState(runner, recoveryState, RecoveryStage.POST_REGISTRATION_HOOK_EXECUTED); } @@ -94,7 +96,7 @@ public class DataSetStorageRecoveryManager implements IDataSetStorageRecoveryMan DataSetStorageStorageRecoveryState<T> recoveryState = new DataSetStorageStorageRecoveryState<T>(runner.getDataSetStorageAlgorithms(), runner.getDssRegistrationLogger(), runner.getRollbackStack(), incoming, - runner.getPersistentMap()); + runner.getRegistrationContext().getPersistentMap()); checkpointState(runner, recoveryState, RecoveryStage.STORAGE_COMPLETED); }