You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2016/11/04 22:10:00 UTC

svn commit: r1768113 - in /uima/uima-ducc/trunk: uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/ ...

Author: burn
Date: Fri Nov  4 22:10:00 2016
New Revision: 1768113

URL: http://svn.apache.org/viewvc?rev=1768113&view=rev
Log:
UIMA-5170 Added EffectiveUser.isLoggedin so can report 'no data' vs. 'inaccessibe data' in some cases

Modified:
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummaryJsonGz.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/utils/alien/EffectiveUser.java

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummaryJsonGz.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummaryJsonGz.java?rev=1768113&r1=1768112&r2=1768113&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummaryJsonGz.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummaryJsonGz.java Fri Nov  4 22:10:00 2016
@@ -125,7 +125,7 @@ public class JobPerformanceSummaryJsonGz
 		}
 		catch(Exception e) {
 			//e.printStackTrace();
-			System.out.println("importData: error importing perf data "+e);      // Should use logger
+			System.out.println("importData: error importing perf data "+e);      // Should use logger?
 		}
 		finally {           
 	        if(reader != null) {
@@ -136,23 +136,46 @@ public class JobPerformanceSummaryJsonGz
 	}
 	
 	public JobPerformanceSummaryData importData(String userid) throws IOException, ClassNotFoundException {
-		JobPerformanceSummaryData data = new JobPerformanceSummaryData();
-		if(userid == null) {
-			data = importData();
-		}
-		else {
-			try {
+	    String json;
+	    JobPerformanceSummaryData data = new JobPerformanceSummaryData();
+		try {
+		    File f = new File(filename);
+		    if (f.canRead()) {
+		        json = readGzipFile(filename);
+		    } else {
 				AlienFile alienFile = new AlienFile(userid, filename);
-				String json = alienFile.getString();
-				Type typeOfMap = new TypeToken<JobPerformanceSummaryData>() { }.getType();
-				data = gson.fromJson(json, typeOfMap);
-			}
-			catch(Throwable t) {
-				System.out.println("importData: error importing perf data for "+userid+" "+t);   // Should use logger
-				return null;
-			}
+				json = alienFile.getString();
+		    }
+		    Type typeOfMap = new TypeToken<JobPerformanceSummaryData>() { }.getType();
+		    data = gson.fromJson(json, typeOfMap);
+		}
+		catch(Throwable t) {
+		    System.out.println("importData: error importing perf data for "+userid+" "+t);   // Should use logger?
+		    return null;
 		}
 		return data;
 	}
 	
+	/*
+	 * Unzip a text file into a string
+	 * (Could be public?  or made part of AlienFile that would skip ducc_ling if file is readable?)
+	 */
+    private String readGzipFile(String filename) throws IOException {
+        BufferedReader br = null;
+        try {
+            // Wrap the file-stream in a GZIP-stream in a reader in a buffered-reader
+            br = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(filename)), encoding));
+            StringBuilder sb = new StringBuilder();
+            String line;
+            while ((line = br.readLine()) != null) {
+                sb.append(line);
+                sb.append("\n");
+            }
+            return sb.toString();
+        } finally {
+            if (br != null) {
+                br.close();
+            }
+        }
+    }
 }

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java?rev=1768113&r1=1768112&r2=1768113&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java Fri Nov  4 22:10:00 2016
@@ -35,6 +35,7 @@ public class PerformanceSummaryReader ex
 		super(dirname);
 	}
 	
+	@Deprecated
 	public PerformanceMetricsSummaryMap readJsonGz() throws IOException, ClassNotFoundException {
 		PerformanceMetricsSummaryMap map = new PerformanceMetricsSummaryMap();
 		JobPerformanceSummaryData data = jsonGz.importData();
@@ -54,33 +55,26 @@ public class PerformanceSummaryReader ex
 	public PerformanceMetricsSummaryMap readJsonGz(String userId) throws IOException, ClassNotFoundException {
 		PerformanceMetricsSummaryMap map = new PerformanceMetricsSummaryMap();
 		JobPerformanceSummaryData data = null;
-		if(data == null) {
-			try {
-				data = jsonGz.importData(userId);
-			}
-			catch(Exception e) {
-			}
-		}
-		if(data == null) {
-			try {
-				data = jsonGz.importData();
-			}
-			catch(Exception e) {
-			}
-		}
-		if(data != null) {
-			Integer casCount = data.getCasCount();
-			map.putCasCount(casCount);
-			ConcurrentSkipListMap<String, JobPerformanceSummary> gzMap = data.getMap();
-			Set<Entry<String, JobPerformanceSummary>> entries = gzMap.entrySet();
-			for(Entry<String, JobPerformanceSummary> entry : entries) {
-				String key = entry.getKey();
-				IJobPerformanceSummary jps = entry.getValue();
-				PerformanceMetricsSummaryItem value = new PerformanceMetricsSummaryItem(jps.getName(),jps.getUniqueName(),jps.getAnalysisTime(),jps.getNumProcessed(),jps.getAnalysisTimeMin(),jps.getAnalysisTimeMax());
-				map.putItem(key, value);
-			}
-		}
-		return map;
+        try {
+            data = jsonGz.importData(userId);
+        } catch (Exception e) {
+            System.err.println("readJsonGz " + userId + " ignoring exception " + e);   // Should be logged?
+        }
+        if (data == null) {         // Data missing or unreadable
+            return null;
+        }
+        Integer casCount = data.getCasCount();
+        map.putCasCount(casCount);
+        ConcurrentSkipListMap<String, JobPerformanceSummary> gzMap = data.getMap();
+        Set<Entry<String, JobPerformanceSummary>> entries = gzMap.entrySet();
+        for (Entry<String, JobPerformanceSummary> entry : entries) {
+            String key = entry.getKey();
+            IJobPerformanceSummary jps = entry.getValue();
+            PerformanceMetricsSummaryItem value = new PerformanceMetricsSummaryItem(jps.getName(), jps.getUniqueName(),
+                    jps.getAnalysisTime(), jps.getNumProcessed(), jps.getAnalysisTimeMin(), jps.getAnalysisTimeMax());
+            map.putItem(key, value);
+        }
+        return map;
 	}
 	
 	@Deprecated
@@ -98,12 +92,14 @@ public class PerformanceSummaryReader ex
 				map = getSummaryMap();
 			}
 			catch(Exception e) {
-				System.err.println("PerformanceMetricsSummaryMap.readSer() could not read file: "+ filename);
+			    // Probably missing file
+				//System.err.println("PerformanceMetricsSummaryMap.readSer() could not read file: "+ filename);
 			}
 		}
 		return map;
 	}
 	
+	@Deprecated
 	public PerformanceMetricsSummaryMap readSummary() {
 		PerformanceMetricsSummaryMap map = null;
 		try {
@@ -119,18 +115,21 @@ public class PerformanceSummaryReader ex
 		return map;
 	}
 	
+	/*
+	 * Read the json gzipped file 
+	 * If still supporting the legacy blob try to read it
+	 */
 	public PerformanceMetricsSummaryMap readSummary(String userId) {
 		PerformanceMetricsSummaryMap map = null;
 		try {
 			map = readJsonGz(userId);
-			return map;
 		}
 		catch(Exception e) {
-			if(!legacy) {
-				e.printStackTrace();
-			}
+		    System.err.println("readSummary " + userId + " ignoring exception " + e);   // Should be logged?
+		}
+		if (map == null && legacy) {
+		    map = readSer();
 		}
-		map = readSer();
 		return map;
 	}
 }

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1768113&r1=1768112&r2=1768113&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Fri Nov  4 22:10:00 2016
@@ -1740,8 +1740,10 @@ public class DuccHandler extends DuccAbs
 				long wiVersion = job.getWiVersion();
 				AlienWorkItemStateReader workItemStateReader = new AlienWorkItemStateReader(eu, component, directory, wiVersion);
 				ConcurrentSkipListMap<Long,IWorkItemState> map = workItemStateReader.getMap();
-			    if( (map == null) || (map.size() == 0) ) {
-			    	sb.append("no accessible data (not logged in?)");
+			    if (map == null) {
+			    	sb.append(eu.isLoggedin() ? "(data missing or unreadable)" : "(not visible - try logging in)");
+			    } else if (map.size() == 0) {
+			    	sb.append("(no work-items processed)");
 			    }
 			    else {
 			    	ConcurrentSkipListMap<IWorkItemState,IWorkItemState> sortedMap = new ConcurrentSkipListMap<IWorkItemState,IWorkItemState>();
@@ -1902,8 +1904,10 @@ public class DuccHandler extends DuccAbs
 				EffectiveUser eu = EffectiveUser.create(request);
 				PerformanceSummary performanceSummary = new PerformanceSummary(job.getLogDirectory()+jobNo);
 			    PerformanceMetricsSummaryMap performanceMetricsSummaryMap = performanceSummary.readSummary(eu.get());
-			    if( (performanceMetricsSummaryMap == null) || (performanceMetricsSummaryMap.size() == 0) ) {
-			    	sb.append("no accessible data (not logged in?)");
+			    if (performanceMetricsSummaryMap == null) { 
+			    	sb.append(eu.isLoggedin() ? "(data missing or unreadable)" : "(not visible - try logging in)");
+			    } else if (performanceMetricsSummaryMap.size() == 0) {
+			        sb.append("(no performance metrics)");
 			    }
 			    else {
 			    	int casCount  = performanceMetricsSummaryMap.casCount();
@@ -2086,7 +2090,7 @@ public class DuccHandler extends DuccAbs
                 String path = work.getUserLogsDir() + work.getDuccId().getFriendly() + File.separator + specFile;
                 Properties properties = DuccFile.getProperties(eu, path);
                 if (properties == null) {
-                    sb.append("no accessible data (not logged in?)");
+                    sb.append(eu.isLoggedin() ? "(data missing or unreadable)" : "(not visible - try logging in)");
                 } else {
                     int i = 0;
                     int counter = 0;
@@ -2123,7 +2127,6 @@ public class DuccHandler extends DuccAbs
 	{
 		String methodName = "handleDuccServletJobSpecificationData";
 		duccLogger.trace(methodName, null, messages.fetch("enter"));
-		StringBuffer sb = new StringBuffer();
 		String jobNo = request.getParameter("id");
 		DuccWorkJob job = getJob(jobNo);
 		processSpecificationData(job, DuccUiConstants.job_specification_properties, request, response);
@@ -2177,7 +2180,7 @@ public class DuccHandler extends DuccAbs
 					counter++;
 				}
 				if (counter == 0) {
-				    sb.append("no files found (not logged in?)");
+				    sb.append(eu.isLoggedin() ? "(data missing or unreadable)" : "(not visible - try logging in)");
 				}
 			}
 			catch(Throwable t) {
@@ -2237,12 +2240,11 @@ public class DuccHandler extends DuccAbs
 					counter++;
 				}
 		        if (counter == 0) {
-		            sb.append("no files found (not logged in?)");
+		            sb.append(eu.isLoggedin() ? "(no files found)" : "(not visible - try logging in)");
 		        }
 			}
 			catch(Throwable t) {
 				duccLogger.warn(methodName, null, t);
-				//sb = new StringBuffer();
 				sb.append("no accessible data ("+t+")");
 			}
 		}

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/utils/alien/EffectiveUser.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/utils/alien/EffectiveUser.java?rev=1768113&r1=1768112&r2=1768113&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/utils/alien/EffectiveUser.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/utils/alien/EffectiveUser.java Fri Nov  4 22:10:00 2016
@@ -45,6 +45,7 @@ public class EffectiveUser {
 	}
 	
 	private String user = null;
+	private boolean loggedin = false;
 	
 	private EffectiveUser(String user) {
 		set(user);
@@ -54,10 +55,12 @@ public class EffectiveUser {
 		String location = "set";
 		if(value != null) {
 			user = value;
+			loggedin = true;
 			logger.debug(location, jobid, "value: "+user);
 		}
 		else {
 			user = System.getProperty("user.name");
+			loggedin = false;
 			logger.debug(location, jobid, "property: "+user);
 		}
 	}
@@ -65,4 +68,8 @@ public class EffectiveUser {
 	public String get() {
 		return user;
 	}
+	
+	public boolean isLoggedin() {
+	    return loggedin;
+	}
 }