Author: burn
Date: Fri Nov 4 14:33:37 2016
New Revision: 1768041
URL: http://svn.apache.org/viewvc?rev=1768041&view=rev
Log:
UIMA-5170 Skip restore of work that shares an already-processed experiment
directory
Modified:
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccBoot.java
Modified:
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccBoot.java
URL:
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccBoot.java?rev=1768041&r1=1768040&r2=1768041&view=diff
==============================================================================
---
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccBoot.java
(original)
+++
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccBoot.java
Fri Nov 4 14:33:37 2016
@@ -18,6 +18,7 @@
*/
package org.apache.uima.ducc.ws;
+import java.util.HashSet;
import java.util.List;
import org.apache.uima.ducc.common.IDuccEnv;
@@ -52,6 +53,8 @@ public class DuccBoot extends Thread {
duccBoot.initialize(commonConfiguration);
duccBoot.start();
}
+
+ private HashSet<String> experimentsFound;
public void run() {
String location = "run";
@@ -128,11 +131,16 @@ public class DuccBoot extends Thread {
logger.info(location, jobid, messages.fetchLabel("Number of
Reservations fetched from history"), duccWorkReservations.size());
int restored = 0;
+ int nExperiments = 0;
for ( IDuccWorkReservation duccWorkReservation : duccWorkReservations
) {
try {
logger.debug(location, duccWorkReservation.getDuccId(),
messages.fetchLabel("restore"));
duccData.putIfNotPresent(duccWorkReservation);
- duccPlugins.restore(duccWorkReservation);
+ String directory =
duccWorkReservation.getStandardInfo().getLogDirectory();
+ if (experimentsFound.add(directory)) {
+ duccPlugins.restore(duccWorkReservation);
+ nExperiments++;
+ }
restored++;
}
catch(Throwable t) {
@@ -140,13 +148,16 @@ public class DuccBoot extends Thread {
}
}
logger.info(location,null, messages.fetch("Reservations restored:
"+restored));
+ if (nExperiments > 0) {
+ logger.info(location,null, messages.fetch("Experiments found:
"+nExperiments));
+ }
}
private void restoreJobs(IHistoryPersistenceManager hpm, DuccData
duccData)
{
// Replaced for database. Both file and database now do all the
looping and sorting internally.
String location = "restoreJobs";
- List<IDuccWorkJob> duccWorkJobs = null;;
+ List<IDuccWorkJob> duccWorkJobs = null;
try {
duccWorkJobs = hpm.restoreJobs(maxJobs);
} catch (Exception e) {
@@ -157,11 +168,16 @@ public class DuccBoot extends Thread {
logger.info(location, jobid, messages.fetchLabel("Number of Jobs
fetched from history"), duccWorkJobs.size());
int restored = 0;
+ int nExperiments = 0;
for ( IDuccWorkJob duccWorkJob : duccWorkJobs ) {
try {
logger.debug(location, duccWorkJob.getDuccId(),
messages.fetchLabel("restore"));
duccData.putIfNotPresent(duccWorkJob);
- duccPlugins.restore(duccWorkJob);
+ String directory =
duccWorkJob.getStandardInfo().getLogDirectory();
+ if (experimentsFound.add(directory)) {
+ duccPlugins.restore(duccWorkJob);
+ nExperiments++;
+ }
restored++;
}
catch(Throwable t) {
@@ -169,6 +185,9 @@ public class DuccBoot extends Thread {
}
}
logger.info(location,null, messages.fetch("Jobs restored: "+restored));
+ if (nExperiments > 0) {
+ logger.info(location,null, messages.fetch("Experiments found:
"+nExperiments));
+ }
}
// private void restoreJobsX(IHistoryPersistenceManager hpm, DuccData
duccData) {
@@ -214,11 +233,16 @@ public class DuccBoot extends Thread {
logger.info(location, jobid, messages.fetchLabel("Number of services
fetched from history"), duccWorkServices.size());
int restored = 0;
+ int nExperiments = 0;
for ( IDuccWorkService duccWorkService : duccWorkServices ) {
try {
logger.debug(location, duccWorkService.getDuccId(),
messages.fetchLabel("restore"));
duccData.putIfNotPresent(duccWorkService);
- duccPlugins.restore(duccWorkService);
+ String directory =
duccWorkService.getStandardInfo().getLogDirectory();
+ if (experimentsFound.add(directory)) {
+ duccPlugins.restore(duccWorkService);
+ nExperiments++;
+ }
restored++;
}
catch(Throwable t) {
@@ -226,6 +250,9 @@ public class DuccBoot extends Thread {
}
}
logger.info(location,null, messages.fetch("Services restored:
"+restored));
+ if (nExperiments > 0) {
+ logger.info(location,null, messages.fetch("Experiments found:
"+nExperiments));
+ }
}
// private void restoreServices(IHistoryPersistenceManager hpm,
DuccData duccData) {
@@ -272,9 +299,11 @@ public class DuccBoot extends Thread {
logger.info(location, jobid, messages.fetchLabel("History
directory")+IDuccEnv.DUCC_HISTORY_DIR);
IHistoryPersistenceManager hpm =
HistoryFactory.getInstance(this.getClass().getName());
DuccData duccData = DuccData.getInstance();
+ experimentsFound = new HashSet<String>(); // Lets the restore
methods avoid inspecting already-found experiments
restoreReservations(hpm, duccData);
restoreJobs(hpm, duccData);
restoreServices(hpm, duccData);
+ experimentsFound = null;
duccData.report();
}
}