You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by gs...@apache.org on 2011/01/25 17:15:00 UTC

svn commit: r1063333 - in /lucene/dev/trunk/solr: CHANGES.txt src/java/org/apache/solr/handler/CSVRequestHandler.java

Author: gsingers
Date: Tue Jan 25 16:14:59 2011
New Revision: 1063333

URL: http://svn.apache.org/viewvc?rev=1063333&view=rev
Log:
SOLR-482: add some improved exception information for CSV files that fail

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1063333&r1=1063332&r2=1063333&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Jan 25 16:14:59 2011
@@ -161,6 +161,8 @@ Bug Fixes
 * SOLR-2127: Fixed serialization of default core and indentation of solr.xml when serializing.
   (Ephraim Ofir, Mark Miller)
 
+* SOLR-482: Provide more exception handling in CSVLoader (gsingers)
+
 Other Changes
 ----------------------
 

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java?rev=1063333&r1=1063332&r2=1063333&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java Tue Jan 25 16:14:59 2011
@@ -305,12 +305,27 @@ abstract class CSVLoader extends Content
 
   private void input_err(String msg, String[] line, int lineno) {
     StringBuilder sb = new StringBuilder();
-    sb.append(errHeader+", line="+lineno + ","+msg+"\n\tvalues={");
-    for (String val: line) { sb.append("'"+val+"',"); }
+    sb.append(errHeader).append(", line=").append(lineno).append(",").append(msg).append("\n\tvalues={");
+    for (String val: line) {
+      sb.append("'").append(val).append("',"); }
     sb.append('}');
     throw new SolrException( SolrException.ErrorCode.BAD_REQUEST,sb.toString());
   }
 
+  private void input_err(String msg, String[] lines, int lineNo, Throwable e) {
+    StringBuilder sb = new StringBuilder();
+    sb.append(errHeader).append(", line=").append(lineNo).append(",").append(msg).append("\n\tvalues={");
+    if (lines != null) {
+      for (String val : lines) {
+        sb.append("'").append(val).append("',");
+      }
+    } else {
+      sb.append("NO LINES AVAILABLE");
+    }
+    sb.append('}');
+    throw new SolrException( SolrException.ErrorCode.BAD_REQUEST,sb.toString(), e);
+  }
+
   /** load the CSV input */
   public void load(SolrQueryRequest req, SolrQueryResponse rsp, ContentStream stream) throws IOException {
     errHeader = "CSVLoader: input=" + stream.getSourceInfo();
@@ -341,7 +356,13 @@ abstract class CSVLoader extends Content
       // read the rest of the CSV file
       for(;;) {
         int line = parser.getLineNumber();  // for error reporting in MT mode
-        String[] vals = parser.getLine();
+        String[] vals = null;
+        try {
+          vals = parser.getLine();
+        } catch (IOException e) {
+          //Catch the exception and rethrow it with more line information
+         input_err("can't read line: " + line, null, line, e);
+        }
         if (vals==null) break;
 
         if (vals.length != fields.length) {