hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jim Kellerman (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HADOOP-2079) [hbase] HLog generates incorrect file name when splitting a log, race condition also contributes
Date Sat, 20 Oct 2007 03:20:51 GMT

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

Jim Kellerman updated HADOOP-2079:
----------------------------------

    Attachment: patch.txt

This patch addresses both HADOOP-2079 and HADOOP-2056

Changes:

Because row keys are essentially unbounded in length and can potentially file name unfriendly
characters, the start key is now SHA1 encoded and inserted into the file name as a long decimal
number. This is better than using Base64 encoding of the row key because the Base64 encoding
is longer than the row key and can consequently cause the file name to be too long. This approach
assures that file names will be unique and still be short enough for modern file systems.
HRegionInfo now supports this encoding method and since SHA1 encoding is not reversable, the
decode method has been removed.

HStore uses both the raw region name and the encoded region name.

Use new static method HRegionInfo.encodeRegionName: HLog, HMaster, HRegion

HMaster avoids race conditions on log splitting by only doing them in PendingServerShutdown
if the server's lease expires while the master is running. If the master is just starting
up, then the root and meta scanners invoke log splitting if they find stale server data.

HStoreFile now uses ArrayList and List instead of Vector and Collection



> [hbase] HLog generates incorrect file name when splitting a log, race  condition also
contributes
> -------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-2079
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2079
>             Project: Hadoop
>          Issue Type: Bug
>          Components: contrib/hbase
>    Affects Versions: 0.16.0
>            Reporter: Jim Kellerman
>            Assignee: Jim Kellerman
>             Fix For: 0.16.0
>
>         Attachments: patch.txt
>
>
> In Hadoop-Nightly #277 TestRegionServerExit failed with a timeout.
> The reason for this was a race in the Master in which checkAssigned (run from either
the root or meta scanner)  will immediately try to split the log and then assign a region
which has invalid server info.
> The scenario went something like this:
> 1. region server aborted
> 2. root region was written on optional cache flush
> lease timed out on aborted server which removes it from serversToServerInfo and queues
a PendingServerShutdown operation
> 3. root scanner runs and finds server info incorrect (it is in the root region but the
server is not in serversToServerInfo
> 4. checkAssigned starts splitting the log but because the log name is incorrect it can't
finish
> 5. PendingServerShutdown fires and really gums up the works.
> So there are two problems:
> 1. HLog.splitLog needs to generate the correct log file name.
> 2. PendingServerShutdown and/or leaseExpired need to cooperate with checkAssigned so
that there are not two concurrent attempts to recover the log.

-- 
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