You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nutch.apache.org by ma...@apache.org on 2015/10/18 21:29:47 UTC

svn commit: r1709304 - in /nutch/trunk: CHANGES.txt src/java/org/apache/nutch/tools/FileDumper.java src/java/org/apache/nutch/util/DumpFileUtil.java

Author: mattmann
Date: Sun Oct 18 19:29:46 2015
New Revision: 1709304

URL: http://svn.apache.org/viewvc?rev=1709304&view=rev
Log:
Fix for NUTCH-2142: Nutch File Dump - FileNotFoundException (Invalid Argument) Error contributed by karanjeets <co...@gmail.com> this closes #76.

Modified:
    nutch/trunk/CHANGES.txt
    nutch/trunk/src/java/org/apache/nutch/tools/FileDumper.java
    nutch/trunk/src/java/org/apache/nutch/util/DumpFileUtil.java

Modified: nutch/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/nutch/trunk/CHANGES.txt?rev=1709304&r1=1709303&r2=1709304&view=diff
==============================================================================
--- nutch/trunk/CHANGES.txt (original)
+++ nutch/trunk/CHANGES.txt Sun Oct 18 19:29:46 2015
@@ -2,6 +2,8 @@ Nutch Change Log
    
 Nutch Current Development 1.11-SNAPSHOT
 
+* NUTCH-2142 Nutch File Dump - FileNotFoundException (Invalid Argument) Error (Karanjeet Singh via mattmann)
+
 * NUTCH-2136 Implement a different version of Naive Bayes Parse Filter (Asitang Mishra)
 
 * NUTCH-2109 Create a brute force click-all-ajax-links utility fucntion for selenium interactive plugin (Asitang Mishra)

Modified: nutch/trunk/src/java/org/apache/nutch/tools/FileDumper.java
URL: http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/tools/FileDumper.java?rev=1709304&r1=1709303&r2=1709304&view=diff
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/tools/FileDumper.java (original)
+++ nutch/trunk/src/java/org/apache/nutch/tools/FileDumper.java Sun Oct 18 19:29:46 2015
@@ -219,8 +219,26 @@ public class FileDumper {
   
                 if (!outputFile.exists()) {
                   LOG.info("Writing: [" + outputFullPath + "]");
-                  FileOutputStream output = new FileOutputStream(outputFile);
-                  IOUtils.write(content.getContent(), output);
+
+		  // Modified to prevent FileNotFoundException (Invalid Argument) 
+		  FileOutputStream output = null;
+		  try {
+                        output = new FileOutputStream(outputFile);
+                        IOUtils.write(content.getContent(), output);
+                  }
+                  catch (Exception e) {
+                        LOG.warn("Write Error: [" + outputFullPath + "]");
+			e.printStackTrace();
+                  }
+                  finally {
+                        if (output != null) {
+                                output.flush();
+				try {
+                                	output.close();
+				} catch (Exception ignore) {
+				}
+                        }
+                  }
                   fileCount++;
                 } else {
                   LOG.info("Skipping writing: [" + outputFullPath

Modified: nutch/trunk/src/java/org/apache/nutch/util/DumpFileUtil.java
URL: http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/util/DumpFileUtil.java?rev=1709304&r1=1709303&r2=1709304&view=diff
==============================================================================
--- nutch/trunk/src/java/org/apache/nutch/util/DumpFileUtil.java (original)
+++ nutch/trunk/src/java/org/apache/nutch/util/DumpFileUtil.java Sun Oct 18 19:29:46 2015
@@ -80,6 +80,10 @@ public class DumpFileUtil {
             LOG.info("File extension is too long. Truncated to {} characters.", MAX_LENGTH_OF_EXTENSION);
             fileExtension = StringUtils.substring(fileExtension, 0, MAX_LENGTH_OF_EXTENSION);
         }
+	
+	// Added to prevent FileNotFoundException (Invalid Argument) - in *nix environment
+        fileBaseName = fileBaseName.replaceAll("\\?", "");
+        fileExtension = fileExtension.replaceAll("\\?", "");
 
         return String.format(FILENAME_PATTERN, md5, fileBaseName, fileExtension);
     }