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

correct local region location cache information can be overwritten (or deleted) w/stale information from an old server

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 0.95.2
    • 0.95.0
    • None
    • None
    • Incompatible change, Reviewed
    • Hide
      On region open, save the edit seqId and then write it into META. On region move, the region is opened again with a greater seqId somewhere else. Pass the client the seqid to the client when asks about locations. Client can reason about cache invalidation with seqids (if seqid for new location is < its current seqid, it can recognize the new location stale).
      Show
      On region open, save the edit seqId and then write it into META. On region move, the region is opened again with a greater seqId somewhere else. Pass the client the seqid to the client when asks about locations. Client can reason about cache invalidation with seqids (if seqid for new location is < its current seqid, it can recognize the new location stale).

    Description

      Discovered via HBASE-7250; related to HBASE-5877.
      Test is writing from multiple threads.
      Server A has region R; client knows that.
      R gets moved from A to server B.
      B gets killed.
      R gets moved by master to server C.
      ~15 seconds later, client tries to write to it (on A?).
      Multiple client threads report from RegionMoved exception processing logic "R moved from C to B", even though such transition never happened (neither in nor before the sequence described below). Not quite sure how the client learned of the transition to C, I assume it's from meta from some other thread...
      Then, put fails (it may fail due to accumulated errors that are not logged, which I am investigating... but the bogus cache update is there nonwithstanding).

      I have a patch but not sure if it works, test still fails locally for yet unknown reason.

      Attachments

        1. 7268-addendum-v0.patch
          4 kB
          Ted Yu
        2. 7268-v6.patch
          52 kB
          Ted Yu
        3. 7268-v8.patch
          52 kB
          Ted Yu
        4. HBASE-7268-addendum-v0.patch
          4 kB
          Sergey Shelukhin
        5. HBASE-7268-v0.patch
          32 kB
          Sergey Shelukhin
        6. HBASE-7268-v0.patch
          32 kB
          Sergey Shelukhin
        7. HBASE-7268-v1.patch
          32 kB
          Sergey Shelukhin
        8. HBASE-7268-v2.patch
          33 kB
          Sergey Shelukhin
        9. HBASE-7268-v2-plus-masterTs.patch
          91 kB
          Sergey Shelukhin
        10. HBASE-7268-v2-plus-masterTs.patch
          61 kB
          Sergey Shelukhin
        11. HBASE-7268-v3.patch
          50 kB
          Sergey Shelukhin
        12. HBASE-7268-v4.patch
          50 kB
          Sergey Shelukhin
        13. HBASE-7268-v5.patch
          51 kB
          Sergey Shelukhin
        14. HBASE-7268-v6.patch
          52 kB
          Sergey Shelukhin
        15. HBASE-7268-v7.patch
          52 kB
          Sergey Shelukhin
        16. HBASE-7268-v8.patch
          52 kB
          Sergey Shelukhin
        17. HBASE-7268-v9.patch
          52 kB
          Sergey Shelukhin

        Issue Links

          Activity

            People

              sershe Sergey Shelukhin
              sershe Sergey Shelukhin
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: