You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/05/02 14:47:24 UTC

[4/8] hbase-site git commit: Published site at 2e9b96e4f14c2802b59c6037cbfe4a427ec93bea.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c3fc94f0/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.FileCreator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.FileCreator.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.FileCreator.html
index ad7bc92..eb6a26e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.FileCreator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.FileCreator.html
@@ -808,104 +808,101 @@
 <span class="sourceLineNo">800</span>        } else {<a name="line.800"></a>
 <span class="sourceLineNo">801</span>          throw e.unwrapRemoteException();<a name="line.801"></a>
 <span class="sourceLineNo">802</span>        }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      } catch (NameNodeException e) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>        throw e;<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      } catch (IOException e) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>        if (retry &gt;= createMaxRetries) {<a name="line.807"></a>
-<span class="sourceLineNo">808</span>          throw e;<a name="line.808"></a>
-<span class="sourceLineNo">809</span>        }<a name="line.809"></a>
-<span class="sourceLineNo">810</span>        // overwrite the old broken file.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        overwrite = true;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>        try {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        } catch (InterruptedException ie) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>          throw new InterruptedIOException();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      } finally {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        if (!succ) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          if (futureList != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>                @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>                  if (future.isSuccess()) {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>                    future.getNow().close();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                  }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>              });<a name="line.829"></a>
-<span class="sourceLineNo">830</span>            }<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          endFileLease(client, stat.getFileId());<a name="line.832"></a>
-<span class="sourceLineNo">833</span>          fsUtils.recoverFileLease(dfs, new Path(src), conf, new CancelOnClose(client));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        }<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      }<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * inside an {@link EventLoop}.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   */<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>      @Override<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.849"></a>
-<span class="sourceLineNo">850</span>          throws IOException, UnresolvedLinkException {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          blockSize, eventLoopGroup, channelClass);<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
-<span class="sourceLineNo">854</span><a name="line.854"></a>
-<span class="sourceLineNo">855</span>      @Override<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        throw new UnsupportedOperationException();<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    }.resolve(dfs, f);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    // DFSOutputStream.newStreamForCreate.<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      ExtendedBlock block, long fileId) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    for (int retry = 0;; retry++) {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          endFileLease(client, fileId);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          return;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        } else {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        }<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      } catch (RemoteException e) {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>        IOException ioe = e.unwrapRemoteException();<a name="line.880"></a>
-<span class="sourceLineNo">881</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.881"></a>
-<span class="sourceLineNo">882</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>          return;<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        } else {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        }<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      } catch (Exception e) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      sleepIgnoreInterrupt(retry);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  }<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    try {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    } catch (InterruptedException e) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>}<a name="line.900"></a>
+<span class="sourceLineNo">803</span>      } catch (IOException e) {<a name="line.803"></a>
+<span class="sourceLineNo">804</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.804"></a>
+<span class="sourceLineNo">805</span>        if (retry &gt;= createMaxRetries) {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>          throw e;<a name="line.806"></a>
+<span class="sourceLineNo">807</span>        }<a name="line.807"></a>
+<span class="sourceLineNo">808</span>        // overwrite the old broken file.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>        overwrite = true;<a name="line.809"></a>
+<span class="sourceLineNo">810</span>        try {<a name="line.810"></a>
+<span class="sourceLineNo">811</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        } catch (InterruptedException ie) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>          throw new InterruptedIOException();<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        }<a name="line.814"></a>
+<span class="sourceLineNo">815</span>      } finally {<a name="line.815"></a>
+<span class="sourceLineNo">816</span>        if (!succ) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>          if (futureList != null) {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.819"></a>
+<span class="sourceLineNo">820</span><a name="line.820"></a>
+<span class="sourceLineNo">821</span>                @Override<a name="line.821"></a>
+<span class="sourceLineNo">822</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>                  if (future.isSuccess()) {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>                    future.getNow().close();<a name="line.824"></a>
+<span class="sourceLineNo">825</span>                  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span>                }<a name="line.826"></a>
+<span class="sourceLineNo">827</span>              });<a name="line.827"></a>
+<span class="sourceLineNo">828</span>            }<a name="line.828"></a>
+<span class="sourceLineNo">829</span>          }<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          endFileLease(client, stat.getFileId());<a name="line.830"></a>
+<span class="sourceLineNo">831</span>        }<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      }<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
+<span class="sourceLineNo">835</span><a name="line.835"></a>
+<span class="sourceLineNo">836</span>  /**<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * inside an {@link EventLoop}.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   */<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.841"></a>
+<span class="sourceLineNo">842</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>      @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>          throws IOException, UnresolvedLinkException {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.848"></a>
+<span class="sourceLineNo">849</span>          blockSize, eventLoopGroup, channelClass);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      }<a name="line.850"></a>
+<span class="sourceLineNo">851</span><a name="line.851"></a>
+<span class="sourceLineNo">852</span>      @Override<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.853"></a>
+<span class="sourceLineNo">854</span>        throw new UnsupportedOperationException();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }.resolve(dfs, f);<a name="line.856"></a>
+<span class="sourceLineNo">857</span>  }<a name="line.857"></a>
+<span class="sourceLineNo">858</span><a name="line.858"></a>
+<span class="sourceLineNo">859</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    // DFSOutputStream.newStreamForCreate.<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.863"></a>
+<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
+<span class="sourceLineNo">865</span><a name="line.865"></a>
+<span class="sourceLineNo">866</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.866"></a>
+<span class="sourceLineNo">867</span>      ExtendedBlock block, long fileId) {<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    for (int retry = 0;; retry++) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      try {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          endFileLease(client, fileId);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>          return;<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        } else {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>        }<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      } catch (RemoteException e) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        IOException ioe = e.unwrapRemoteException();<a name="line.877"></a>
+<span class="sourceLineNo">878</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          return;<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        } else {<a name="line.881"></a>
+<span class="sourceLineNo">882</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.882"></a>
+<span class="sourceLineNo">883</span>        }<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      } catch (Exception e) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      sleepIgnoreInterrupt(retry);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span>  }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    try {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (InterruptedException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>}<a name="line.897"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c3fc94f0/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.LeaseManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.LeaseManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.LeaseManager.html
index ad7bc92..eb6a26e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.LeaseManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.LeaseManager.html
@@ -808,104 +808,101 @@
 <span class="sourceLineNo">800</span>        } else {<a name="line.800"></a>
 <span class="sourceLineNo">801</span>          throw e.unwrapRemoteException();<a name="line.801"></a>
 <span class="sourceLineNo">802</span>        }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      } catch (NameNodeException e) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>        throw e;<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      } catch (IOException e) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>        if (retry &gt;= createMaxRetries) {<a name="line.807"></a>
-<span class="sourceLineNo">808</span>          throw e;<a name="line.808"></a>
-<span class="sourceLineNo">809</span>        }<a name="line.809"></a>
-<span class="sourceLineNo">810</span>        // overwrite the old broken file.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        overwrite = true;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>        try {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        } catch (InterruptedException ie) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>          throw new InterruptedIOException();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      } finally {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        if (!succ) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          if (futureList != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>                @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>                  if (future.isSuccess()) {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>                    future.getNow().close();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                  }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>              });<a name="line.829"></a>
-<span class="sourceLineNo">830</span>            }<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          endFileLease(client, stat.getFileId());<a name="line.832"></a>
-<span class="sourceLineNo">833</span>          fsUtils.recoverFileLease(dfs, new Path(src), conf, new CancelOnClose(client));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        }<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      }<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * inside an {@link EventLoop}.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   */<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>      @Override<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.849"></a>
-<span class="sourceLineNo">850</span>          throws IOException, UnresolvedLinkException {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          blockSize, eventLoopGroup, channelClass);<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
-<span class="sourceLineNo">854</span><a name="line.854"></a>
-<span class="sourceLineNo">855</span>      @Override<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        throw new UnsupportedOperationException();<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    }.resolve(dfs, f);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    // DFSOutputStream.newStreamForCreate.<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      ExtendedBlock block, long fileId) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    for (int retry = 0;; retry++) {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          endFileLease(client, fileId);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          return;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        } else {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        }<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      } catch (RemoteException e) {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>        IOException ioe = e.unwrapRemoteException();<a name="line.880"></a>
-<span class="sourceLineNo">881</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.881"></a>
-<span class="sourceLineNo">882</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>          return;<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        } else {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        }<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      } catch (Exception e) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      sleepIgnoreInterrupt(retry);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  }<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    try {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    } catch (InterruptedException e) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>}<a name="line.900"></a>
+<span class="sourceLineNo">803</span>      } catch (IOException e) {<a name="line.803"></a>
+<span class="sourceLineNo">804</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.804"></a>
+<span class="sourceLineNo">805</span>        if (retry &gt;= createMaxRetries) {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>          throw e;<a name="line.806"></a>
+<span class="sourceLineNo">807</span>        }<a name="line.807"></a>
+<span class="sourceLineNo">808</span>        // overwrite the old broken file.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>        overwrite = true;<a name="line.809"></a>
+<span class="sourceLineNo">810</span>        try {<a name="line.810"></a>
+<span class="sourceLineNo">811</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        } catch (InterruptedException ie) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>          throw new InterruptedIOException();<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        }<a name="line.814"></a>
+<span class="sourceLineNo">815</span>      } finally {<a name="line.815"></a>
+<span class="sourceLineNo">816</span>        if (!succ) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>          if (futureList != null) {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.819"></a>
+<span class="sourceLineNo">820</span><a name="line.820"></a>
+<span class="sourceLineNo">821</span>                @Override<a name="line.821"></a>
+<span class="sourceLineNo">822</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>                  if (future.isSuccess()) {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>                    future.getNow().close();<a name="line.824"></a>
+<span class="sourceLineNo">825</span>                  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span>                }<a name="line.826"></a>
+<span class="sourceLineNo">827</span>              });<a name="line.827"></a>
+<span class="sourceLineNo">828</span>            }<a name="line.828"></a>
+<span class="sourceLineNo">829</span>          }<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          endFileLease(client, stat.getFileId());<a name="line.830"></a>
+<span class="sourceLineNo">831</span>        }<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      }<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
+<span class="sourceLineNo">835</span><a name="line.835"></a>
+<span class="sourceLineNo">836</span>  /**<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * inside an {@link EventLoop}.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   */<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.841"></a>
+<span class="sourceLineNo">842</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>      @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>          throws IOException, UnresolvedLinkException {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.848"></a>
+<span class="sourceLineNo">849</span>          blockSize, eventLoopGroup, channelClass);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      }<a name="line.850"></a>
+<span class="sourceLineNo">851</span><a name="line.851"></a>
+<span class="sourceLineNo">852</span>      @Override<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.853"></a>
+<span class="sourceLineNo">854</span>        throw new UnsupportedOperationException();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }.resolve(dfs, f);<a name="line.856"></a>
+<span class="sourceLineNo">857</span>  }<a name="line.857"></a>
+<span class="sourceLineNo">858</span><a name="line.858"></a>
+<span class="sourceLineNo">859</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    // DFSOutputStream.newStreamForCreate.<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.863"></a>
+<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
+<span class="sourceLineNo">865</span><a name="line.865"></a>
+<span class="sourceLineNo">866</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.866"></a>
+<span class="sourceLineNo">867</span>      ExtendedBlock block, long fileId) {<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    for (int retry = 0;; retry++) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      try {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          endFileLease(client, fileId);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>          return;<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        } else {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>        }<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      } catch (RemoteException e) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        IOException ioe = e.unwrapRemoteException();<a name="line.877"></a>
+<span class="sourceLineNo">878</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          return;<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        } else {<a name="line.881"></a>
+<span class="sourceLineNo">882</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.882"></a>
+<span class="sourceLineNo">883</span>        }<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      } catch (Exception e) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      sleepIgnoreInterrupt(retry);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span>  }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    try {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (InterruptedException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>}<a name="line.897"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c3fc94f0/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.NameNodeException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.NameNodeException.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.NameNodeException.html
index ad7bc92..eb6a26e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.NameNodeException.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.NameNodeException.html
@@ -808,104 +808,101 @@
 <span class="sourceLineNo">800</span>        } else {<a name="line.800"></a>
 <span class="sourceLineNo">801</span>          throw e.unwrapRemoteException();<a name="line.801"></a>
 <span class="sourceLineNo">802</span>        }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      } catch (NameNodeException e) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>        throw e;<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      } catch (IOException e) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>        if (retry &gt;= createMaxRetries) {<a name="line.807"></a>
-<span class="sourceLineNo">808</span>          throw e;<a name="line.808"></a>
-<span class="sourceLineNo">809</span>        }<a name="line.809"></a>
-<span class="sourceLineNo">810</span>        // overwrite the old broken file.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        overwrite = true;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>        try {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        } catch (InterruptedException ie) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>          throw new InterruptedIOException();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      } finally {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        if (!succ) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          if (futureList != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>                @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>                  if (future.isSuccess()) {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>                    future.getNow().close();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                  }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>              });<a name="line.829"></a>
-<span class="sourceLineNo">830</span>            }<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          endFileLease(client, stat.getFileId());<a name="line.832"></a>
-<span class="sourceLineNo">833</span>          fsUtils.recoverFileLease(dfs, new Path(src), conf, new CancelOnClose(client));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        }<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      }<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * inside an {@link EventLoop}.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   */<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>      @Override<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.849"></a>
-<span class="sourceLineNo">850</span>          throws IOException, UnresolvedLinkException {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          blockSize, eventLoopGroup, channelClass);<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
-<span class="sourceLineNo">854</span><a name="line.854"></a>
-<span class="sourceLineNo">855</span>      @Override<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        throw new UnsupportedOperationException();<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    }.resolve(dfs, f);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    // DFSOutputStream.newStreamForCreate.<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      ExtendedBlock block, long fileId) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    for (int retry = 0;; retry++) {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          endFileLease(client, fileId);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          return;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        } else {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        }<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      } catch (RemoteException e) {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>        IOException ioe = e.unwrapRemoteException();<a name="line.880"></a>
-<span class="sourceLineNo">881</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.881"></a>
-<span class="sourceLineNo">882</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>          return;<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        } else {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        }<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      } catch (Exception e) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      sleepIgnoreInterrupt(retry);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  }<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    try {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    } catch (InterruptedException e) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>}<a name="line.900"></a>
+<span class="sourceLineNo">803</span>      } catch (IOException e) {<a name="line.803"></a>
+<span class="sourceLineNo">804</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.804"></a>
+<span class="sourceLineNo">805</span>        if (retry &gt;= createMaxRetries) {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>          throw e;<a name="line.806"></a>
+<span class="sourceLineNo">807</span>        }<a name="line.807"></a>
+<span class="sourceLineNo">808</span>        // overwrite the old broken file.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>        overwrite = true;<a name="line.809"></a>
+<span class="sourceLineNo">810</span>        try {<a name="line.810"></a>
+<span class="sourceLineNo">811</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        } catch (InterruptedException ie) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>          throw new InterruptedIOException();<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        }<a name="line.814"></a>
+<span class="sourceLineNo">815</span>      } finally {<a name="line.815"></a>
+<span class="sourceLineNo">816</span>        if (!succ) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>          if (futureList != null) {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.819"></a>
+<span class="sourceLineNo">820</span><a name="line.820"></a>
+<span class="sourceLineNo">821</span>                @Override<a name="line.821"></a>
+<span class="sourceLineNo">822</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>                  if (future.isSuccess()) {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>                    future.getNow().close();<a name="line.824"></a>
+<span class="sourceLineNo">825</span>                  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span>                }<a name="line.826"></a>
+<span class="sourceLineNo">827</span>              });<a name="line.827"></a>
+<span class="sourceLineNo">828</span>            }<a name="line.828"></a>
+<span class="sourceLineNo">829</span>          }<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          endFileLease(client, stat.getFileId());<a name="line.830"></a>
+<span class="sourceLineNo">831</span>        }<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      }<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
+<span class="sourceLineNo">835</span><a name="line.835"></a>
+<span class="sourceLineNo">836</span>  /**<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * inside an {@link EventLoop}.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   */<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.841"></a>
+<span class="sourceLineNo">842</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>      @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>          throws IOException, UnresolvedLinkException {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.848"></a>
+<span class="sourceLineNo">849</span>          blockSize, eventLoopGroup, channelClass);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      }<a name="line.850"></a>
+<span class="sourceLineNo">851</span><a name="line.851"></a>
+<span class="sourceLineNo">852</span>      @Override<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.853"></a>
+<span class="sourceLineNo">854</span>        throw new UnsupportedOperationException();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }.resolve(dfs, f);<a name="line.856"></a>
+<span class="sourceLineNo">857</span>  }<a name="line.857"></a>
+<span class="sourceLineNo">858</span><a name="line.858"></a>
+<span class="sourceLineNo">859</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    // DFSOutputStream.newStreamForCreate.<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.863"></a>
+<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
+<span class="sourceLineNo">865</span><a name="line.865"></a>
+<span class="sourceLineNo">866</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.866"></a>
+<span class="sourceLineNo">867</span>      ExtendedBlock block, long fileId) {<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    for (int retry = 0;; retry++) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      try {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          endFileLease(client, fileId);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>          return;<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        } else {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>        }<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      } catch (RemoteException e) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        IOException ioe = e.unwrapRemoteException();<a name="line.877"></a>
+<span class="sourceLineNo">878</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          return;<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        } else {<a name="line.881"></a>
+<span class="sourceLineNo">882</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.882"></a>
+<span class="sourceLineNo">883</span>        }<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      } catch (Exception e) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      sleepIgnoreInterrupt(retry);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span>  }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    try {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (InterruptedException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>}<a name="line.897"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c3fc94f0/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.PBHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.PBHelper.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.PBHelper.html
index ad7bc92..eb6a26e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.PBHelper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.PBHelper.html
@@ -808,104 +808,101 @@
 <span class="sourceLineNo">800</span>        } else {<a name="line.800"></a>
 <span class="sourceLineNo">801</span>          throw e.unwrapRemoteException();<a name="line.801"></a>
 <span class="sourceLineNo">802</span>        }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      } catch (NameNodeException e) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>        throw e;<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      } catch (IOException e) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>        if (retry &gt;= createMaxRetries) {<a name="line.807"></a>
-<span class="sourceLineNo">808</span>          throw e;<a name="line.808"></a>
-<span class="sourceLineNo">809</span>        }<a name="line.809"></a>
-<span class="sourceLineNo">810</span>        // overwrite the old broken file.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        overwrite = true;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>        try {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        } catch (InterruptedException ie) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>          throw new InterruptedIOException();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      } finally {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        if (!succ) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          if (futureList != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>                @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>                  if (future.isSuccess()) {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>                    future.getNow().close();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                  }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>              });<a name="line.829"></a>
-<span class="sourceLineNo">830</span>            }<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          endFileLease(client, stat.getFileId());<a name="line.832"></a>
-<span class="sourceLineNo">833</span>          fsUtils.recoverFileLease(dfs, new Path(src), conf, new CancelOnClose(client));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        }<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      }<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * inside an {@link EventLoop}.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   */<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>      @Override<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.849"></a>
-<span class="sourceLineNo">850</span>          throws IOException, UnresolvedLinkException {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          blockSize, eventLoopGroup, channelClass);<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      }<a name="line.853"></a>
-<span class="sourceLineNo">854</span><a name="line.854"></a>
-<span class="sourceLineNo">855</span>      @Override<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>        throw new UnsupportedOperationException();<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      }<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    }.resolve(dfs, f);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    // DFSOutputStream.newStreamForCreate.<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      ExtendedBlock block, long fileId) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    for (int retry = 0;; retry++) {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          endFileLease(client, fileId);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          return;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        } else {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        }<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      } catch (RemoteException e) {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>        IOException ioe = e.unwrapRemoteException();<a name="line.880"></a>
-<span class="sourceLineNo">881</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.881"></a>
-<span class="sourceLineNo">882</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>          return;<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        } else {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        }<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      } catch (Exception e) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      sleepIgnoreInterrupt(retry);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  }<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    try {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    } catch (InterruptedException e) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span>}<a name="line.900"></a>
+<span class="sourceLineNo">803</span>      } catch (IOException e) {<a name="line.803"></a>
+<span class="sourceLineNo">804</span>        LOG.warn("create fan-out dfs output {} failed, retry = {}", src, retry, e);<a name="line.804"></a>
+<span class="sourceLineNo">805</span>        if (retry &gt;= createMaxRetries) {<a name="line.805"></a>
+<span class="sourceLineNo">806</span>          throw e;<a name="line.806"></a>
+<span class="sourceLineNo">807</span>        }<a name="line.807"></a>
+<span class="sourceLineNo">808</span>        // overwrite the old broken file.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>        overwrite = true;<a name="line.809"></a>
+<span class="sourceLineNo">810</span>        try {<a name="line.810"></a>
+<span class="sourceLineNo">811</span>          Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        } catch (InterruptedException ie) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>          throw new InterruptedIOException();<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        }<a name="line.814"></a>
+<span class="sourceLineNo">815</span>      } finally {<a name="line.815"></a>
+<span class="sourceLineNo">816</span>        if (!succ) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>          if (futureList != null) {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>            for (Future&lt;Channel&gt; f : futureList) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>              f.addListener(new FutureListener&lt;Channel&gt;() {<a name="line.819"></a>
+<span class="sourceLineNo">820</span><a name="line.820"></a>
+<span class="sourceLineNo">821</span>                @Override<a name="line.821"></a>
+<span class="sourceLineNo">822</span>                public void operationComplete(Future&lt;Channel&gt; future) throws Exception {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>                  if (future.isSuccess()) {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>                    future.getNow().close();<a name="line.824"></a>
+<span class="sourceLineNo">825</span>                  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span>                }<a name="line.826"></a>
+<span class="sourceLineNo">827</span>              });<a name="line.827"></a>
+<span class="sourceLineNo">828</span>            }<a name="line.828"></a>
+<span class="sourceLineNo">829</span>          }<a name="line.829"></a>
+<span class="sourceLineNo">830</span>          endFileLease(client, stat.getFileId());<a name="line.830"></a>
+<span class="sourceLineNo">831</span>        }<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      }<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
+<span class="sourceLineNo">835</span><a name="line.835"></a>
+<span class="sourceLineNo">836</span>  /**<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   * Create a {@link FanOutOneBlockAsyncDFSOutput}. The method maybe blocked so do not call it<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * inside an {@link EventLoop}.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   */<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public static FanOutOneBlockAsyncDFSOutput createOutput(DistributedFileSystem dfs, Path f,<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      boolean overwrite, boolean createParent, short replication, long blockSize,<a name="line.841"></a>
+<span class="sourceLineNo">842</span>      EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass) throws IOException {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    return new FileSystemLinkResolver&lt;FanOutOneBlockAsyncDFSOutput&gt;() {<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>      @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      public FanOutOneBlockAsyncDFSOutput doCall(Path p)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>          throws IOException, UnresolvedLinkException {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        return createOutput(dfs, p.toUri().getPath(), overwrite, createParent, replication,<a name="line.848"></a>
+<span class="sourceLineNo">849</span>          blockSize, eventLoopGroup, channelClass);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      }<a name="line.850"></a>
+<span class="sourceLineNo">851</span><a name="line.851"></a>
+<span class="sourceLineNo">852</span>      @Override<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      public FanOutOneBlockAsyncDFSOutput next(FileSystem fs, Path p) throws IOException {<a name="line.853"></a>
+<span class="sourceLineNo">854</span>        throw new UnsupportedOperationException();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }.resolve(dfs, f);<a name="line.856"></a>
+<span class="sourceLineNo">857</span>  }<a name="line.857"></a>
+<span class="sourceLineNo">858</span><a name="line.858"></a>
+<span class="sourceLineNo">859</span>  public static boolean shouldRetryCreate(RemoteException e) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // RetryStartFileException is introduced in HDFS 2.6+, so here we can only use the class name.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    // For exceptions other than this, we just throw it out. This is same with<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    // DFSOutputStream.newStreamForCreate.<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    return e.getClassName().endsWith("RetryStartFileException");<a name="line.863"></a>
+<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
+<span class="sourceLineNo">865</span><a name="line.865"></a>
+<span class="sourceLineNo">866</span>  static void completeFile(DFSClient client, ClientProtocol namenode, String src, String clientName,<a name="line.866"></a>
+<span class="sourceLineNo">867</span>      ExtendedBlock block, long fileId) {<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    for (int retry = 0;; retry++) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      try {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>        if (namenode.complete(src, clientName, block, fileId)) {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          endFileLease(client, fileId);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>          return;<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        } else {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>          LOG.warn("complete file " + src + " not finished, retry = " + retry);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>        }<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      } catch (RemoteException e) {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        IOException ioe = e.unwrapRemoteException();<a name="line.877"></a>
+<span class="sourceLineNo">878</span>        if (ioe instanceof LeaseExpiredException) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>          LOG.warn("lease for file " + src + " is expired, give up", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          return;<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        } else {<a name="line.881"></a>
+<span class="sourceLineNo">882</span>          LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.882"></a>
+<span class="sourceLineNo">883</span>        }<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      } catch (Exception e) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        LOG.warn("complete file " + src + " failed, retry = " + retry, e);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      sleepIgnoreInterrupt(retry);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span>  }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span>  static void sleepIgnoreInterrupt(int retry) {<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    try {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      Thread.sleep(ConnectionUtils.getPauseTime(100, retry));<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    } catch (InterruptedException e) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>}<a name="line.897"></a>