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

TWCS erroneously disabling tombstone compactions when unchecked_tombstone_compaction=true

    XMLWordPrintableJSON

    Details

      Description

      This code:

      this.options = new TimeWindowCompactionStrategyOptions(options);
      if (!options.containsKey(AbstractCompactionStrategy.TOMBSTONE_COMPACTION_INTERVAL_OPTION) && !options.containsKey(AbstractCompactionStrategy.TOMBSTONE_THRESHOLD_OPTION))
      {
      disableTombstoneCompactions = true;
      logger.debug("Disabling tombstone compactions for TWCS");
      }
      else
      logger.debug("Enabling tombstone compactions for TWCS");
      }
      

      ... in TimeWindowCompactionStrategy.java disables tombstone compactions in TWCS if you have not explicitly set either tombstone_compaction_interval or tombstone_threshold.  Adding 'tombstone_compaction_interval': '86400' to the compaction stanza in a table definition has the (to me unexpected) side effect of enabling tombstone compactions. 

      This is surprising and does not appear to be mentioned in the docs.

      I would suggest that tombstone compactions should be run unless these options are both set to 0.

      If the concern is that (as with DTCS in CASSANDRA-9234) we don't want to waste time on tombstone compactions when we expect the tables to eventually be expired away, perhaps we should also check unchecked_tombstone_compaction and still enable tombstone compactions if that's set to true.

      May also make sense to set defaults for interval & threshold to 0 & disable if they're nonzero so that setting non-default values, rather than setting ANY value, is what determines whether tombstone compactions are enabled?

        Attachments

          Activity

            People

            • Assignee:
              alex.ivakov Alexander Ivakov
              Reporter:
              tarrall Robert Tarrall
              Authors:
              Alexander Ivakov, Brandon Williams
              Reviewers:
              Marcus Eriksson
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: