Twitter 重新平衡拓扑会引发java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1

Twitter 重新平衡拓扑会引发java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1,twitter,apache-storm,Twitter,Apache Storm,我使用的是文章中指出的泰勒·戈茨的风暴版本 地址为: 我已经成功地在我的计算机上安装了所有东西(运行Windows7,64位)。我还可以很好地运行指示的拓扑和我的拓扑。但是当我试图通过使用命令重新配置喷口或螺栓的数量来重新平衡拓扑时 storm rebalance WordCount -e spout=3 我得到了一个例外: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String inde

我使用的是文章中指出的泰勒·戈茨的风暴版本

地址为:

我已经成功地在我的计算机上安装了所有东西(运行Windows7,64位)。我还可以很好地运行指示的拓扑和我的拓扑。但是当我试图通过使用命令重新配置喷口或螺栓的数量来重新平衡拓扑时

storm rebalance WordCount -e spout=3  
我得到了一个例外:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out   of range: -1
at java.lang.String.substring(String.java:1911)
at backtype.storm.command.rebalance$parse_executor.invoke(rebalance.clj:24)
at clojure.tools.cli$apply_specs.invoke(cli.clj:80)
at clojure.tools.cli$cli.doInvoke(cli.clj:130)
at clojure.lang.RestFn.invoke(RestFn.java:460)
at backtype.storm.command.rebalance$_main.doInvoke(rebalance.clj:31)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at backtype.storm.command.rebalance.main(Unknown Source)
如果我只改变工人的数量,它毫无例外地工作

如果你们中有人测试过这个版本,你能帮我把它去掉吗?
我期待着您的回答。

在提到的Windows版本中,不应按照中的指示传递重新平衡命令参数

为了消除提到的异常(java.lang.StringIndexOutOfBoundsException:),您应该使用以下命令

 storm rebalance WordCount -e "spout=3"
但是,尝试重新平衡更多组件(喷口或螺栓)只会重新平衡列表中提到的最新组件。因此,例如:

storm rebalance WordCount -e "spout=3" -e "count=5"
重新平衡仅适用于“计数”组件,而不适用于“喷嘴”

因此,在我看来,要么更新文档,要么修改rebalance.clj,以支持多个组件的再平衡。
但这是另一个问题。

我在编辑过程中删除了一个签名,以防万一,它们没有在StackOverflow上使用。请参阅@Cris谢谢,Chris对我的代码进行格式化并提供评论。问题在于parse excutor函数中的rebalance.clj,其中输入字符串不正确。如果我发送“-e mybolt=5”,函数只接收“mybolt”而不是“mybolt=5”,只是想知道喷口是否是一个组件名称???Taylor Goetz添加了一个与此相关的jira问题:
storm rebalance WordCount -e "spout=3" -e "count=5"