riemann 0.2.5 unable to expire event

156 views
Skip to first unread message

yu jinqiu

unread,
May 8, 2014, 4:46:47 AM5/8/14
to rieman...@googlegroups.com
Hi, 
  I try to upgrade riemann from version 0.2.4 to  0.2.5, then I find that version 0.2.5 unable to expire event.  the same event stream work in version 0.2.4. 
  
  After I start riemann, it throw following exception: 

INFO [2014-05-08 16:01:37,467] main - riemann.bin - PID 22255
Exception in thread "Thread-12" java.lang.NullPointerException
        at clojure.lang.Numbers.ops(Numbers.java:961)
        at clojure.lang.Numbers.gt(Numbers.java:227)
        at riemann.index$nbhm_index$reify__8966$fn__8968.invoke(index.clj:73)
        at clojure.core$filter$fn__4264.invoke(core.clj:2605)
        at clojure.lang.LazySeq.sval(LazySeq.java:40)
        at clojure.lang.LazySeq.seq(LazySeq.java:49)
        at clojure.lang.RT.seq(RT.java:484)
        at clojure.core$seq.invoke(core.clj:133)
        at riemann.core$reaper$worker__11192.invoke(core.clj:285)
        at riemann.service.ThreadService$thread_service_runner__8767$fn__8768.invoke(service.clj:66)
        at riemann.service.ThreadService$thread_service_runner__8767.invoke(service.clj:65)
        at clojure.lang.AFn.run(AFn.java:22)
        at java.lang.Thread.run(Thread.java:744)

version 0.2.5 configuration is following

(logging/init {:file "log/riemann.log" :console false})
; Listen on the local interface over TCP (5555), UDP (5555), and websockets
; (5556)
(let [host "0.0.0.0"]
  (tcp-server {:host host})
  (udp-server {:host host})
  (ws-server  {:host host}))
; Expire old events from the index every 5 seconds.
(periodically-expire 2)
(let [index (index)]
  ; Inbound events will be passed to these streams:
  (streams
    ; Index all events immediately.
    index
    ; Calculate an overall rate of events.
    (with {:metric 1 :host nil :state "ok" :service "events/sec"}
      (rate 5 index))
    #(info %)
    ; Log expired events.
    (expired
      (fn [event] (info "expired" event)))))

Kyle Kingsbury

unread,
May 8, 2014, 2:53:11 PM5/8/14
to rieman...@googlegroups.com
On 05/08/2014 01:46 AM, yu jinqiu wrote:
> Hi,
>
> I try to upgrade riemann from version 0.2.4 to 0.2.5, then I find
> that version 0.2.5 unable to expire event. the same event stream work
> in version 0.2.4.

This is a bug in 0.2.5 introduced by a change in Clojure's handling for
map destructuring defaults, I believe. I think you can work around it by
either:

a.) Ensuring all events have TTLs before they hit the index, using

(let [index (default :ttl 60 index)]
(streams ...))

b.) Upgrading to master, or

c.) Downgrading to 0.2.4

--Kyle

yu jinqiu

unread,
May 9, 2014, 5:37:48 AM5/9/14
to rieman...@googlegroups.com
I  try to ensure all events have TTLs before they hit the index, using 

(let [index (default :ttl 60 index)] 
   (streams ...)) 

but I get the following error 
WARN [2014-05-09 17:35:53,869] pool-1-thread-13 - riemann.streams - riemann.config$index@5da6b8c6 threw
clojure.lang.ArityException: Wrong number of args (1) passed to: index/index
        at clojure.lang.AFn.throwArity(AFn.java:429)
        at clojure.lang.AFn.invoke(AFn.java:32)
        at clojure.lang.AFn.applyToHelper(AFn.java:154)
        at clojure.lang.AFn.applyTo(AFn.java:144)
        at clojure.core$apply.invoke(core.clj:624)
        at riemann.config$index.doInvoke(config.clj:162)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at riemann.streams$default$stream__10413$fn__10424.invoke(streams.clj:1263)
        at riemann.streams$default$stream__10413.invoke(streams.clj:1263)
        at riemann.core$stream_BANG_$fn__11096.invoke(core.clj:19)
        at riemann.core$stream_BANG_.invoke(core.clj:18)
        at riemann.transport$handle.invoke(transport.clj:116)
        at riemann.transport.tcp$tcp_handler.invoke(tcp.clj:84)
        at riemann.transport.tcp$gen_tcp_handler$fn__11316.invoke(tcp.clj:65)
        at riemann.transport.tcp.proxy$org.jboss.netty.channel.SimpleChannelHandler$ff19274a.messageReceived(Unknown Source)
        at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88)
        at riemann.transport.tcp.proxy$org.jboss.netty.channel.SimpleChannelHandler$ff19274a.handleUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
        at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70)
        at riemann.transport.proxy$org.jboss.netty.handler.codec.oneone.OneToOneDecoder$ff19274a.handleUpstream(Unknown Source)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
        at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43)
        at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67)
        at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:314)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

Aphyr

unread,
May 9, 2014, 1:37:33 PM5/9/14
to rieman...@googlegroups.com
On 05/09/2014 02:37 AM, yu jinqiu wrote:
> I try to ensure all events have TTLs before they hit the index, using
>
> (let [index (default :ttl 60 index)]
> (streams ...))


My apologies; (index). Take a look at your original config or the stock
config.

--Kyle
Reply all
Reply to author
Forward
0 new messages