storm-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (STORM-200) Proposal for Multilang's Metrics feature
Date Tue, 25 Feb 2014 16:20:20 GMT

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

ASF GitHub Bot commented on STORM-200:
--------------------------------------

Github user revans2 commented on a diff in the pull request:

    https://github.com/apache/incubator-storm/pull/38#discussion_r10042235
  
    --- Diff: storm-core/src/jvm/backtype/storm/task/ShellBolt.java ---
    @@ -238,6 +256,46 @@ private void handleEmit(Map action) throws InterruptedException {
                 _collector.emitDirect((int)task.longValue(), stream, anchors, tuple);
             }
         }
    +    
    +    private void handleMetrics(Map action) {
    +    	//get metrics
    +    	Object nameObj = action.get("name");
    +    	if ( !(nameObj instanceof String) ) {
    +    		throw new RuntimeException("Receive Metrics name is not String");
    +    	}
    +    	String name = (String) nameObj;
    +    	if (name == null || name.isEmpty()) {
    +    		throw new RuntimeException("Receive Metrics name is NULL");
    +    	}
    +    	if ( !_registeredShellMetrics.containsKey(name)) {
    +    		throw new RuntimeException("Receive Metrics name:" + name + " does not reigster.");
    +    	}
    +    	IMetric iMetric = _registeredShellMetrics.get(name);
    +    	
    +    	//get paramList
    +    	Object paramsObj = action.get("params");
    +    	if ( !(paramsObj instanceof List) ) {
    +    		throw new RuntimeException("Receive Metrics name:" + name + " params is not list.");
    +    	}
    +    	List<Object> params = (List) paramsObj;
    +    	for (Object o : params) {
    --- End diff --
    
    Is this check really needed? Metrics can be any object why not allow that here too?


> Proposal for Multilang's Metrics feature
> ----------------------------------------
>
>                 Key: STORM-200
>                 URL: https://issues.apache.org/jira/browse/STORM-200
>             Project: Apache Storm (Incubating)
>          Issue Type: New Feature
>            Reporter: DashengJu
>            Priority: Minor
>
> Storm 0.9.0.1 exposes a metrics interface to report summary statistics across the full
topology. We can build our own metric, and build metrics consumer to use those statistics.
> But when we use Multilang(ie. Python), we can not use this feature. So we want to summit
a proposal for multilang's metrics. 
> The specifics of the proposal:
> 1. The main idea is: when user want to add a metric statistics in multilang(python) bolt,
>     a) he need first create a metric object and register in ShellBolt's sub-class, 
>     b) then update the metric in Python bolt process through RPC call.
> 2. In Metrics API:
>     a) extend IMetric interface add a method for RPC call:public void updateMetricFromRPC(List<Object>
params);  
>     b) modify IMetric implements, to support updateMetricFromRPC;
> 3. In ShellBolt,
>     a) we have a Map<String, IMetric> to hold user's registered metrics  object;
>     b) we have a method registerMetric(String name, T metric) for user to register their
metris object;
>     c) we have a method handleMetrics(Map action) to handle RPC call from Python process;
> 4) In Multilang protocol: add a command "metrics" for shell process to make RPC call.
The protocol is: {"command":"metrics", "name":"metric-registerd-name", "params":["param-1",
param-2]}
> 5) In storm.py:add rpcMetrics(name, params), user can update remote metric through
this RPC call.
> any suggestions?



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message