From c09cb78c778415286ef5bb605ecad3b8c023ef2f Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Thu, 14 Jun 2012 15:37:25 +0000 Subject: [PATCH] BIS-21 SP-107 add two more places with the checking of the application readyness SVN: 25719 --- ...tOmniscientTopLevelDataSetRegistrator.java | 4 ++-- .../DataSetStorageAlgorithmRunner.java | 1 + .../JythonTopLevelDataSetHandler.java | 6 +++--- .../v2/JythonTopLevelDataSetHandlerV2.java | 21 +++++++++++++++---- .../DataSetStorageRollbackerTest.java | 2 +- .../DataSetRegistrationTransactionTest.java | 2 +- 6 files changed, 25 insertions(+), 11 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 77a8e0d5afa..a60ae12a244 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 @@ -498,7 +498,7 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat handleValidationErrors(validationErrors, incomingDataSetFile, service); } else { - handleDataSet(incomingDataSetFile.getLogicalIncomingFile(), service); + handleDataSet(incomingDataSetFile, service); service.commit(); } } catch (Throwable ex) @@ -693,6 +693,6 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat * * @throws Throwable */ - protected abstract void handleDataSet(File dataSetFile, DataSetRegistrationService<T> service) + protected abstract void handleDataSet(DataSetFile dataSetFile, DataSetRegistrationService<T> service) throws Throwable; } 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 e96b071f6ca..2e9d74f16cd 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 @@ -612,6 +612,7 @@ public class DataSetStorageAlgorithmRunner<T extends DataSetInformation> while (true) { + waitUntilApplicationIsReady(); if (result == EntityOperationsState.NO_OPERATION) { 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 3f28cc42d01..5c5f4ffda3e 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 @@ -162,7 +162,7 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends } @Override - public void handleDataSet(File dataSetFile, DataSetRegistrationService<T> genericService) + public void handleDataSet(DataSetFile dataSetFile, DataSetRegistrationService<T> genericService) throws Throwable { // Load the script @@ -174,12 +174,12 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends executeJythonScript(dataSetFile, scriptString, service); } - protected void executeJythonScript(File dataSetFile, String scriptString, + protected void executeJythonScript(DataSetFile dataSetFile, String scriptString, JythonDataSetRegistrationService<T> service) { // Configure the evaluator PythonInterpreter interpreter = service.interpreter; - configureEvaluator(dataSetFile, service, interpreter); + configureEvaluator(dataSetFile.getLogicalIncomingFile(), service, interpreter); // Invoke the evaluator interpreter.exec(scriptString); 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 f6bba5209be..1583f965b05 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 @@ -51,6 +51,7 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetRegistrationTransac import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.AbstractTransactionState; import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.RollbackStack; import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.RollbackStack.IRollbackStackDelegate; +import ch.systemsx.cisd.etlserver.registrator.monitor.DssRegistrationHealthMonitor; import ch.systemsx.cisd.etlserver.registrator.recovery.AbstractRecoveryState; import ch.systemsx.cisd.etlserver.registrator.recovery.DataSetStoragePrecommitRecoveryState; import ch.systemsx.cisd.etlserver.registrator.recovery.DataSetStorageRecoveryInfo; @@ -131,13 +132,13 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend } @Override - protected void executeJythonScript(File dataSetFile, String scriptString, + protected void executeJythonScript(DataSetFile dataSetFile, String scriptString, JythonDataSetRegistrationService<T> service) { // Configure the evaluator PythonInterpreter interpreter = service.getInterpreter(); - configureEvaluator(dataSetFile, service, interpreter); + configureEvaluator(dataSetFile.getLogicalIncomingFile(), service, interpreter); // Invoke the evaluator interpreter.exec(scriptString); @@ -155,12 +156,22 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend } else { executeJythonProcessFunctionWithRetries(interpreter, - (JythonDataSetRegistrationServiceV2<T>) service, retryFunction); + (JythonDataSetRegistrationServiceV2<T>) service, retryFunction, dataSetFile); } } + private void waitUntilApplicationIsReady(DataSetFile incomingDataSetFile) + { + while (false == DssRegistrationHealthMonitor.getInstance().isApplicationReady( + incomingDataSetFile.getRealIncomingFile().getParentFile())) + { + waitTheRetryPeriod(); + // do nothing. just repeat until the application is ready + } + } + private void executeJythonProcessFunctionWithRetries(PythonInterpreter interpreter, - JythonDataSetRegistrationServiceV2<T> service, PyFunction retryFunction) + JythonDataSetRegistrationServiceV2<T> service, PyFunction retryFunction, DataSetFile incomingDataSetFile) { DistinctExceptionsCollection errors = new DistinctExceptionsCollection(); @@ -169,6 +180,8 @@ public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extend while (true) { + waitUntilApplicationIsReady(incomingDataSetFile); + Exception problem; try { diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java index 2741f2d4c3f..b0f3945e862 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java @@ -146,7 +146,7 @@ public class DataSetStorageRollbackerTest extends AbstractFileSystemTestCase } @Override - protected void handleDataSet(File dataSetFile, + protected void handleDataSet(DataSetFile dataSetFile, DataSetRegistrationService<DataSetInformation> service) throws Throwable { diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java index 2bcaa84f74d..e7bb91a8fe6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java @@ -684,7 +684,7 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa } @Override - protected void handleDataSet(File dataSetFile, + protected void handleDataSet(DataSetFile dataSetFile, DataSetRegistrationService<DataSetInformation> aService) throws Throwable { -- GitLab