From 774304286d038b3002acc15fb062a9bbb9fc5a35 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsuda Date: Thu, 9 Apr 2015 11:11:13 -0700 Subject: [PATCH] make overflowWheel volatile --- core/src/main/scala/kafka/utils/timer/TimingWheel.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/scala/kafka/utils/timer/TimingWheel.scala b/core/src/main/scala/kafka/utils/timer/TimingWheel.scala index 9a36c20..ec006f6 100644 --- a/core/src/main/scala/kafka/utils/timer/TimingWheel.scala +++ b/core/src/main/scala/kafka/utils/timer/TimingWheel.scala @@ -103,6 +103,9 @@ private[timer] class TimingWheel(tickMs: Long, wheelSize: Int, startMs: Long, ta private[this] val buckets = Array.tabulate[TimerTaskList](wheelSize) { _ => new TimerTaskList(taskCounter) } private[this] var currentTime = startMs - (startMs % tickMs) // rounding down to multiple of tickMs + + // overflowWheel needs to be volatile due to the issue of Double-Checked Locking pattern with JVM + @volatile private[this] var overflowWheel: TimingWheel = null private[this] def addOverflowWheel(): Unit = { -- 2.3.0