|
@@ -1887,8 +1887,9 @@ class DFSClient implements FSConstants {
|
|
|
" size:" + len +
|
|
|
" offsetInBlock:" + offsetInBlock +
|
|
|
" lastPacketInBlock:" + one.lastPacketInBlock);
|
|
|
- } catch (IOException e) {
|
|
|
- LOG.warn("DataStreamer Exception: " + e);
|
|
|
+ } catch (Throwable e) {
|
|
|
+ LOG.warn("DataStreamer Exception: " +
|
|
|
+ StringUtils.stringifyException(e));
|
|
|
hasError = true;
|
|
|
}
|
|
|
}
|
|
@@ -2629,6 +2630,7 @@ class DFSClient implements FSConstants {
|
|
|
}
|
|
|
|
|
|
flushInternal(); // flush all data to Datanodes
|
|
|
+ isClosed();
|
|
|
closed = true;
|
|
|
|
|
|
closeThreads();
|
|
@@ -2651,6 +2653,8 @@ class DFSClient implements FSConstants {
|
|
|
|
|
|
long localstart = System.currentTimeMillis();
|
|
|
boolean fileComplete = false;
|
|
|
+ int fileCompleteRetry = 0;
|
|
|
+ final int checkFileCompleteRetry = 10;
|
|
|
while (!fileComplete) {
|
|
|
fileComplete = namenode.complete(src, clientName);
|
|
|
if (!fileComplete) {
|
|
@@ -2661,6 +2665,9 @@ class DFSClient implements FSConstants {
|
|
|
}
|
|
|
} catch (InterruptedException ie) {
|
|
|
}
|
|
|
+ // after retrying for checkFileCompleteRetry times check isClosed()
|
|
|
+ if ((++fileCompleteRetry % checkFileCompleteRetry) == 0)
|
|
|
+ isClosed();
|
|
|
}
|
|
|
}
|
|
|
} finally {
|