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

If the memstore size is under .1 or greater than .9 the memstore size defaults to the default memstore size

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 0.94.5, 0.99.0
    • None
    • BlockCache
    • None

    Description

      In HbaseConfiguration.checkForClusterFreeMemoryLimit it does a check to see if the blockCache + memstore > .8 this threshold ensures we do not run out of memory.

      But MemStoreFlusher.getMemStoreLimit does this check:

      if (limit >= 0.9f || limit < 0.1f) {
            LOG.warn("Setting global memstore limit to default of " + defaultLimit +
              " because supplied value outside allowed range of 0.1 -> 0.9");
            effectiveLimit = defaultLimit;
          }
      

      In our cluster we had the block cache set to an upper limit of 0.76 and the memstore upper limit was set to 0.04. We noticed the memstore size was exceeding the limit we had set and after looking at the getMemStoreLimit code it seems that the memstore upper limit is sized to the default value if the configuration value is less than .1 or greater than .9. This now makes the block cache and memstore greater than our available heap.

      We can remove the check for the greater than 90% of the heap as this can never happen due to the check in HbaseConfiguration.checkForClusterFreeMemoryLimit()

      This check doesn't seem necessary anymore as we have the HbaseConfiguration class checking for the cluster free limit. Am I correct in this assumption?

      Attachments

        1. HBASE-9742-0.94.patch
          7 kB
          churro morales

        Issue Links

          Activity

            People

              Unassigned Unassigned
              churromorales churro morales
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: