samstarling / finagle-prometheus

Provides a bridge between Finagle and Prometheus metrics
https://samstarling.co.uk/projects/finagle-prometheus/
MIT License
30 stars 18 forks source link

LoadService fails to load PrometheusStatsReceiver in versions 0.0.7, 0.0.8 #34

Closed tpdi closed 6 years ago

tpdi commented 6 years ago

After upgrading from 0.0.6 to 0.0.7, LoadService fails to load PrometheusStatsReceiver. It's the same in 0.0.8. I'm using finagleVersion = "18.3.0" and and scalaVersion = "2.12.4"

I see the stack trace below at program start.

The work-around is to explicitly instantiate the stats receiver, but when using version 0.0.6, I didn't need to do this:

 val statsReceiver = new PrometheusStatsReceiver(registry)

It does make me a bit nervous to instantiate the PrometheusStatsReceiver and not do anything with it other than assigning to a local val.

[error] Aug 31, 2018 12:00:57 PM com.twitter.app.LoadService$ $anonfun$apply$7 [error] SEVERE: LoadService: failed to instantiate 'com.samstarling.prometheusfinagle.PrometheusStatsReceiver' for the requested service 'com.twitter.finagle.stats.StatsReceiver' [error] java.lang.NullPointerException [error] at com.twitter.util.ProxyTimer.schedulePeriodically(Timer.scala:148) [error] at com.twitter.util.Timer.schedule(Timer.scala:56) [error] at com.twitter.util.Timer.schedule$(Timer.scala:53) [error] at com.twitter.util.ProxyTimer.schedule(Timer.scala:139) [error] at com.twitter.util.Timer.schedule(Timer.scala:66) [error] at com.twitter.util.Timer.schedule$(Timer.scala:65) [error] at com.twitter.util.ProxyTimer.schedule(Timer.scala:139) [error] at com.samstarling.prometheusfinagle.PrometheusStatsReceiver.(PrometheusStatsReceiver.scala:24) [error] at com.samstarling.prometheusfinagle.PrometheusStatsReceiver.(PrometheusStatsReceiver.scala:13) [error] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [error] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [error] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [error] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [error] at java.lang.Class.newInstance(Class.java:442) [error] at com.twitter.app.LoadService$.$anonfun$apply$7(LoadService.scala:73) [error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241) [error] at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59) [error] at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52) [error] at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) [error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241) [error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238) [error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104) [error] at com.twitter.app.LoadService$.apply(LoadService.scala:62) [error] at com.twitter.finagle.util.LoadService$.apply(LoadService.scala:14) [error] at com.twitter.finagle.stats.LoadedStatsReceiver$.(LoadedStatsReceiver.scala:18) [error] at com.twitter.finagle.stats.LoadedStatsReceiver$.(LoadedStatsReceiver.scala) [error] at com.twitter.finagle.stats.FinagleStatsReceiver$.(LoadedStatsReceiver.scala:44) [error] at com.twitter.finagle.stats.FinagleStatsReceiver$.(LoadedStatsReceiver.scala) [error] at com.twitter.finagle.netty4.HashedWheelTimer$.(Netty4HashedWheelTimer.scala:80) [error] at com.twitter.finagle.netty4.HashedWheelTimer$.(Netty4HashedWheelTimer.scala) [error] at com.twitter.finagle.netty4.Netty4HashedWheelTimer.(Netty4HashedWheelTimer.scala:108) [error] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [error] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [error] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [error] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [error] at java.lang.Class.newInstance(Class.java:442) [error] at com.twitter.app.LoadService$.$anonfun$apply$7(LoadService.scala:73) [error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241) [error] at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59) [error] at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52) [error] at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) [error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241) [error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238) [error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104) [error] at com.twitter.app.LoadService$.apply(LoadService.scala:62) [error] at com.twitter.finagle.util.LoadService$.apply(LoadService.scala:14) [error] at com.twitter.finagle.util.DefaultTimer$.(DefaultTimer.scala:68) [error] at com.twitter.finagle.util.DefaultTimer$.(DefaultTimer.scala) [error] at com.samstarling.prometheusfinagle.PrometheusStatsReceiver.(PrometheusStatsReceiver.scala:15) [error] at com.fitbit.device.syncbuffer.SyncBufferApp$.makePrometheusServer(SyncBufferApp.scala:177) [error] at com.fitbit.device.syncbuffer.SyncBufferApp$.main(SyncBufferApp.scala:67) [error] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [error] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [error] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [error] at java.lang.reflect.Method.invoke(Method.java:498) [error] at com.twitter.app.App.$anonfun$nonExitingMain$3(App.scala:246) [error] at scala.Option.foreach(Option.scala:257) [error] at com.twitter.app.App.nonExitingMain(App.scala:245) [error] at com.twitter.app.App.nonExitingMain$(App.scala:223)

samstarling commented 6 years ago

Hey @tpdi – sorry you're having problems. There were a few LoadService issues I fixed a little while back. Are you able to check out the latest version (0.0.11) and see if you still experience the same problem?

tpdi commented 6 years ago

Absolutely I will do this. I'm on vacation next week, but will try out 0.0.11 as soon as I'm back.

Thanks for your quick response, and for your very useful library.

samstarling commented 6 years ago

Sounds good – I'm confident that'll fix things, so I'll close this issue for now. Let me know how you get on!