Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-1148

Always flush HLog on root or meta region updates

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 0.19.0, 0.19.1, 0.20.0
    • Fix Version/s: 0.19.1, 0.20.0
    • Component/s: regionserver
    • Labels:
      None

      Description

      Flushing an HLog does not currently guarantee that the updates will be visible (see HADOOP-4379), however in the case of root or meta region updates, this is critical.

      I was able to create a situation by killing both the root and meta region servers, from which the cluster recovered, but because of the missed edits, clients found the old parent region rather than the new child regions because the fact that the parent region had split was not in the HLog of the crashed region servers (the master knew because of the MSG_REGION_SPLIT message it received) but the clients read the meta table and because that change was lost, clients were trying to find the parent region.

      So, when a SequenceFile.Writer.sync() guarantees that what has been written will be visible to new readers, we need to modify HLog so that if it is writing an update to the root or meta regions, that it immediately flushes (syncs) the log file so that the changes will be visible when the log file is recovered.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jimk Jim Kellerman
                Reporter:
                jimk Jim Kellerman
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: