[
https://issues.apache.org/jira/browse/STORM-439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14110741#comment-14110741
]
ASF GitHub Bot commented on STORM-439:
--------------------------------------
Github user revans2 commented on the pull request:
https://github.com/apache/incubator-storm/pull/242#issuecomment-53427732
OK so mustache will do HTML escaping with the ```{{var}}``` like syntax,
but it will not do URL encoding. So we have added in URL encoded ids to the
result of the REST APIs to allow us to not bother with doing the URL encoding
in the browser. That seems OK I guess. But why are we not url decoding the
url parameters in the REST API any more? Is it because the ring framework
already decodes them for us? And I am really confused why in the
visualization-data function we need to double url encode the ids in the link?
From the look of it, it is because we take those parameters and place them in a
new URL for the rest call. I would much rather have the browser encode them
again when making them a part of the URL. encodeURIComponent should be what we
want and is a standard part of javascript.
> UI unable to view topologies with percent encoded values in id
> --------------------------------------------------------------
>
> Key: STORM-439
> URL: https://issues.apache.org/jira/browse/STORM-439
> Project: Apache Storm (Incubating)
> Issue Type: Bug
> Affects Versions: 0.9.2-incubating
> Reporter: Bryan Baugher
> Assignee: Parth Brahmbhatt
>
> We recently upgraded to 0.9.2 from 0.8.2 or so. One of our topologies had a
> percent encoded value in the id 'destination%F5backfill' (or interpreted
> 'destination_backfill'). The UI is unable to view this topology giving us the
> error,
> {code}
> NotAliveException(msg:destination_backfill-2-1407261676)
> at
> backtype.storm.generated.Nimbus$getTopologyInfo_result.read(Nimbus.java:11347)
> at org.apache.thrift7.TServiceClient.receiveBase(TServiceClient.java:78)
> at
> backtype.storm.generated.Nimbus$Client.recv_getTopologyInfo(Nimbus.java:491)
> at
> backtype.storm.generated.Nimbus$Client.getTopologyInfo(Nimbus.java:478)
> at backtype.storm.ui.core$topology_page.invoke(core.clj:587)
> at backtype.storm.ui.core$fn__8229.invoke(core.clj:796)
> at compojure.core$make_route$fn__3365.invoke(core.clj:93)
> at compojure.core$if_route$fn__3353.invoke(core.clj:39)
> at compojure.core$if_method$fn__3346.invoke(core.clj:24)
> at compojure.core$routing$fn__3371.invoke(core.clj:106)
> at clojure.core$some.invoke(core.clj:2443)
> at compojure.core$routing.doInvoke(core.clj:106)
> at clojure.lang.RestFn.applyTo(RestFn.java:139)
> at clojure.core$apply.invoke(core.clj:619)
> at compojure.core$routes$fn__3375.invoke(core.clj:111)
> at ring.middleware.reload$wrap_reload$fn__7540.invoke(reload.clj:14)
> at backtype.storm.ui.core$catch_errors$fn__8268.invoke(core.clj:858)
> at
> ring.middleware.keyword_params$wrap_keyword_params$fn__4029.invoke(keyword_params.clj:27)
> at
> ring.middleware.nested_params$wrap_nested_params$fn__4068.invoke(nested_params.clj:65)
> at ring.middleware.params$wrap_params$fn__4001.invoke(params.clj:55)
> at
> ring.middleware.multipart_params$wrap_multipart_params$fn__4096.invoke(multipart_params.clj:103)
> at ring.middleware.flash$wrap_flash$fn__4277.invoke(flash.clj:14)
> at ring.middleware.session$wrap_session$fn__4266.invoke(session.clj:43)
> at ring.middleware.cookies$wrap_cookies$fn__4197.invoke(cookies.clj:160)
> at ring.adapter.jetty$proxy_handler$fn__7179.invoke(jetty.clj:16)
> at
> ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle(Unknown
> Source)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:326)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> at
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
> at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> {code}
> So it seems the UI is translating the percent encoded value which causes this
> issue. We shouldn't be putting these values in our topologies id in the first
> place but thought I would log this to see if you wanted to try to limit what
> characters are allowed in a topology id.
--
This message was sent by Atlassian JIRA
(v6.2#6252)