keenlabs / capillary

Storm Spout + Kafka State Inspector
MIT License
58 stars 18 forks source link

Internal server error #5

Closed rja1 closed 10 years ago

rja1 commented 10 years ago

I'm likely not setting capillary.kafka.zkroot or capillary.storm.zkroot correctly, resulting in the below exception.

I've tried setting these parameters a number of times, using different paths - nothing seems to make a difference.

We're running two topologies. One is using trident, the other is not. We're running zookeeper-3.4.5, apache-storm-0.9.2-incubating and kafka_2.8.0-0.8.1.

We're not setting a storm or kafka root, so I would think whatever the app defaults to should be correct. Here's the zookeeper structure.

[zk: localhost:2181(CONNECTED) 0] ls / [transactional, realtimeroot, zookeeper, admin, consumers, config, controller, storm, brokers, controller_epoch]

Note that realtimeroot is the spout-root for one of the topos. The trident topo seems to store it's data in /transactional/topo_name/user

Here's the error: [root@mon01 bin]# ./capillary -Dcapillary.zookeepers=storm11:2181 Play server process ID is 477 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/capillary-1.1/lib/ch.qos.logback.logback-classic-1.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/capillary-1.1/lib/org.slf4j.slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] [info] play - Application started (Prod) [info] play - Listening for HTTP on /0.0.0.0:9000 [error] application -

! @6jb9j204i - Internal server error, for (GET) [/] ->

play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Invalid path string "//transactional" caused by empty node name specified @1]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.2.jar:2.3.2] at play.api.DefaultApplication.handleError(Application.scala:402) ~[com.typesafe.play.play_2.10-2.3.2.jar:2.3.2] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) ~[com.typesafe.play.play_2.10-2.3.2.jar:2.3.2] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) ~[com.typesafe.play.play_2.10-2.3.2.jar:2.3.2] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[org.scala-lang.scala-library-2.10.4.jar:na] Caused by: java.lang.IllegalArgumentException: Invalid path string "//transactional" caused by empty node name specified @1 at org.apache.zookeeper.common.PathUtils.validatePath(PathUtils.java:99) ~[org.apache.zookeeper.zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1572) ~[org.apache.zookeeper.zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.GetChildrenBuilderImpl$3.call(GetChildrenBuilderImpl.java:214) ~[org.apache.curator.curator-framework-2.6.0.jar:na] at org.apache.curator.framework.imps.GetChildrenBuilderImpl$3.call(GetChildrenBuilderImpl.java:203) ~[org.apache.curator.curator-framework-2.6.0.jar:na] at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:107) ~[org.apache.curator.curator-client-2.6.0.jar:na]

Please advise. Thanks

gphat commented 10 years ago

Hey there!

Sounds like I might not be doing things the right way for Trident-based spouts. That's good to know. We're not using Trident so to fix this I might need your help to test in the futre. Thanks for taking the time to poke at Zookeeper for me!

I'll set up a Trident topology locally and work on support. I'll update this ticket when I get it done.

rja1 commented 10 years ago

I'd be happy to help test. Thanks!

roughley commented 10 years ago

I tried to bypass not supplying a root by replacing "//" with "/" in the zookeeper path.

play.api.Application$$anon$1: Execution exception[[JsonParseException: Unexpected character ('.' (code 46)): Expected space separating root-level values at [Source: java.io.StringReader@27323586; line: 1, column: 6]]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.api.DefaultApplication.handleError(Application.scala:402) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) [org.scala-lang.scala-library-2.10.4.jar:na] Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('.' (code 46)): Expected space separating root-level values at [Source: java.io.StringReader@27323586; line: 1, column: 6] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1524) ~[com.fasterxml.jackson.core.jackson-core-2.3.2.jar:2.3.2] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:557) ~[com.fasterxml.jackson.core.jackson-core-2.3.2.jar:2.3.2] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:475) ~[com.fasterxml.jackson.core.jackson-core-2.3.2.jar:2.3.2] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportMissingRootWS(ParserMinimalBase.java:495) ~[com.fasterxml.jackson.core.jackson-core-2.3.2.jar:2.3.2] at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._verifyRootSpace(ReaderBasedJsonParser.java:1178) ~[com.fasterxml.jackson.core.jackson-core-2.3.2.jar:2.3.2]

roughley commented 10 years ago

@rja1 I updated the paths so that they are trident compatible, see my fork here: https://github.com/shareaholic/capillary

I didn't do anything wrt a startup flag to differentiate between storm/trident. But that shouldn't be that difficult.

gphat commented 10 years ago

Thanks @roughley! I'd love a PR for this if you can come up with a way to have it differentiate via config or something.

rja1 commented 10 years ago

Great, thanks! I'll test it Monday or Tuesday!

Bests,

Rob

On Fri, Sep 12, 2014 at 2:04 PM, roughley <notifications@github.com javascript:_e(%7B%7D,'cvml','notifications@github.com');> wrote:

@rja1 https://github.com/rja1 I updated the paths so that they are trident compatible, see my fork here: https://github.com/shareaholic/capillary

I didn't do anything wrt a startup flag to differentiate between storm/trident. But that shouldn't be that difficult.

— Reply to this email directly or view it on GitHub https://github.com/keenlabs/capillary/issues/5#issuecomment-55453866.

gphat commented 10 years ago

Closing this since the feature is now merged to master. Let us know if it works for you @rja1

rja1 commented 10 years ago

Apologies for the delay and thanks again for the work.

It's not working for me.... not sure if I'm doing something wrong or not. See the exception below. Note that we're running two topologies. One uses a traditional kafka spout, the other uses trident. Both connect to the same zookeeper cluster. I may be setting my roots incorrectly, although I've tried numerous combinations, none of which seem to work.

Thanks

! @6ji192g86 - Internal server error, for (GET) [/] ->

play.api.Application$$anon$1: Execution exception[[IndexOutOfBoundsException: Index: 0, Size: 0]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.api.DefaultApplication.handleError(Application.scala:402) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[org.scala-lang.scala-library-2.10.4.jar:na] Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:604) ~[na:1.7.0_25] at java.util.ArrayList.get(ArrayList.java:382) ~[na:1.7.0_25] at models.ZkKafka$.getSpoutTopology(ZkKafka.scala:52) ~[capillary.capillary-1.2.jar:1.2] at models.ZkKafka$$anonfun$getTopologies$1.apply(ZkKafka.scala:42) ~[capillary.capillary-1.2.jar:1.2] at models.ZkKafka$$anonfun$getTopologies$1.apply(ZkKafka.scala:41) ~[capillary.capillary-1.2.jar:1.2]

On Tue, Sep 16, 2014 at 9:03 AM, Cory G Watson notifications@github.com wrote:

Closing this since the feature is now merged to master. Let us know if it works for you @rja1 https://github.com/rja1

— Reply to this email directly or view it on GitHub https://github.com/keenlabs/capillary/issues/5#issuecomment-55756764.

roughley commented 10 years ago

What I’ve found is that based on the way that the kafka-spout (I’m using the storm external version) uses nodes, and lack of re-tries, I sometimes need to refresh the page a few times before I get a result.  I also made additional updates yesterday, not sure if they have been merged yet.

--  Ian Roughley Sent with Airmail

On September 19, 2014 at 12:32:09 PM, rja1 (notifications@github.com) wrote:

Apologies for the delay and thanks again for the work.

It's not working for me.... not sure if I'm doing something wrong or not. See the exception below. Note that we're running two topologies. One uses a traditional kafka spout, the other uses trident. Both connect to the same zookeeper cluster. I may be setting my roots incorrectly, although I've tried numerous combinations, none of which seem to work.

Thanks

! @6ji192g86 - Internal server error, for (GET) [/] ->

play.api.Application$$anon$1: Execution exception[[IndexOutOfBoundsException: Index: 0, Size: 0]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.api.DefaultApplication.handleError(Application.scala:402) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[org.scala-lang.scala-library-2.10.4.jar:na] Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:604) ~[na:1.7.0_25] at java.util.ArrayList.get(ArrayList.java:382) ~[na:1.7.0_25] at models.ZkKafka$.getSpoutTopology(ZkKafka.scala:52) ~[capillary.capillary-1.2.jar:1.2] at models.ZkKafka$$anonfun$getTopologies$1.apply(ZkKafka.scala:42) ~[capillary.capillary-1.2.jar:1.2] at models.ZkKafka$$anonfun$getTopologies$1.apply(ZkKafka.scala:41) ~[capillary.capillary-1.2.jar:1.2]

On Tue, Sep 16, 2014 at 9:03 AM, Cory G Watson notifications@github.com wrote:

Closing this since the feature is now merged to master. Let us know if it works for you @rja1 https://github.com/rja1

— Reply to this email directly or view it on GitHub https://github.com/keenlabs/capillary/issues/5#issuecomment-55756764.

— Reply to this email directly or view it on GitHub.

gphat commented 10 years ago

I just merged changes from @roughley. Can you test @rja1?

rja1 commented 10 years ago

I'll test it now, thanks

On Fri, Sep 19, 2014 at 11:25 AM, Cory G Watson notifications@github.com wrote:

I just merged changes from @roughley https://github.com/roughley. Can you test @rja1 https://github.com/rja1?

— Reply to this email directly or view it on GitHub https://github.com/keenlabs/capillary/issues/5#issuecomment-56207767.

rja1 commented 10 years ago

See error before.

Just to clarify, I'm pulling the latest version here: https://github.com/keenlabs/capillary/archive/master.zip - md5: b76175e17ee5728201cd313393159b89 (merged 11 minutes ago)

I'm then building like:

Just wanted to make sure I'm not doing something silly, as I'm sort of a newb to this.

Thanks,

Rob

[error] application -

! @6ji1km7l3 - Internal server error, for (GET) [/] ->

play.api.Application$$anon$1: Execution exception[[JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsstring,WrappedArray())))))]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.api.DefaultApplication.handleError(Application.scala:402) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[org.scala-lang.scala-library-2.10.4.jar:na] Caused by: play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsstring,WrappedArray()))))) at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsResult$class.fold(JsResult.scala:77) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsError.fold(JsResult.scala:13) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsValue$class.as(JsValue.scala:65) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4]

Zookeeper structure:

[zk: localhost:2181(CONNECTED) 4] ls / [transactional, realtimeroot, zookeeper, admin, consumers, config, controller, storm, brokers, controller_epoch]

On Fri, Sep 19, 2014 at 11:26 AM, Rob Anderson rockclimbing@gmail.com wrote:

I'll test it now, thanks

On Fri, Sep 19, 2014 at 11:25 AM, Cory G Watson notifications@github.com wrote:

I just merged changes from @roughley https://github.com/roughley. Can you test @rja1 https://github.com/rja1?

— Reply to this email directly or view it on GitHub https://github.com/keenlabs/capillary/issues/5#issuecomment-56207767.

arsonak47 commented 9 years ago

Hi.

I am starting Capillary by following command in terminal

bin/capillary -Dcapillary.zookeepers=192.168.51.98:2181

Please note that Kafka is at machine 1, Zookeeper is at machine 2 and storm is at machine 3. And i am running Capillary from a different machine, suppose machine 4. Initially I was not providing any configuration for kafka.zkroot and storm.zkroot. Then I provided the whole path to kafak and storm as follows (in application.conf)

capillary.zookeepers="192.168.51.98:2181" capillary.kafka.zkroot="192.168.50.124:/home/kafka_2.10-0.8.1" capillary.storm.zkroot="192.168.50.247:/home/storm-0.9.0.1"

Then I started the Capillary again. But I am getting the following exception in terminal where capillary is running

[error] application -

! @6kim8ncei - Internal server error, for (GET) [/] ->

play.api.Application$$anon$1: Execution exception[[IndexOutOfBoundsException: Index: 0, Size: 0]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.api.DefaultApplication.handleError(Application.scala:402) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) [org.scala-lang.scala-library-2.10.4.jar:na] Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) ~[na:1.7.0_40] at java.util.ArrayList.get(ArrayList.java:411) ~[na:1.7.0_40] at models.ZkKafka$.getSpoutTopology(ZkKafka.scala:50) ~[capillary.capillary-1.2.jar:1.2] at models.ZkKafka$$anonfun$getTopologies$1.apply(ZkKafka.scala:42) ~[capillary.capillary-1.2.jar:1.2] at models.ZkKafka$$anonfun$getTopologies$1.apply(ZkKafka.scala:41) ~[capillary.capillary-1.2.jar:1.2]

Please guide me. Whats wrong in my configuration or setup

Thanks

hsitaa commented 9 years ago

https://github.com/keenlabs/capillary/issues/5

I see this Issue close. But as the above comment states . I am also having the same issue.

My Structure of kafka and storm:

Machine 1 : Zookeeper kafka Machine 2 : Broker 1 , broker 2 , broker 3 Machine 3 : Storm zookeeper

from Machine 1 i am running capillary too.

And initially get no error: but when i browse the page on http://servername:9000/

it throws series of exceptions & Errors :

[error] application - Zookeeper Path /consumers/console-consumer-77266/offsets returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-77266/owners returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-77266/ids returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-51896/offsets returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-51896/owners returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-51896/ids returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-40428/offsets returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-40428/owners returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-40428/ids returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-96631/offsets returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-96631/owners returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-96631/ids returned (null)! [error] application - Zookeeper Path /consumers/test-consumer-group/offsets returned (null)! [error] application - Zookeeper Path /consumers/test-consumer-group/owners returned (null)! [error] application - Zookeeper Path /consumers/test-consumer-group/ids returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-26088/offsets returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-26088/owners returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-26088/ids returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-32282/offsets returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-32282/owners returned (null)! [error] application - Zookeeper Path /consumers/console-consumer-32282/ids returned (null)! [error] application -

! @6lo66dmo4 - Internal server error, for (GET) [/] ->

play.api.Application$$anon$1: Execution exception[[JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsstring,WrappedArray())))))]] at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.api.DefaultApplication.handleError(Application.scala:402) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) [com.typesafe.play.play_2.10-2.3.4.jar:2.3.4] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) [org.scala-lang.scala-library-2.10.4.jar:na] Caused by: play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsstring,WrappedArray()))))) at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsResult$class.fold(JsResult.scala:77) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsError.fold(JsResult.scala:13) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4] at play.api.libs.json.JsValue$class.as(JsValue.scala:65) ~[com.typesafe.play.play-json_2.10-2.3.4.jar:2.3.4]

gphat commented 9 years ago

Hey @hsitaa,

Can you show us some of the results from your zkClient.sh regarding the paths above that are reporting null? Also, are you using the version currently in master?

This is mostly likely a configuration issue. Unless you can provide some help there we can't easily help you.