[ 
https://issues.apache.org/jira/browse/RATIS-2510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tsz-wo Sze resolved RATIS-2510.
-------------------------------
    Fix Version/s: 3.3.0
       Resolution: Fixed

The pull request is now merged.

> NettyClientStreamRpc may retain a completely released object.
> -------------------------------------------------------------
>
>                 Key: RATIS-2510
>                 URL: https://issues.apache.org/jira/browse/RATIS-2510
>             Project: Ratis
>          Issue Type: Bug
>          Components: Streaming
>            Reporter: Tsz-wo Sze
>            Assignee: Tsz-wo Sze
>            Priority: Major
>             Fix For: 3.3.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> {code}
> // NettyClientStreamRpc.WorkerGroupGetter.(RaftProperties properties)
>         return new WorkerGroupGetter(current.join().retain()) {
> {code}
> In the code above, the current object may be released completely after join().
> {code}
> Error:  org.apache.hadoop.ozone.client.rpc.read.TestStreamRead.testReadKey16k 
> -- Time elapsed: 28.89 s <<< ERROR!
> java.io.IOException: java.lang.IllegalStateException: Failed to retain: 
> object has already been completely released.
>       at 
> org.apache.hadoop.ozone.client.io.KeyDataStreamOutput.handleWrite(KeyDataStreamOutput.java:222)
>       at 
> org.apache.hadoop.ozone.client.io.KeyDataStreamOutput.write(KeyDataStreamOutput.java:192)
>       at 
> org.apache.hadoop.ozone.client.io.OzoneDataStreamOutput.write(OzoneDataStreamOutput.java:88)
>       at 
> org.apache.hadoop.ozone.client.io.ByteBufferOutputStream.write(ByteBufferOutputStream.java:42)
>       at 
> org.apache.hadoop.ozone.client.rpc.read.TestStreamRead.createKey(TestStreamRead.java:261)
>       at 
> org.apache.hadoop.ozone.client.rpc.read.TestStreamRead.runTestReadKey(TestStreamRead.java:169)
>       at 
> org.apache.hadoop.ozone.client.rpc.read.TestStreamRead.testReadKey16k(TestStreamRead.java:120)
>       ...
> Caused by: java.lang.IllegalStateException: Failed to retain: object has 
> already been completely released.
>       at 
> org.apache.ratis.util.ReferenceCountedObject$2.retain(ReferenceCountedObject.java:138)
>       at 
> org.apache.ratis.netty.client.NettyClientStreamRpc$WorkerGroupGetter.newInstance(NettyClientStreamRpc.java:97)
>       at 
> org.apache.ratis.netty.client.NettyClientStreamRpc.<init>(NettyClientStreamRpc.java:316)
>       at 
> org.apache.ratis.netty.NettyDataStreamFactory.newDataStreamClientRpc(NettyDataStreamFactory.java:48)
>       at 
> org.apache.ratis.client.DataStreamClient$Builder.build(DataStreamClient.java:73)
>       at 
> org.apache.ratis.client.impl.RaftClientImpl.lambda$new$5(RaftClientImpl.java:219)
>       at org.apache.ratis.util.MemoizedSupplier.get(MemoizedSupplier.java:63)
>       at 
> org.apache.ratis.client.impl.RaftClientImpl.getDataStreamApi(RaftClientImpl.java:343)
>       at 
> org.apache.hadoop.hdds.scm.XceiverClientRatis.getDataStreamApi(XceiverClientRatis.java:424)
>       at 
> org.apache.hadoop.hdds.scm.storage.BlockDataStreamOutput.setupStream(BlockDataStreamOutput.java:228)
>       at 
> org.apache.hadoop.hdds.scm.storage.BlockDataStreamOutput.<init>(BlockDataStreamOutput.java:173)
>       at 
> org.apache.hadoop.ozone.client.io.BlockDataStreamOutputEntry.checkStream(BlockDataStreamOutputEntry.java:98)
>       at 
> org.apache.hadoop.ozone.client.io.BlockDataStreamOutputEntry.write(BlockDataStreamOutputEntry.java:106)
>       at 
> org.apache.hadoop.ozone.client.io.KeyDataStreamOutput.writeToDataStreamOutput(KeyDataStreamOutput.java:234)
>       at 
> org.apache.hadoop.ozone.client.io.KeyDataStreamOutput.handleWrite(KeyDataStreamOutput.java:212)
>       ... 12 more
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to