You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2017/07/21 12:46:48 UTC
svn commit: r1802589 -
/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccBoot.java
Author: degenaro
Date: Fri Jul 21 12:46:48 2017
New Revision: 1802589
URL: http://svn.apache.org/viewvc?rev=1802589&view=rev
Log:
UIMA-5506 DUCC Web Server (WS) log directory display path saved in DB is corrupted by missing "/"
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=1802589&r1=1802588&r2=1802589&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 Jul 21 12:46:48 2017
@@ -18,6 +18,8 @@
*/
package org.apache.uima.ducc.ws;
+import java.io.File;
+import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.List;
@@ -28,6 +30,8 @@ import org.apache.uima.ducc.common.utils
import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
import org.apache.uima.ducc.common.utils.DuccPropertiesResolver;
import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.transport.event.common.DuccWorkJob;
+import org.apache.uima.ducc.transport.event.common.IDuccWork;
import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
import org.apache.uima.ducc.transport.event.common.IDuccWorkReservation;
import org.apache.uima.ducc.transport.event.common.IDuccWorkService;
@@ -153,6 +157,41 @@ public class DuccBoot extends Thread {
}
}
+ /**
+ * Verify user log dir is correct and fix-up (in WS cache) if not.
+ *
+ * See https://issues.apache.org/jira/browse/UIMA-5506
+ */
+ private void fixup(IDuccWork dw) {
+ String location = "fixup";
+ if(dw != null) {
+ DuccId duccId = dw.getDuccId();
+ try {
+ if(dw instanceof DuccWorkJob) {
+ DuccWorkJob dwj = (DuccWorkJob) dw;
+ String s_logdir = dwj.getLogDirectory();
+ String s_duccId = duccId.toString();
+ File f_userlogdir = new File(s_logdir, s_duccId);
+ String s_userlogdir = f_userlogdir.getPath()+File.separator;
+ String h_userlogdir = dwj.getUserLogDir();
+ if(s_userlogdir.equals(h_userlogdir)) {
+ logger.debug(location, duccId, "==", h_userlogdir, s_userlogdir);
+ }
+ else {
+ logger.debug(location, duccId, "!=", h_userlogdir, s_userlogdir);
+ Field field = DuccWorkJob.class.getDeclaredField("userLogDir");
+ field.setAccessible(true); // Force to access the field
+ field.set(dwj, s_userlogdir); // Set value
+ logger.info(location, duccId, dwj.getUserLogDir());
+ }
+ }
+ }
+ catch(Exception e) {
+ logger.error(location, duccId, e);
+ }
+ }
+ }
+
private void restoreJobs(IHistoryPersistenceManager hpm, DuccData duccData)
{
// Replaced for database. Both file and database now do all the looping and sorting internally.
@@ -170,6 +209,7 @@ public class DuccBoot extends Thread {
int restored = 0;
int nExperiments = 0;
for ( IDuccWorkJob duccWorkJob : duccWorkJobs ) {
+ fixup(duccWorkJob);
try {
logger.debug(location, duccWorkJob.getDuccId(), messages.fetchLabel("restore"));
duccData.putIfNotPresent(duccWorkJob);