James Xu created STORM-72:
-----------------------------

             Summary: Storm Conf convert value to int fail
                 Key: STORM-72
                 URL: https://issues.apache.org/jira/browse/STORM-72
             Project: Apache Storm (Incubating)
          Issue Type: Improvement
            Reporter: James Xu
            Priority: Minor


https://github.com/nathanmarz/storm/issues/588

 ./storm jar my.jar my.MainClass args1=argsValue1 ... -c nimbus.thirft.port=7777

so my stormConf will include a hash entry['nimbus.thirft.port']='7777'
but the method of util convert Object to int has a bug:
https://github.com/nathanmarz/storm/blob/master/storm-core/src/jvm/backtype/storm/utils/Utils.java#L270

    public static Integer getInt(Object o) {
        if(o instanceof Long) {
            return ((Long) o ).intValue();
        } else if (o instanceof Integer) {
            return (Integer) o;
        } else if (o instanceof Short) {
            return ((Short) o).intValue();
        } else {
            throw new IllegalArgumentException("Don't know how to convert " + o 
+ " + to int");
        }
    }
call from

https://github.com/nathanmarz/storm/blob/master/storm-core/src/jvm/backtype/storm/utils/NimbusClient.java#L18

    public static NimbusClient getConfiguredClient(Map conf) {
        try {
            String nimbusHost = (String) conf.get(Config.NIMBUS_HOST);
            int nimbusPort = Utils.getInt(conf.get(Config.NIMBUS_THRIFT_PORT));
            return new NimbusClient(conf, nimbusHost, nimbusPort);
        } catch (TTransportException ex) {
            throw new RuntimeException(ex);
        }
    }


my mind add code:

       else if (o instanceof String) {
            return Integer.valueOf((String) o);
        }
    public static Integer getInt(Object o) {
        if(o instanceof Long) {
            return ((Long) o ).intValue();
        } else if (o instanceof Integer) {
            return (Integer) o;
        } else if (o instanceof Short) {
            return ((Short) o).intValue();
        } else if (o instanceof String) {
            return Integer.valueOf((String) o);
        } else {
            throw new IllegalArgumentException("Don't know how to convert " + o 
+ " + to int");
        }
    }



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Reply via email to