You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by jg...@apache.org on 2017/10/09 21:33:19 UTC
kafka git commit: KAFKA-6030;
Fix Integer overflow in cleanable ratio computation
Repository: kafka
Updated Branches:
refs/heads/0.11.0 3c96f9128 -> bb27215ce
KAFKA-6030; Fix Integer overflow in cleanable ratio computation
Author: Xin Li <Xi...@trivago.com>
Reviewers: Ismael Juma <is...@juma.me.uk>, Jason Gustafson <ja...@confluent.io>
Closes #4043 from lisa2lisa/fix
Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/bb27215c
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/bb27215c
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/bb27215c
Branch: refs/heads/0.11.0
Commit: bb27215ceac9caaac446b5fe43d3f3284624fcb4
Parents: 3c96f91
Author: Xin Li <Xi...@trivago.com>
Authored: Mon Oct 9 14:15:44 2017 -0700
Committer: Jason Gustafson <ja...@confluent.io>
Committed: Mon Oct 9 14:29:44 2017 -0700
----------------------------------------------------------------------
core/src/main/scala/kafka/log/LogCleaner.scala | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kafka/blob/bb27215c/core/src/main/scala/kafka/log/LogCleaner.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/kafka/log/LogCleaner.scala b/core/src/main/scala/kafka/log/LogCleaner.scala
index 4898d11..7408509 100644
--- a/core/src/main/scala/kafka/log/LogCleaner.scala
+++ b/core/src/main/scala/kafka/log/LogCleaner.scala
@@ -636,9 +636,9 @@ private[log] class Cleaner(val id: Int,
var segs = segments.toList
while(segs.nonEmpty) {
var group = List(segs.head)
- var logSize = segs.head.size
- var indexSize = segs.head.index.sizeInBytes
- var timeIndexSize = segs.head.timeIndex.sizeInBytes
+ var logSize = segs.head.size.toLong
+ var indexSize = segs.head.index.sizeInBytes.toLong
+ var timeIndexSize = segs.head.timeIndex.sizeInBytes.toLong
segs = segs.tail
while(segs.nonEmpty &&
logSize + segs.head.size <= maxSize &&
@@ -833,10 +833,10 @@ private class CleanerStats(time: Time = Time.SYSTEM) {
* Helper class for a log, its topic/partition, the first cleanable position, and the first uncleanable dirty position
*/
private case class LogToClean(topicPartition: TopicPartition, log: Log, firstDirtyOffset: Long, uncleanableOffset: Long) extends Ordered[LogToClean] {
- val cleanBytes = log.logSegments(-1, firstDirtyOffset).map(_.size).sum
+ val cleanBytes = log.logSegments(-1, firstDirtyOffset).map(_.size.toLong).sum
private[this] val firstUncleanableSegment = log.logSegments(uncleanableOffset, log.activeSegment.baseOffset).headOption.getOrElse(log.activeSegment)
val firstUncleanableOffset = firstUncleanableSegment.baseOffset
- val cleanableBytes = log.logSegments(firstDirtyOffset, math.max(firstDirtyOffset, firstUncleanableOffset)).map(_.size).sum
+ val cleanableBytes = log.logSegments(firstDirtyOffset, math.max(firstDirtyOffset, firstUncleanableOffset)).map(_.size.toLong).sum
val totalBytes = cleanBytes + cleanableBytes
val cleanableRatio = cleanableBytes / totalBytes.toDouble
override def compare(that: LogToClean): Int = math.signum(this.cleanableRatio - that.cleanableRatio).toInt