You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@storm.apache.org by "Pascal Brueckner (Jira)" <ji...@apache.org> on 2020/12/02 22:15:00 UTC

[jira] [Comment Edited] (STORM-3652) Last error not displayed in Topology summary storm ui

    [ https://issues.apache.org/jira/browse/STORM-3652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17242766#comment-17242766 ] 

Pascal Brueckner edited comment on STORM-3652 at 12/2/20, 10:14 PM:
--------------------------------------------------------------------

While the summary view now properly mentions errors again, listing the error details within the Bolt detail view most often fails: The table just states "No data available in table" This is not always reproducible. The error log will sometimes be shown correctly, but in the majority of my test cases the error log was empty.

To reproduce the issue I modified the ExclamationBolt of the storm-starter topology to throw a RuntimeException on the first execution attempt, but complete successfully the second time:

public void execute(Tuple tuple) {
 {{  File file = new File("/tmp/X");}}
 {{  }}{{try {}}
 {{    if (file.createNewFile()) {}}
 {{      throw new RuntimeException(new Exception("RTEXCP"));}}
 {{    }}{}}
 {{  }}\{{} catch (IOException e) {}}
 {{    }}{{System.out.println("IOEXCP");}}
 \{{  }}}
 }

Running this topology will (most of the time) show an error in the summary, but omit the details.


was (Author: sylence):
While the summary view now properly mentions errors again, listing the error details within the Bolt detail view most often fails: The table just states "No data available in table" This is not always reproducible. The error log will sometimes be shown correctly, but in the majority of my test cases the error log was empty.

To reproduce the issue I modified the ExclamationBolt of the storm-starter topology to throw a RuntimeException on the first execution attempt, but complete successfully the second time:


{{ public void execute(Tuple tuple) {}}
{{  File file = new File("/tmp/X");}}
{{  }}{{try {}}
{{    if (file.createNewFile()) {}}
{{      throw new RuntimeException(new Exception("RTEXCP"));}}
{{    }}{{}}}
{{  }}{{} catch (IOException e) {}}
{{    }}{{System.out.println("IOEXCP");}}
{{  }}}
}

Running this topology will (most of the time) show an error in the summary, but omit the details.

>  Last error not displayed  in Topology summary storm ui
> -------------------------------------------------------
>
>                 Key: STORM-3652
>                 URL: https://issues.apache.org/jira/browse/STORM-3652
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-webapp
>    Affects Versions: 2.0.0, 2.1.0, 2.2.0
>            Reporter: jbarreto
>            Assignee: Stephen Powis
>            Priority: Major
>             Fix For: 2.3.0
>
>          Time Spent: 3h 50m
>  Remaining Estimate: 0h
>
> Under storm ui "Topology summary" lastError is not getting populated, you need to go into "Component summary"
>   
>  Seems some body raised a similar question here [https://github.com/apache/storm/pull/2828#issuecomment-420790179]
> STORM-3217 fixed the component page, but not the topology page
>  is it because it is missing here [https://github.com/apache/storm/blob/v2.1.0/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java#L1225]
>  
> I see it is in this section added [https://github.com/apache/storm/blob/v2.1.0/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java#L1480]
>   
> h2. Topology summary ({color:#de350b}Last error appears empty, failed metric = 40{color})
> *API response*
>  localhost:8080/api/v1/topology/topology-test-1-1591927011
> {code:java}
>  
> {
>    "bolts":[
>       {
>          "requestedCpu":10.0,
>          "encodedBoltId":"TopLevel.test",
>          "transferred":0,
>          "lastError":"",  <-- *empty*
>          "processLatency":"0.000",
>          "executeLatency":"5.000",
>          "executed":40,
>          "failed":40, <-- *failed count not zero*
>          "requestedMemOnHeap":128.0,
>          "acked":0,
>          "capacity":"0.001",
>          "emitted":0,
>          "requestedMemOffHeap":0.0,
>          "executors":1,
>          "requestedGenericResourcesComp":"",
>          "boltId":"TopLevel.test",
>          "tasks":1
>       }
>    ]
> }
> {code}
>  
> h2. Component summary ({color:#00875a}Displays the errors{color})
> *API response*
>  localhost:8080/api/v1/topology/topology-test-1-1591927011/component/TopLevel.test?sys=false
> {code:java}
> {
>    "requestedGenericResources":"",
>    "componentErrors":[
>       {
>          "errorTime":1591928686,
>          "errorWorkerLogLink":"http:\/\/localhost:8000\/api\/v1\/log?file=topology-test-1-1591927011%2F6700%2Fworker.log",
>          "errorLapsedSecs":16,
>          "errorPort":6700,
>          "error":"java.lang.IllegalArgumentException: Error with IllegalArgumentException\n\tat com.test.TestBolt.execute(TestBolt.java:35)\n\tat org.apache.storm.executor.bolt.BoltExecutor.tupleActionFn(BoltExecutor.java:236)\n\tat org.apache.storm.executor.Executor.accept(Executor.java:283)\n\tat org.apache.storm.utils.JCQueue.consumeImpl(JCQueue.java:131)\n\tat org.apache.storm.utils.JCQueue.consume(JCQueue.java:111)\n\tat org.apache.storm.executor.bolt.BoltExecutor$1.call(BoltExecutor.java:172)\n\tat org.apache.storm.executor.bolt.BoltExecutor$1.call(BoltExecutor.java:159)\n\tat org.apache.storm.utils.Utils$1.run(Utils.java:394)\n\tat java.lang.Thread.run(Thread.java:748)\n",
>          "errorHost":"localhost"
>       }
>    ]
> }
> {code}
>  Errors reported using
> {code:java}
> // Where outputCollector is the instance passed during BaseRichBolt::prepare
> // public void prepare(Map stormConf, TopologyContext context, OutputCollector outputCollector) {
> outputCollector().reportError(e);
> outputCollector().fail(input);
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)