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

daimin commented on HDFS-16422:
-------------------------------

I tested both NativeRSRawDecoder and RSRawDecoder before, and they seems both 
not thread safe to decode, therefore I simply add a synchronized to the decode 
method.

In consideration of HADOOP-15499, I will do some more tests to find out what's 
missing of the original lock protection.

Thanks for your reminding. [~jingzhao] 

 

> Fix thread safety of EC decoding during concurrent preads
> ---------------------------------------------------------
>
>                 Key: HDFS-16422
>                 URL: https://issues.apache.org/jira/browse/HDFS-16422
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: dfsclient, ec, erasure-coding
>    Affects Versions: 3.3.0, 3.3.1
>            Reporter: daimin
>            Assignee: daimin
>            Priority: Critical
>              Labels: pull-request-available
>             Fix For: 3.4.0, 3.2.3, 3.3.3
>
>          Time Spent: 3h 40m
>  Remaining Estimate: 0h
>
> Reading data on an erasure-coded file with missing replicas(internal block of 
> block group) will cause online reconstruction: read dataUnits part of data 
> and decode them into the target missing data. Each DFSStripedInputStream 
> object has a RawErasureDecoder object, and when we doing pread concurrently, 
> RawErasureDecoder.decode will be invoked concurrently too. 
> RawErasureDecoder.decode is not thread safe, as a result of that we get wrong 
> data from pread occasionally.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to