Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-6078

Wrong memtable size estimation: liveRatio is not honored in edge cases

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Low
    • Resolution: Fixed
    • Fix Version/s: 1.2.11, 2.0.2
    • Component/s: None
    • Labels:
      None
    • Severity:
      Low
    • Since Version:

      Description

      Memtable.getLiveSize does not honours liveRatio the correct way:
      allocator.get**Size() return sizes allocated only by name and columns data (i.e. no liveRatio applied); but conditions, which cap estimated size, compare it with estimatedSize, already multiplied by liveRatio.
      If liveRatio is big enough (i've seen >11 on our dataset), this leads to huge estimation errors and even to OutOfMemory, because MeteredFlusher underestimates memtables sizes.

        Attachments

        1. Memtable-getLiveSize.diff
          1 kB
          Oleg Anastasyev
        2. 6078-v2.txt
          2 kB
          Jonathan Ellis

          Activity

            People

            • Assignee:
              jbellis Jonathan Ellis
              Reporter:
              m0nstermind Oleg Anastasyev
              Authors:
              Jonathan Ellis
              Reviewers:
              Jason Brown
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: