add progress callback feature to the slow FileUtil operations with ability to 
cancel the work
---------------------------------------------------------------------------------------------

                 Key: HADOOP-5353
                 URL: https://issues.apache.org/jira/browse/HADOOP-5353
             Project: Hadoop Core
          Issue Type: Improvement
          Components: fs
    Affects Versions: 0.21.0
            Reporter: Steve Loughran
            Priority: Minor


This is something only of relevance of people doing front ends to FS 
operations, and as they could take the code in FSUtil and add something with 
this feature, its a blocker to none of them. 

Current FileUtil.copy can take a long time to move large files around, but 
there is no progress indicator to GUIs, or a way to cancel the operation 
mid-way, short of interrupting the thread or closing the filesystem.

I propose a FileIOProgress interface to the copy ops, one that had a single 
method to notify listeners of bytes read and written, and the number of files 
handled.

{code}
interface FileIOProgress {
 boolean progress(int files, long bytesRead, long bytesWritten);
}

The return value would be true to continue the operation, or false to stop the 
copy and leave the FS in whatever incomplete state it is in currently. 

it could even be fancier: have  beginFileOperation and endFileOperation 
callbacks to pass in the name of the current file being worked on, though I 
don't have a personal need for that.

GUIs could show progress bars and cancel buttons, other tools could use the 
interface to pass any cancellation notice upstream.

The FileUtil.copy operations would call this interface (blocking) after every 
block copy, so the frequency of invocation would depend on block size and 
network/disk speeds. Which is also why I don't propose having any percentage 
done indicators; it's too hard to predict percentage of time done for 
distributed file IO with any degree of accuracy.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to