title: Storm bolt executes more than its parent
body: <p>I have a Topology which contains a KafkaSpout and 2 bolts.</p>
  
  <p>BoltParseJsonInput and its execute method:</p>
  
  <pre><code>public void execute(Tuple input) {
      // TODO Auto-generated method stub
      String data = input.getString(4);
      js = new JSONObject(data);
  
      String userId = js.getString("userId");
      String timestamp = js.getString("timestamp");
      counter++;
      System.out.println(counter);
      collector.emit(input, new Values(userId, timestamp));
      collector.ack(input);
  }
  </code></pre>
  
  <p>BoltInsertRedis and its execute method</p>
  
  <pre><code>    public void execute(Tuple input) {
      // TODO Auto-generated method stub
      String userId = input.getStringByField("userId");
      int timestamp = 0;
      try {
  
          timestamp = convertTimestampToEpoch(input.getStringByField("timestamp"));
      } catch (ParseException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
      }
  
      String timestep = this.prefix + timestamp/10;
      String curTimestamp = jedis.hget(timestep, userId);
      if(curTimestamp == null || Integer.parseInt(curTimestamp) &lt; timestamp) {
          jedis.hset(timestep, userId, Integer.toString(timestamp));
      }
      collector.ack(input);
  }
  </code></pre>
  
  <p>BoltInsertRedis get the input from BoltParseJsonInput</p>
  
  <pre><code>builder.setBolt("ParseJsonInput-Bolt", new BoltParseJsonInput()).shuffleGrouping("Kafka-Spout");
      builder.setBolt("BoltRedisUserLastActive-Bolt", new BoltRedisUserLastActive()).shuffleGrouping("ParseJsonInput-Bolt");
  </code></pre>
  
  <p>But when I submit this topology into Storm, BoltInsertRedis execute more than BoltParseJsonInput
  <a href="https://i.stack.imgur.com/uHN9d.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/uHN9d.png" alt="storm ui"></a></p>
  
  <p>Can you explain to me what is the problem here?</p>