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

Zhiming Guo commented on STORM-328:
-----------------------------------

Hi there, I'm a newbie and I want to solve this newbie bug. I have read the 
related codes. Is it a real bug? 
Should I just simply add a new Utils.getFloat? Or I add Utils.getFloat and 
Utils.getNumber then replace all getInt with getNumber?

I ran 
{code}
egrep -ir --include=*.{java,clj} "getInt\(" . | less
{code}
and I got output: 
{code}
./backtype/storm/drpc/DRPCSpout.java:            int port = 
Utils.getInt(conf.get(Config.DRPC_INVOCATIONS_PORT));
./backtype/storm/drpc/ReturnResults.java:            final int port = 
Utils.getInt(retMap.get("port"));
./backtype/storm/messaging/netty/Client.java:        buffer_size = 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_BUFFER_SIZE));
./backtype/storm/messaging/netty/Client.java:        max_retries = Math.min(30, 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_MAX_RETRIES)));
./backtype/storm/messaging/netty/Client.java:        base_sleep_ms = 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_MIN_SLEEP_MS));
./backtype/storm/messaging/netty/Client.java:        max_sleep_ms = 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_MAX_SLEEP_MS));
./backtype/storm/messaging/netty/Client.java:        this.messageBatchSize = 
Utils.getInt(storm_conf.get(Config.STORM_NETTY_MESSAGE_BATCH_SIZE), 262144);
./backtype/storm/messaging/netty/Client.java:        flushCheckInterval = 
Utils.getInt(storm_conf.get(Config.STORM_NETTY_FLUSH_CHECK_INTERVAL_MS), 10); 
// default 10 ms
./backtype/storm/messaging/netty/Context.java:        int maxWorkers = 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_CLIENT_WORKER_THREADS));
./backtype/storm/messaging/netty/Context.java:        int otherWorkers = 
Utils.getInt(storm_conf.get(Config.TOPOLOGY_WORKERS), 1) - 1;
./backtype/storm/messaging/netty/Server.java:        queueCount = 
Utils.getInt(storm_conf.get(Config.WORKER_RECEIVER_THREAD_COUNT), 1);
./backtype/storm/messaging/netty/Server.java:        int buffer_size = 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_BUFFER_SIZE));
./backtype/storm/messaging/netty/Server.java:        int maxWorkers = 
Utils.getInt(storm_conf.get(Config.STORM_MESSAGING_NETTY_SERVER_WORKER_THREADS));
./backtype/storm/task/GeneralTopologyContext.java:        Integer max = 
Utils.getInt(_stormConf.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS));
./backtype/storm/task/GeneralTopologyContext.java:                    max = 
Math.max(Utils.getInt(comp), max);
./backtype/storm/testing/MemoryTransactionalSpout.java:            else 
_maxSpoutPending = Utils.getInt(c);
./backtype/storm/testing/OpaqueMemoryTransactionalSpout.java:            else 
_maxSpoutPending = Utils.getInt(c);
./backtype/storm/transactional/TransactionalSpoutCoordinator.java:            
_maxTransactionActive = Utils.getInt(active);
./backtype/storm/utils/NimbusClient.java:            int nimbusPort = 
Utils.getInt(conf.get(Config.NIMBUS_THRIFT_PORT));
./backtype/storm/utils/Utils.java:    public static Integer getInt(Object o) {
./backtype/storm/utils/Utils.java:      Integer result = getInt(o, null);
./backtype/storm/utils/Utils.java:    public static Integer getInt(Object o, 
Integer defaultValue) {
./backtype/storm/utils/Utils.java:            serverPorts.add(zkServer + ":" + 
Utils.getInt(port));
./backtype/storm/utils/Utils.java:                
.connectionTimeoutMs(Utils.getInt(conf.get(Config.STORM_ZOOKEEPER_CONNECTION_TIMEOUT)))
./backtype/storm/utils/Utils.java:                
.sessionTimeoutMs(Utils.getInt(conf.get(Config.STORM_ZOOKEEPER_SESSION_TIMEOUT)))
./backtype/storm/utils/Utils.java:                            
Utils.getInt(conf.get(Config.STORM_ZOOKEEPER_RETRY_INTERVAL)),
./backtype/storm/utils/Utils.java:                            
Utils.getInt(conf.get(Config.STORM_ZOOKEEPER_RETRY_TIMES)),
./backtype/storm/utils/Utils.java:                            
Utils.getInt(conf.get(Config.STORM_ZOOKEEPER_RETRY_INTERVAL_CEILING))));
./storm/trident/drpc/ReturnResultsReducer.java:            final int port = 
Utils.getInt(retMap.get("port"));
{code}

> Config.java and Utils.get{Int,Long} are not in sync for floating point
> ----------------------------------------------------------------------
>
>                 Key: STORM-328
>                 URL: https://issues.apache.org/jira/browse/STORM-328
>             Project: Apache Storm (Incubating)
>          Issue Type: Bug
>    Affects Versions: 0.9.2-incubating, 0.9.1-incubating, 0.9.0.1
>            Reporter: Robert Joseph Evans
>              Labels: newbie
>
> For most numeric configuration values Config.java has a type of Number 
> listed, but the values are parsed using Utils.getInt or Utils.getLong, which 
> means if someone gave a floating point number it would pass the 
> ConfigValidation, but would blow up when it is used.  This is most critical 
> for values that Nimbus reads, but would be good to have them consistent 
> everywhere.
> We should also check that getInt works properly for numbers that are larger 
> then would fit in an integer.
> Either we need to update Utils to be more lenient when looking at doubles, or 
> we need to make Config more strict, which may be difficult with the YAML and 
> JSON parsing that happens, where ints are often converted into longs.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to