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

Basic client pushback mechanism



    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.92.0
    • Fix Version/s: 2.0.0
    • Component/s: None
    • Labels:


      The current blocking we do when we are close to some limits (memstores over the multiplier factor, too many store files, global memstore memory) is bad, too coarse and confusing. After hitting HBASE-5161, it really becomes obvious that we need something better.

      I did a little brainstorm with Stack, we came up quickly with two solutions:

      • Send some exception to the client, like OverloadedException, that's thrown when some situation happens like getting past the low memory barrier. It would be thrown when the client gets a handler and does some check while putting or deleting. The client would treat this a retryable exception but ideally wouldn't check .META. for a new location. It could be fancy and have multiple levels of pushback, like send the exception to 25% of the clients, and then go up if the situation persists. Should be "easy" to implement but we'll be using a lot more IO to send the payload over and over again (but at least it wouldn't sit in the RS's memory).
      • Send a message alongside a successful put or delete to tell the client to slow down a little, this way we don't have to do back and forth with the payload between the client and the server. It's a cleaner (I think) but more involved solution.

      In every case the RS should do very obvious things to notify the operators of this situation, through logs, web UI, metrics, etc.

      Other ideas?


        1. java_HBASE-5162.patch
          39 kB
          Jesse Yates
        2. hbase-5162-trunk-v8.patch
          129 kB
          Jesse Yates
        3. hbase-5162-trunk-v7.patch
          109 kB
          Jesse Yates
        4. hbase-5162-trunk-v6.patch
          109 kB
          Jesse Yates
        5. hbase-5162-trunk-v5.patch
          107 kB
          Jesse Yates
        6. hbase-5162-trunk-v4.patch
          100 kB
          Jesse Yates
        7. hbase-5162-trunk-v3.patch
          100 kB
          Jesse Yates
        8. hbase-5162-trunk-v2.patch
          101 kB
          Jesse Yates
        9. hbase-5162-trunk-v12-committed.patch
          133 kB
          Jesse Yates
        10. hbase-5162-trunk-v11.patch
          133 kB
          Jesse Yates
        11. hbase-5162-trunk-v10.patch
          132 kB
          Jesse Yates
        12. hbase-5162-trunk-v1.patch
          95 kB
          Jesse Yates
        13. hbase-5162-trunk-v0.patch
          143 kB
          Jesse Yates
        14. hbase-5162-trunk-addendum.patch
          4 kB
          Jesse Yates
        15. hbase-5162-branch-1-v0.patch
          132 kB
          Jesse Yates
        16. 5162-addendum2.txt
          0.9 kB
          Ted Yu

          Issue Links



              • Assignee:
                jesse_yates Jesse Yates
                jdcryans Jean-Daniel Cryans
              • Votes:
                0 Vote for this issue
                30 Start watching this issue


                • Created: