[
https://issues.apache.org/jira/browse/RATIS-2510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tsz-wo Sze updated RATIS-2510:
------------------------------
Description:
{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}
was:
{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)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at
java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at
java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
at
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
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}
> 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
>
> {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)