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

ryan rawson updated HBASE-1525:
-------------------------------

    Attachment: HBASE-1525-v2.patch

Looks like the row lock is being acquired and never released.  Refactoring 
lossage probably.

Here is a slightly revised patch (use -p1) to always release the row lock.  
There is some confusion because most of the other functions are like so:

public void doSomething(..., Integer lockid) {

// stuff

} finally {
  if (lockid == null)
     releaseLock(lid);
}
}

this looks weird, but what is really happening is we are unlocking the rowlock 
if we are _not_ passed a row lock (lockid == null), otherwise we leave the row 
locked and trust our caller to unlock it.

> HTable.incrementColumnValue hangs() 
> ------------------------------------
>
>                 Key: HBASE-1525
>                 URL: https://issues.apache.org/jira/browse/HBASE-1525
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 0.20.0
>         Environment: ubuntu 9.04
> jdk 1.6.0.13
> hadoop 0.20.0
> hbase 0.20.0-dev [trunk]
>            Reporter: Irfan Mohammed
>         Attachments: 1525.patch, client_dump.out, HBASE-1525-v2.patch, 
> hbase-irfan-master-damascus.out
>
>
> In the following code, 
>    @Test
>     public void usingIncrement() throws Exception 
>     {
>         long siteId = 1234;
>         long publisherId = 5678;
>         Date eventTime = DATE_INPUT_FORMAT.parse("2009-06-15 13:08:54");
>         
>         long[] metrics = new long[] { 10, 22, 32 };
>         
>         byte[] rowKey = Bytes.toBytes(siteId + "_" + 
> ROW_KEY_FORMAT.format(eventTime));
>         byte[] family = Bytes.toBytes(FAMILY_PUBLISHER);
>         byte[] qualifier = Bytes.toBytes(publisherId);
>         
>         HTable table = getTable();
>         
>         for (int i1 = 0, n1 = metrics.length; n1 > 0; i1++, n1--) {
>             LOGGER.info("processing [{0}] ...", i1);
>             table.incrementColumnValue(rowKey, family, qualifier, 
> metrics[i1]);
>             LOGGER.info("processing [{0}] completed", i1);
>         }
>         
>         table.close();
>         queryMetrics(table, siteId, publisherId, eventTime);
>     }
> The call table.incrementColumnValue hangs. Have to kill the hbase client and 
> the master processes to get around the problem.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to