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

Pete Wyckoff commented on HADOOP-4616:
--------------------------------------

sorry, looking at it more carefully,  this looks like the case where total read 
= 0, so the assertion is actually wrong as you say and should probably be 
instead:

{code}
    assert(bufferReadIndex >= 0 && bufferReadIndex <= fh->bufferSize);          
                                                                                
                                              
{code}

But, if this is that case, the fact that it read 0 bytes should probably mean 
it should return an EIO to be more posix compliant.  so, maybe the if should be 

{code}
  if(num_read < 0 || (total_read == 0 && size > 0)) {
{code}

and the assertion should also be as above to handle the case where size == 0.





> assertion makes fuse-dfs exit when reading incomplete data
> ----------------------------------------------------------
>
>                 Key: HADOOP-4616
>                 URL: https://issues.apache.org/jira/browse/HADOOP-4616
>             Project: Hadoop Core
>          Issue Type: Bug
>          Components: contrib/fuse-dfs
>    Affects Versions: 0.20.0
>            Reporter: Marc-Olivier Fleury
>            Priority: Minor
>
> When trying to read a file that is corrupt on HDFS (registered by the 
> namenode, but part of the data is missing on the datanodes), some of the 
> assertions in dfs_read fail, causing the program to abort. This makes it  
> impossible to access the mounted partition until it is mounted again.
> A simple way to reproduce this bug is to remove enough datanodes to have part 
> of the data missing, and to read each file listed in HDFS.
> this is the assertion that fails (fuse_dfs.c:903) : assert(bufferReadIndex >= 
> 0 && bufferReadIndex < fh->bufferSize);
> The expected behaviour would be to return either no file or a corrupt file, 
> but continue working afterward.
> removing the assertion seems to work for now, but a special behaviour is 
> probably needed to handle this particular problem correctly.

-- 
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