hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean-Daniel Cryans (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-810) Prevent temporary deadlocks when, during a scan with write operations, the region splits
Date Tue, 19 Aug 2008 15:03:44 GMT

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

Jean-Daniel Cryans commented on HBASE-810:
------------------------------------------

{quote}
It appears as if a region is splitting, any outstanding scanners either need to finish scanning
the region (blocking the split) or the scanners need to be notified that a split is going
to happen and they need to wait and recalibrate.
{quote}

This is also what I think we should do but like I said on IRC, we don't currently have a way
to communicate from the region server to the scanner. Suppose the user code did a next() and
while processing the info the split happens (and it will finally try to insert something but
won't be able to since the split is blocking). What we need is an handle to the scanner to
tell it to "close" itself and wait.

> Prevent temporary deadlocks when, during a scan with write operations, the region splits
> ----------------------------------------------------------------------------------------
>
>                 Key: HBASE-810
>                 URL: https://issues.apache.org/jira/browse/HBASE-810
>             Project: Hadoop HBase
>          Issue Type: Bug
>    Affects Versions: 0.2.0
>            Reporter: Jean-Daniel Cryans
>            Priority: Blocker
>             Fix For: 0.2.1, 0.3.0
>
>
> HBASE-804 was not about the good problem, this one is. Anyone that iterates through the
results of a scanner and that rewrites data back into the row at each iteration will hit a
UnknownScannerException if a split occurs. See the stack in the referred jira. Timeline :
> Split occurs, acquires a write lock and waits for scanners to finish
> The scanner in the custom code iterates and writes data until the write is blocked by
the lock
> deadlock
> The scanner timeouts thus the region splits but the USE will be thrown when next() is
called
> Inside a Map, the task will simply be retried when the first one fails. Elsewhere, it
becomes more complicated.

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


Mime
View raw message