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

ASF GitHub Bot logged work on HDFS-16422:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 25/Jan/22 17:06
            Start Date: 25/Jan/22 17:06
    Worklog Time Spent: 10m 
      Work Description: jojochuang commented on a change in pull request #3881:
URL: https://github.com/apache/hadoop/pull/3881#discussion_r791286115



##########
File path: 
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/StripeReader.java
##########
@@ -432,7 +432,9 @@ void decodeAndFillBuffer(boolean fillBuffer) throws 
IOException {
 
     long start = Time.monotonicNow();
     // Step 2: decode into prepared output buffers
-    decoder.decode(decodeInputs, decodeIndices, outputs);
+    synchronized (decoder) {

Review comment:
       IMO, we should make RawErasureDecoder.decode() synchronized instead. 

##########
File path: 
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/StripeReader.java
##########
@@ -432,7 +432,9 @@ void decodeAndFillBuffer(boolean fillBuffer) throws 
IOException {
 
     long start = Time.monotonicNow();
     // Step 2: decode into prepared output buffers
-    decoder.decode(decodeInputs, decodeIndices, outputs);
+    synchronized (decoder) {

Review comment:
       IMO, we should make RawErasureDecoder.decode(ByteBuffer[] inputs, int[] 
erasedIndexes, ByteBuffer[] outputs) synchronized instead. 




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 715015)
    Time Spent: 1h 40m  (was: 1.5h)

> 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
>          Time Spent: 1h 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: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to