hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tsz Wo Nicholas Sze (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-12910) Add new FileSystem API to support asynchronous method calls
Date Tue, 07 Jun 2016 03:14:21 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-12910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15317739#comment-15317739
] 

Tsz Wo Nicholas Sze commented on HADOOP-12910:
----------------------------------------------

It seems we all agree that we should use CompletableFuture (a Java 8 class which implements
both Future and CompletionStage) with callback support as a return type in trunk.  Since we
are talking about API, we should actually talk about interfaces instead of classes.  Therefore,
we should return an sub-interface of Future and CompletionStage.

For branch-2, There are two possible ways to use Deferred (or ListenableFuture) :
# Using it directly (i.e. import the external jar and use com.stumbleupon.async.Deferred in
the code).  Then we have an external dependency.
# Copy & Paste Deferred to Hadoop, say org.apache.hadoop.util.concurrent.Deferred.  Then
we can the Deferred functionality but our Deferred is incompatible of the com.stumbleupon.async.Deferred
used in the other projects.  Also, it may be harder to support CompletableFuture in trunk
since we have to support both Deferred and CompletableFuture.

Both choices seem undesirable. Therefore I suggest to create our own interface to support
callbacks for branch-2 as below.
{code}
  public interface Callback<V> {
    void processReturnValue(V returnValue);

    void handleException(Exception exception);
  }

  // branch-2 return type
  public interface FutureWithCallback<V> extends Future<V> {
    void addCallback(Callback<V> callback);
  }
{code}
For trunk, we have
{code}
  // trunk return type
  public interface CompletableFutureWithCallback<V>
      extends FutureWithCallback<V>, CompletionStage<V> {
  }
{code}
Any comments?

> Add new FileSystem API to support asynchronous method calls
> -----------------------------------------------------------
>
>                 Key: HADOOP-12910
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12910
>             Project: Hadoop Common
>          Issue Type: New Feature
>          Components: fs
>            Reporter: Tsz Wo Nicholas Sze
>            Assignee: Xiaobing Zhou
>         Attachments: HADOOP-12910-HDFS-9924.000.patch, HADOOP-12910-HDFS-9924.001.patch,
HADOOP-12910-HDFS-9924.002.patch
>
>
> Add a new API, namely FutureFileSystem (or AsynchronousFileSystem, if it is a better
name).  All the APIs in FutureFileSystem are the same as FileSystem except that the return
type is wrapped by Future, e.g.
> {code}
>   //FileSystem
>   public boolean rename(Path src, Path dst) throws IOException;
>   //FutureFileSystem
>   public Future<Boolean> rename(Path src, Path dst) throws IOException;
> {code}
> Note that FutureFileSystem does not extend FileSystem.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org


Mime
View raw message