You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@storm.apache.org by "zhangjinlong (JIRA)" <ji...@apache.org> on 2014/12/15 08:47:13 UTC

[jira] [Commented] (STORM-592) Update stats.clj "rolling-window-set" function, exchange the real argument "num-buckets" and "s" of "rolling-window" function

    [ https://issues.apache.org/jira/browse/STORM-592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14246413#comment-14246413 ] 

zhangjinlong commented on STORM-592:
------------------------------------

(defrecord RollingWindow [updater merger extractor bucket-size-secs num-buckets buckets])

I think that the "bucket-size-secs" of RollingWindow is 20, and the "num-buckets" of RollingWindow is 30/540/4320. if not exchange the real argument ”num-buckets“ and "s" of “rolling-window” function, then the "bucket-size-secs" of RollingWindow is 30/540/4320, and the "num-buckets" of RollingWindow is 20.

creating CommonStats  under not exchange the real argument ”num-buckets“ and "s" of “rolling-window” function: 

(def NUM-STAT-BUCKETS 20)
;; 10 minutes, 3 hours, 1 day
(def STAT-BUCKETS [30 540 4320])

(defn- mk-common-stats
  [rate]
  (CommonStats.
    (atom (apply keyed-counter-rolling-window-set NUM-STAT-BUCKETS STAT-BUCKETS))
    (atom (apply keyed-counter-rolling-window-set NUM-STAT-BUCKETS STAT-BUCKETS))
    rate))

"mk-common-stats" call " keyed-counter-rolling-window-set"
==>(apply keyed-counter-rolling-window-set 20 [30 540 4320])

(defn keyed-counter-rolling-window-set
  [num-buckets & bucket-sizes]
  (apply rolling-window-set incr-val (partial merge-with +) counter-extract num-buckets bucket-sizes))

"keyed-counter-rolling-window-set" call "rolling-window-set"
==>(apply rolling-window-set incr-val (partial merge-with +) counter-extract 20 [30 540 4320])

(defn rolling-window-set [updater merger extractor num-buckets & bucket-sizes]
  (RollingWindowSet. updater extractor (dofor [s bucket-sizes] (rolling-window updater merger extractor s num-buckets)) nil)
  )

"rolling-window-set" call constructor of "RollingWindowSet"
==>(RollingWindowSet. updater extractor (dofor [s [30 540 4320]] (rolling-window updater merger extractor s 20)) nil)

constructor of "RollingWindowSet" call "rolling-window"
==>(rolling-window updater merger extractor 30 20)
==>(rolling-window updater merger extractor 540 20)
==>(rolling-window updater merger extractor 4320 20)

(defn rolling-window
  [updater merger extractor bucket-size-secs num-buckets]
  (RollingWindow. updater merger extractor bucket-size-secs num-buckets {}))

"rolling-window" call constructor of "RollingWindow"
==>(RollingWindow. updater merger extractor 30 20 {}) 
==>(RollingWindow. updater merger extractor 540 20 {}) 
==>(RollingWindow. updater merger extractor 4320 20 {})

if not exchange the real argument ”num-buckets“ and "s" of “rolling-window” function, then the "bucket-size-secs" of RollingWindow is 30/540/4320, and the "num-buckets" of RollingWindow is 20. 

creating CommonStats  under exchange the real argument ”num-buckets“ and "s" of “rolling-window” function: 

==>(RollingWindow. updater merger extractor 20 30 {}) 
==>(RollingWindow. updater merger extractor 20 540 {}) 
==>(RollingWindow. updater merger extractor 20 4320 {})

I think the "bucket-size-secs" should represent the size of bucket not the count of bucket; the ”num-buckets“ should represent the count of bucket not the size of bucket. so it is necessary to exchange the real argument ”num-buckets“ and "s" of “rolling-window” function

https://github.com/BuDongDong/storm/commit/785cda7a97877a25dac6fe96648f17ea42309ed7



> Update stats.clj "rolling-window-set" function, exchange the real argument "num-buckets" and "s" of "rolling-window" function
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: STORM-592
>                 URL: https://issues.apache.org/jira/browse/STORM-592
>             Project: Apache Storm
>          Issue Type: Bug
>    Affects Versions: 0.9.3-rc2
>            Reporter: zhangjinlong
>            Assignee: zhangjinlong
>
> (defn rolling-window-set [updater merger extractor num-buckets & bucket-sizes]
>   (RollingWindowSet. updater extractor (dofor [s bucket-sizes] (rolling-window updater merger extractor s num-buckets)) nil)
>   )
> (defrecord RollingWindow [updater merger extractor bucket-size-secs num-buckets buckets]) 
> if not exchange the real argument ”num-buckets“ and "s" of “rolling-window” function, then the "bucket-size-secs" of RollingWindow is 30/540/4320, and the "num-buckets" of RollingWindow is 20
> I think that the "bucket-size-secs" of RollingWindow is 20, and the "num-buckets" of RollingWindow is 30/540/4320.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)