Fix thread safety of EC decoding during concurrent preads (#3881)
(cherry picked from commit 0e74f1e467
)
This commit is contained in:
parent
5b47b9f360
commit
9071c9646c
|
@ -81,7 +81,7 @@ public abstract class RawErasureDecoder {
|
|||
* @param outputs output buffers to put decoded data into according to
|
||||
* erasedIndexes, ready for read after the call
|
||||
*/
|
||||
public void decode(ByteBuffer[] inputs, int[] erasedIndexes,
|
||||
public synchronized void decode(ByteBuffer[] inputs, int[] erasedIndexes,
|
||||
ByteBuffer[] outputs) throws IOException {
|
||||
ByteBufferDecodingState decodingState = new ByteBufferDecodingState(this,
|
||||
inputs, erasedIndexes, outputs);
|
||||
|
@ -130,7 +130,7 @@ public abstract class RawErasureDecoder {
|
|||
* erasedIndexes, ready for read after the call
|
||||
* @throws IOException if the decoder is closed.
|
||||
*/
|
||||
public void decode(byte[][] inputs, int[] erasedIndexes, byte[][] outputs)
|
||||
public synchronized void decode(byte[][] inputs, int[] erasedIndexes, byte[][] outputs)
|
||||
throws IOException {
|
||||
ByteArrayDecodingState decodingState = new ByteArrayDecodingState(this,
|
||||
inputs, erasedIndexes, outputs);
|
||||
|
@ -163,7 +163,7 @@ public abstract class RawErasureDecoder {
|
|||
* erasedIndexes, ready for read after the call
|
||||
* @throws IOException if the decoder is closed
|
||||
*/
|
||||
public void decode(ECChunk[] inputs, int[] erasedIndexes,
|
||||
public synchronized void decode(ECChunk[] inputs, int[] erasedIndexes,
|
||||
ECChunk[] outputs) throws IOException {
|
||||
ByteBuffer[] newInputs = CoderUtil.toBuffers(inputs);
|
||||
ByteBuffer[] newOutputs = CoderUtil.toBuffers(outputs);
|
||||
|
|
Loading…
Reference in New Issue