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

stack commented on HBASE-15264:
-------------------------------

[~Apache9] This patch is four new classes that do not touch any other code. 
Could go into master. I think it would be better if the whole working fanout 
WAL provider came in as a 'finished' lump so suggest putting these classes on a 
'FanOutWAL' branch and then fill in the other necessary pieces around it. When 
all running, all current WAL tests with this provider in place are passing, we 
can pull into master branch.

But do what is easier on you making progress (master or branch).

I'm game for testing whenever you ready.

On the patch, ok on having the classes in util for reasons above (on commit, 
add comment on why core i/o classes are off in a util package...).

That is a fat bunch of params to pass the constructor:

312       FanOutOneBlockAsyncDFSOutput(Configuration conf, FSUtils fsUtils, 
DistributedFileSystem dfs,
313           DFSClient client, ClientProtocol namenode, String clientName, 
String src, long fileId,
314           LocatedBlock locatedBlock, EventLoop eventLoop, List<Channel> 
datanodeList,
315           DataChecksum summer, ByteBufAllocator alloc) {

Thats how DFSOS takes params? Can't do builder because all params are needed?

FanOutOneBlockAsyncDFSOutput is clean, easy enough to follow what is going on 
(I think -- smile -- if I can remember my netty-ese). The helper needs a bit of 
commentary. You know how it all works at the moment. Would be good to get some 
doc in there while fresh in your mind. Like how DFS_CLIENT_ADAPTOR works and 
LeaseManager (Sorry you have to do all this reflection stuff but you have it 
nicely contained)... even if it was just a note on why you have to do these 
gymnastics and the basic technique you have employed.

What did we say about this:

    ByteBuf checksumBuf = alloc.directBuffer(checksumLen);

That we are allocating offheap. when writing always....  The offheap 
allocations are relatively slow... Can use a pool later?

... and here:     ByteBuf newBuf = 
alloc.directBuffer().ensureWritable(trailingPartialChunkLen);

Tests look good -- yeah, the create w/o create of parent is needed for the 
fencing trick.

This looks great [~Apache9]









> Implement a fan out HDFS OutputStream
> -------------------------------------
>
>                 Key: HBASE-15264
>                 URL: https://issues.apache.org/jira/browse/HBASE-15264
>             Project: HBase
>          Issue Type: Sub-task
>          Components: util, wal
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15264-v1.patch, HBASE-15264-v2.patch, 
> HBASE-15264-v3.patch, HBASE-15264-v4.patch, HBASE-15264-v5.patch, 
> HBASE-15264-v6.patch, HBASE-15264.patch
>
>




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

Reply via email to