From 37e8fc6ceff880f5adb9d81909fcbb7f38080220 Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Thu, 28 Jun 2012 12:41:16 +0000 Subject: [PATCH] SP-136 BIS-21 refactor registration context SVN: 25935 --- ...tOmniscientTopLevelDataSetRegistrator.java | 4 +-- .../DataSetRegistrationService.java | 8 ++--- .../DataSetStorageAlgorithmRunner.java | 18 ++++++------ .../JythonTopLevelDataSetHandler.java | 27 ++++++++--------- .../v2/JythonTopLevelDataSetHandlerV2.java | 29 ++++++++++--------- 5 files changed, 44 insertions(+), 42 deletions(-) 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 4a0ca929aad..fe2d74dede8 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, - DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { } @@ -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, - DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { } 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 b7efb6781c5..d64d702b0ec 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,15 +269,15 @@ public class DataSetRegistrationService<T extends DataSetInformation> implements } @Override - public void executePreRegistration(DataSetRegistrationContext.IHolder persistentMapHolder) + public void executePreRegistration(DataSetRegistrationContext.IHolder registrationContextHolder) { - registrator.didPreRegistration(this, persistentMapHolder); + registrator.didPreRegistration(this, registrationContextHolder); } @Override - public void executePostRegistration(DataSetRegistrationContext.IHolder persistentMapHolder) + public void executePostRegistration(DataSetRegistrationContext.IHolder registrationContextHolder) { - registrator.didPostRegistration(this, persistentMapHolder); + registrator.didPostRegistration(this, registrationContextHolder); } public void didEncounterSecondaryTransactionErrors( 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 fcaa2071c29..7a83552a461 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 @@ -78,10 +78,10 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> public static interface IPrePostRegistrationHook<T extends DataSetInformation> { public void executePreRegistration( -DataSetRegistrationContext.IHolder persistentMapHolder); + DataSetRegistrationContext.IHolder registrationContextHolder); public void executePostRegistration( -DataSetRegistrationContext.IHolder persistentMapHolder); + DataSetRegistrationContext.IHolder registrationContextHolder); } static private final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, @@ -102,7 +102,7 @@ DataSetRegistrationContext.IHolder persistentMapHolder); private final IRollbackStack rollbackStack; - private final DataSetRegistrationContext.IHolder persistentMapHolder; + private final DataSetRegistrationContext.IHolder registrationContextHolder; private final IPrePostRegistrationHook<T> postPreRegistrationHooks; @@ -131,7 +131,7 @@ DataSetRegistrationContext.IHolder persistentMapHolder); new ArrayList<DataSetStorageAlgorithm<T>>(dataSetStorageAlgorithms); this.rollbackDelegate = transaction; this.applicationServerRegistrator = transaction; - this.persistentMapHolder = transaction; + this.registrationContextHolder = transaction; this.rollbackStack = rollbackStack; this.dssRegistrationLog = dssRegistrationLog; this.openBISService = openBISService; @@ -155,14 +155,14 @@ DataSetRegistrationContext.IHolder persistentMapHolder); DssRegistrationLogger dssRegistrationLog, IEncapsulatedOpenBISService openBISService, IPrePostRegistrationHook<T> postPreRegistrationHooks, IDataSetStorageRecoveryManager storageRecoveryManager, - DataSetRegistrationContext.IHolder persistentMapHolder, + DataSetRegistrationContext.IHolder registrationContextHolder, TopLevelDataSetRegistratorGlobalState globalState) { this.dataSetStorageAlgorithms = new ArrayList<DataSetStorageAlgorithm<T>>(dataSetStorageAlgorithms); this.rollbackDelegate = rollbackDelegate; this.applicationServerRegistrator = null; - this.persistentMapHolder = persistentMapHolder; + this.registrationContextHolder = registrationContextHolder; this.rollbackStack = rollbackStack; this.dssRegistrationLog = dssRegistrationLog; this.openBISService = openBISService; @@ -286,7 +286,7 @@ DataSetRegistrationContext.IHolder persistentMapHolder); { try { - postPreRegistrationHooks.executePreRegistration(persistentMapHolder); + postPreRegistrationHooks.executePreRegistration(registrationContextHolder); } catch (Throwable throwable) { operationLog.error("Error in execution of pre registration hooks", throwable); @@ -741,7 +741,7 @@ DataSetRegistrationContext.IHolder persistentMapHolder); { try { - postPreRegistrationHooks.executePostRegistration(persistentMapHolder); + postPreRegistrationHooks.executePostRegistration(registrationContextHolder); } catch (final Throwable throwable) { dssRegistrationLog.log("Post-registration action failed:"); @@ -822,6 +822,6 @@ DataSetRegistrationContext.IHolder persistentMapHolder); public DataSetRegistrationContext getRegistrationContext() { - return persistentMapHolder.getRegistrationContext(); + return registrationContextHolder.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 0c42d383930..c493f5ea062 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,18 +312,18 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends @Override public void didPreRegistration(DataSetRegistrationService<T> service, - DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { - super.didPreRegistration(service, persistentMapHolder); - invokePreRegistrationFunction(service, persistentMapHolder); + super.didPreRegistration(service, registrationContextHolder); + invokePreRegistrationFunction(service, registrationContextHolder); } @Override public void didPostRegistration(DataSetRegistrationService<T> service, - DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { - super.didPostRegistration(service, persistentMapHolder); - invokePostRegistrationFunction(service, persistentMapHolder); + super.didPostRegistration(service, registrationContextHolder); + invokePostRegistrationFunction(service, registrationContextHolder); } @Override @@ -439,7 +439,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends } private void invokePreRegistrationFunction(DataSetRegistrationService<T> service, - DataSetRegistrationContext.IHolder persistentMapholder) + DataSetRegistrationContext.IHolder registrationContextHolder) { PythonInterpreter interpreter = getInterpreterFromService(service); PyFunction function = @@ -447,17 +447,17 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends if (null != function) { - invokeTransactionFunctionWithContext(function, persistentMapholder); + invokeTransactionFunctionWithContext(function, registrationContextHolder); } } private void invokePostRegistrationFunction(DataSetRegistrationService<T> service, - DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { PyFunction function = tryGetPostRegistrationFunction(service); if (null != function) { - invokeTransactionFunctionWithContext(function, persistentMapHolder); + invokeTransactionFunctionWithContext(function, registrationContextHolder); } } @@ -513,14 +513,15 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends } private void invokeTransactionFunctionWithContext(PyFunction function, - DataSetRegistrationContext.IHolder persistentMapHolder, Object... additionalArgs) + DataSetRegistrationContext.IHolder registrationContextHolder, Object... additionalArgs) { if (additionalArgs.length > 0) { - invokeFunction(function, persistentMapHolder.getRegistrationContext(), additionalArgs); + invokeFunction(function, registrationContextHolder.getRegistrationContext(), + additionalArgs); } else { - invokeFunction(function, persistentMapHolder.getRegistrationContext()); + invokeFunction(function, registrationContextHolder.getRegistrationContext()); } } 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 8cd9be074b3..ab48d42746b 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 @@ -196,13 +196,13 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend + " time (max allowed is " + processMaxRetryCount + ")"); } - DataSetRegistrationContext persistentMap = + DataSetRegistrationContext registrationContext = service.getTransaction().getRegistrationContext(); PyObject retryFunctionResult = null; try { - retryFunctionResult = invokeFunction(retryFunction, persistentMap, problem); + retryFunctionResult = invokeFunction(retryFunction, registrationContext, problem); } catch (Exception ex) { operationLog.error("The retry function has failed. Rolling back.", ex); @@ -237,7 +237,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend // creates the new transaction and propagates the values in the persistent map service.transaction().getRegistrationContext().getPersistentMap() - .putAll(persistentMap.getPersistentMap()); + .putAll(registrationContext.getPersistentMap()); waitTheRetryPeriod(processRetryPauseInSec); } @@ -462,7 +462,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend new RecoveryHookAdaptor(recoveryState.getIncomingDataSetFile() .getLogicalIncomingFile()); - DataSetRegistrationContext.IHolder persistentMapHolder = + DataSetRegistrationContext.IHolder registrationContextHolder = new DataSetRegistrationContext.IHolder() { @@ -488,7 +488,8 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend logger, // registrationLogger state.getGlobalState().getOpenBisService(), // openBisService hookAdaptor, // the hooks - state.getGlobalState().getStorageRecoveryManager(), persistentMapHolder, + state.getGlobalState().getStorageRecoveryManager(), + registrationContextHolder, state.getGlobalState()); boolean registrationSuccessful = false; @@ -548,7 +549,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend shouldStopRecovery = true; - hookAdaptor.executePreRegistrationRollback(persistentMapHolder, null); + hookAdaptor.executePreRegistrationRollback(registrationContextHolder, null); finishRegistration(dataSetStorageAlgorithms, rollbackStack); } else @@ -574,7 +575,7 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend } if (success) { - hookAdaptor.executePostStorage(persistentMapHolder); + hookAdaptor.executePostStorage(registrationContextHolder); registrationSuccessful = true; shouldStopRecovery = true; @@ -655,21 +656,21 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend @Override public void executePreRegistration( -DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { throw new NotImplementedException("Recovery cannot execute pre-registration hook."); } @Override public void executePostRegistration( -DataSetRegistrationContext.IHolder persistentMapHolder) + DataSetRegistrationContext.IHolder registrationContextHolder) { PyFunction function = tryJythonFunction(getInterpreter(), JythonHookFunction.POST_REGISTRATION_FUNCTION_NAME); if (function != null) { - invokeFunction(function, persistentMapHolder.getRegistrationContext()); + invokeFunction(function, registrationContextHolder.getRegistrationContext()); } } @@ -677,26 +678,26 @@ DataSetRegistrationContext.IHolder persistentMapHolder) * This method does not belong to the IPrePostRegistrationHook interface. Is called directly * by recovery. */ - public void executePostStorage(DataSetRegistrationContext.IHolder persistentMapHolder) + public void executePostStorage(DataSetRegistrationContext.IHolder registrationContextHolder) { PyFunction function = tryJythonFunction(getInterpreter(), JythonHookFunction.POST_STORAGE_FUNCTION_NAME); if (function != null) { - invokeFunction(function, persistentMapHolder.getRegistrationContext()); + invokeFunction(function, registrationContextHolder.getRegistrationContext()); } } public void executePreRegistrationRollback( - DataSetRegistrationContext.IHolder persistentMapHolder, Throwable t) + DataSetRegistrationContext.IHolder registrationContextHolder, Throwable t) { PyFunction function = tryJythonFunction(getInterpreter(), JythonHookFunction.ROLLBACK_PRE_REGISTRATION_FUNCTION_NAME); if (function != null) { - invokeFunction(function, persistentMapHolder.getRegistrationContext(), t); + invokeFunction(function, registrationContextHolder.getRegistrationContext(), t); } } -- GitLab