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

Optionally avoid hint transfer during decommission

    XMLWordPrintableJSON

Details

    Description

      Both because they aren’t strictly necessary to maintain consistency, and because throttling induced by their rate-limiter (see hinted_handoff_throttle) may stall progress, transferring hints during decommission (specifically unbootstrap) rather than just pausing, disabling, and truncating them probably doesn’t make sense. The only other concern would be the BatchLog, which nominally depends on hint delivery to maintain its "guarantees". However, during BatchLog replay on unbootstrap, ReplayingBatch ignores batches older the gcgs anyway.

      Here's a proposal from aleksey that might strike a reasonable balance:

      1.) We continue to transfer hints by default during decommission, but at a higher rate. We could, for instance, stop having DispatchHintsTask divide its effective rate by the number of nodes in the cluster.

      int nodesCount = Math.max(1, StorageService.instance.getTokenMetadata().getAllEndpoints().size() - 1);
      double throttleInBytes = DatabaseDescriptor.getHintedHandoffThrottleInKiB() * 1024.0 / nodesCount;
      this.rateLimiter = RateLimiter.create(throttleInBytes == 0 ? Double.MAX_VALUE : throttleInBytes);
      

      2.) We provide an option to simply avoid transferring hints during unbootstrap. Even this would only take the BatchLog from "best effort" to "slightly less effort"

      Attachments

        1. cassandra-17808_4.1.patch.txt
          9 kB
          Paul Chandler
        2. cassandra-17808_4.0.patch.txt
          10 kB
          Paul Chandler

        Issue Links

          Activity

            People

              maedhroz Caleb Rackliffe
              maedhroz Caleb Rackliffe
              Caleb Rackliffe
              Jon Meredith, Stefan Miklosovic
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 50m
                  1h 50m