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] [Updated] (HBASE-15785) Unnecessary lock in ByteBufferArray
Date Wed, 11 May 2016 10:24:12 GMT

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

Anoop Sam John updated HBASE-15785:
-----------------------------------
    Description: 
{code}
 Lock lock = locks[i];
      lock.lock();
      try {
        ByteBuffer bb = buffers[i];
        if (i == startBuffer) {
          cnt = bufferSize - startBufferOffset;
          if (cnt > len) cnt = len;
          ByteBuffer dup = bb.duplicate();
          dup.limit(startBufferOffset + cnt).position(startBufferOffset);
          mbb[j] = dup.slice();
{code}
In asSubByteBuff, we work on the duplicate BB and set limit and position on that.. The locking
is not needed here.

The locking is added because we set limit and position on the BBs in the array.   We can duplicate
the BBs and do positioning and limit on them.  The locking can be fully avoided.

  was:
{code}
 Lock lock = locks[i];
      lock.lock();
      try {
        ByteBuffer bb = buffers[i];
        if (i == startBuffer) {
          cnt = bufferSize - startBufferOffset;
          if (cnt > len) cnt = len;
          ByteBuffer dup = bb.duplicate();
          dup.limit(startBufferOffset + cnt).position(startBufferOffset);
          mbb[j] = dup.slice();
{code}
In asSubByteBuff, we work on the duplicate BB and set limit and position on that.. The locking
is not needed here.


> Unnecessary lock in ByteBufferArray
> -----------------------------------
>
>                 Key: HBASE-15785
>                 URL: https://issues.apache.org/jira/browse/HBASE-15785
>             Project: HBase
>          Issue Type: Sub-task
>          Components: regionserver, Scanners
>    Affects Versions: 2.0.0
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15785.patch, HBASE-15785_V2.patch, HBASE-15785_V3.patch
>
>
> {code}
>  Lock lock = locks[i];
>       lock.lock();
>       try {
>         ByteBuffer bb = buffers[i];
>         if (i == startBuffer) {
>           cnt = bufferSize - startBufferOffset;
>           if (cnt > len) cnt = len;
>           ByteBuffer dup = bb.duplicate();
>           dup.limit(startBufferOffset + cnt).position(startBufferOffset);
>           mbb[j] = dup.slice();
> {code}
> In asSubByteBuff, we work on the duplicate BB and set limit and position on that.. The
locking is not needed here.
> The locking is added because we set limit and position on the BBs in the array.   We
can duplicate the BBs and do positioning and limit on them.  The locking can be fully avoided.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message