[
https://issues.apache.org/jira/browse/HDDS-12742?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Swaminathan Balachandran updated HDDS-12742:
--------------------------------------------
Description:
Currently when RDBStoreCodecBufferIterator returns a keyValue to a caller the
KeyValue may not be consistent and could have been modified when the next()
value is invoked from the iterator. The codecBuffer returned from the first
call may have been modified and thus also making this entire Iterator
implementation not thread safe.
The proposal here is to have a pool of Buffers and return a closeable handle of
KeyValue to the caller which would be only released when the handle to the
codec buffers is released.
was:
Currently when RDBStoreCodecBufferIterator returns a keyValue to a caller the
KeyValue may not be consistent and could have been modified when the next()
value is invoked from the iterator. The codecBuffer returned from the first
call may have been modified and thus also making this entire Iterator
implementation not thread safe.
Moreover RDBStoreAbstractIterator does redundant key & value native calls
multiple times, even though the entry is there in the heap memory. This could
have mighty implications on the performance since every native call implies a
buffer copy between the native buffer to the DirectByteBuffer provided or
creating a java heap byte array.
The proposal here is to have a pool of Buffers and return a reference counted
KeyValue to the caller which would be only released when all references to the
codec buffers are not released. Even though the next method for the
RDBStoreAbstractIterator has to made synchronized but the above proposed
changes would give us a huge performance bump up.
> Implement pool backed RDBStoreCodecBufferIterator for consistency
> -----------------------------------------------------------------
>
> Key: HDDS-12742
> URL: https://issues.apache.org/jira/browse/HDDS-12742
> Project: Apache Ozone
> Issue Type: Sub-task
> Reporter: Swaminathan Balachandran
> Assignee: Swaminathan Balachandran
> Priority: Major
> Labels: pull-request-available
>
> Currently when RDBStoreCodecBufferIterator returns a keyValue to a caller the
> KeyValue may not be consistent and could have been modified when the next()
> value is invoked from the iterator. The codecBuffer returned from the first
> call may have been modified and thus also making this entire Iterator
> implementation not thread safe.
> The proposal here is to have a pool of Buffers and return a closeable handle
> of KeyValue to the caller which would be only released when the handle to the
> codec buffers is released.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]