List of usage examples for org.apache.hadoop.hdfs DFSClient.DFSDataInputStream close
@Override public synchronized void close() throws IOException
From source file:org.hypertable.DfsBroker.hadoop.HadoopBroker.java
License:Open Source License
/** * *//*from w w w. j a v a 2 s. c o m*/ public void Length(ResponseCallbackLength cb, String fileName, boolean accurate) { int error = Error.OK; long length; try { if (mVerbose) log.info("Getting length of file '" + fileName + "' (accurate: " + accurate + ")"); Path path = new Path(fileName); if (accurate) { DFSClient.DFSDataInputStream in = (DFSClient.DFSDataInputStream) mFilesystem.open(path); length = in.getVisibleLength(); in.close(); } else { length = mFilesystem.getFileStatus(path).getLen(); } error = cb.response(length); } catch (FileNotFoundException e) { log.severe("File not found: " + fileName); error = cb.error(Error.DFSBROKER_BAD_FILENAME, e.getMessage()); } catch (IOException e) { log.severe("I/O exception while getting length of file '" + fileName + "' - " + e.toString()); error = cb.error(Error.DFSBROKER_IO_ERROR, e.toString()); } if (error != Error.OK) log.severe("Error sending LENGTH response back (error=" + error + ", filename=" + fileName + ", accurate=" + accurate + ")"); }
From source file:org.hypertable.FsBroker.hadoop.HadoopBroker.java
License:Open Source License
/** * *//* w ww. j a v a2 s . co m*/ public void Length(ResponseCallbackLength cb, String fileName, boolean accurate) { int error = Error.OK; String message = ""; long length = 0; /* - this floods the log if Replication is enabled if (mVerbose) log.info("Getting length of file '" + fileName + "' (accurate: " + accurate + ")"); */ Path path = new Path(fileName); for (int i = 0; i < MAX_RETRIES; i++) { try { if (accurate) { DFSClient.DFSDataInputStream in = (DFSClient.DFSDataInputStream) mFilesystem.open(path); length = in.getVisibleLength(); in.close(); } else { length = mFilesystem.getFileStatus(path).getLen(); } // success error = Error.OK; message = ""; break; } catch (FileNotFoundException e) { error = Error.DFSBROKER_FILE_NOT_FOUND; message = "File not found: " + e.getMessage(); break; } catch (IOException e) { error = Error.DFSBROKER_IO_ERROR; message = "IOException: " + e.toString(); break; } catch (java.lang.NullPointerException e) { // workaround for an HDFS bug // https://issues.apache.org/jira/browse/HDFS-3533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13296083#comment-13296083 log.info("Catching NullPointerException when getting length " + "of '" + fileName + "' (accurate: " + accurate + ")"); e.printStackTrace(); try { Thread.sleep(1000); } catch (java.lang.InterruptedException ex) { } error = Error.DFSBROKER_IO_ERROR; message = "File not found (HDFS exception): " + e.getMessage(); // fall through and retry } } if (error == Error.OK) error = cb.response(length); else { log.severe("Error getting LENGTH of " + fileName + ": error code " + error + ", message: " + message); error = cb.error(error, message); } if (error != Error.OK) log.severe("Error sending LENGTH response back (error=" + error + ", filename=" + fileName + ", accurate=" + accurate + ")"); }