hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anoop Sam John (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-17872) Make ByteBufferUtils thread-safe
Date Tue, 04 Apr 2017 10:20:41 GMT

    [ https://issues.apache.org/jira/browse/HBASE-17872?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15954951#comment-15954951
] 

Anoop Sam John commented on HBASE-17872:
----------------------------------------

ByteBufferUtils expects that the calling methods handles the multi thread possible cases.
 A util method should not be handling threading things within itself. This will add lots of
overhead if the callers themselves handle it and there is NO chance of util methods getting
called in a multi threaded way. (I mean the buffers are with single thread only at a given
time)

> Make ByteBufferUtils thread-safe
> --------------------------------
>
>                 Key: HBASE-17872
>                 URL: https://issues.apache.org/jira/browse/HBASE-17872
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Chia-Ping Tsai
>            Assignee: Chia-Ping Tsai
>            Priority: Critical
>
> A case is shown below.
> We will get the wrong position of buffer in multithreaded environment, so the method
makes the invalid cell in MSLAB.
> {noformat}
>   public static int copyFromBufferToBuffer(ByteBuffer in, ByteBuffer out, int sourceOffset,
>       int destinationOffset, int length) {
>     if (in.hasArray() && out.hasArray()) {
>       // ...
>     } else if (UNSAFE_AVAIL) {
>       // ...
>     } else {
>       int outOldPos = out.position();
>       out.position(destinationOffset);
>       ByteBuffer inDup = in.duplicate();
>       inDup.position(sourceOffset).limit(sourceOffset + length);
>       out.put(inDup);
>       out.position(outOldPos);
>     }
>     return destinationOffset + length;
>   }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message