From 15c489018c0cc7a32cc8e5c157232da4d1e26f2d Mon Sep 17 00:00:00 2001 From: Kang Xiao Date: Wed, 19 Feb 2014 00:22:01 +0800 Subject: [PATCH 1/2] STORM-186 fix float secs to millis long convertion --- storm-core/src/clj/backtype/storm/timer.clj | 2 +- storm-core/src/clj/backtype/storm/util.clj | 3 +++ storm-core/test/clj/backtype/storm/utils_test.clj | 11 +++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/storm-core/src/clj/backtype/storm/timer.clj b/storm-core/src/clj/backtype/storm/timer.clj index f9774b6d1a4..78b1f1c2466 100644 --- a/storm-core/src/clj/backtype/storm/timer.clj +++ b/storm-core/src/clj/backtype/storm/timer.clj @@ -82,7 +82,7 @@ (let [id (uuid) ^PriorityQueue queue (:queue timer)] (locking (:lock timer) - (.add queue [(+ (current-time-millis) (* 1000 (long delay-secs))) afn id]) + (.add queue [(+ (current-time-millis) (secs-to-millis-long delay-secs)) afn id]) ))) (defn schedule-recurring [timer delay-secs recur-secs afn] diff --git a/storm-core/src/clj/backtype/storm/util.clj b/storm-core/src/clj/backtype/storm/util.clj index 2ab30c7e240..a8f238a6823 100644 --- a/storm-core/src/clj/backtype/storm/util.clj +++ b/storm-core/src/clj/backtype/storm/util.clj @@ -220,6 +220,9 @@ (defn current-time-millis [] (Time/currentTimeMillis)) +(defn secs-to-millis-long [secs] + (long (* 1000 secs))) + (defn clojurify-structure [s] (prewalk (fn [x] (cond (instance? Map x) (into {} x) diff --git a/storm-core/test/clj/backtype/storm/utils_test.clj b/storm-core/test/clj/backtype/storm/utils_test.clj index 99bf7d113f9..b24db623d08 100644 --- a/storm-core/test/clj/backtype/storm/utils_test.clj +++ b/storm-core/test/clj/backtype/storm/utils_test.clj @@ -62,3 +62,14 @@ )) ) ) + +(deftest test-secs-to-millis-long + (is (= 0 (secs-to-millis-long 0))) + (is (= 2 (secs-to-millis-long 0.002))) + (is (= 500 (secs-to-millis-long 0.5))) + (is (= 1000 (secs-to-millis-long 1))) + (is (= 1080 (secs-to-millis-long 1.08))) + (is (= 10000 (secs-to-millis-long 10))) + (is (= 10100 (secs-to-millis-long 10.1))) +) + From 7ed8879a1fdb27df6848bf2921f8cef89408f2ef Mon Sep 17 00:00:00 2001 From: Kang Xiao Date: Thu, 20 Feb 2014 12:49:45 +0800 Subject: [PATCH 2/2] STORM-186 convert 1000 to long to avoid int overflow --- storm-core/src/clj/backtype/storm/util.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storm-core/src/clj/backtype/storm/util.clj b/storm-core/src/clj/backtype/storm/util.clj index a8f238a6823..580e9500c3c 100644 --- a/storm-core/src/clj/backtype/storm/util.clj +++ b/storm-core/src/clj/backtype/storm/util.clj @@ -221,7 +221,7 @@ (Time/currentTimeMillis)) (defn secs-to-millis-long [secs] - (long (* 1000 secs))) + (long (* (long 1000) secs))) (defn clojurify-structure [s] (prewalk (fn [x]