diff --git a/CHANGES.txt b/CHANGES.txt index c810378211..579cea24d8 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -11,6 +11,7 @@ * Reduce thread contention in CommitLogSegment and HintsBuffer (CASSANDRA-16072) * Avoid sending CDC column if not enabled (CASSANDRA-16770) Merged from 3.0: + * Fix conversion from megabits to bytes in streaming rate limiter (CASSANDRA-17243) * Upgrade logback to 1.2.9 (CASSANDRA-17204) * Avoid race in AbstractReplicationStrategy endpoint caching (CASSANDRA-16673) * Fix abort when window resizing during cqlsh COPY (CASSANDRA-15230) diff --git a/NEWS.txt b/NEWS.txt index 2b45a2a459..b04f4b4437 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -51,6 +51,12 @@ Upgrading confirm it is set to value lower than 31 otherwise Cassandra will fail to start. See CASSANDRA-9384 for further details. You also need to regenerate passwords for users for who the password was created while the above property was set to be more than 30 otherwise they will not be able to log in. + - The config properties for setting the streaming throughput `stream_throughput_outbound_megabits_per_sec` and + `inter_dc_stream_throughput_outbound_megabits_per_sec` were incorrectly interpreted as mebibits. This has + been fixed by CASSANDRA-17243, so the values for these properties will now indicate a throughput ~4.6% lower than + what was actually applied in previous versions. This also affects the setters and getters for these properties in + the JMX MBean `org.apache.cassandra.db:type=StorageService` and the nodetool commands `set/getstreamthroughput` + and `set/getinterdcstreamthroughput`. Statement re-prepare storms --------------------------- diff --git a/src/java/org/apache/cassandra/streaming/StreamManager.java b/src/java/org/apache/cassandra/streaming/StreamManager.java index 2b6bc465c9..cce049a027 100644 --- a/src/java/org/apache/cassandra/streaming/StreamManager.java +++ b/src/java/org/apache/cassandra/streaming/StreamManager.java @@ -64,7 +64,7 @@ public class StreamManager implements StreamManagerMBean public static class StreamRateLimiter { - public static final double BYTES_PER_MEGABIT = (1024 * 1024) / 8; // from bits + public static final double BYTES_PER_MEGABIT = (1000 * 1000) / 8.0; private static final RateLimiter limiter = RateLimiter.create(calculateRateInBytes()); private static final RateLimiter interDCLimiter = RateLimiter.create(calculateInterDCRateInBytes()); private final boolean isLocalDC;