@Override public void execute(Tuple tuple) { // write the finalCount to SqlDb on each TickTuple. if (isTickTuple(tuple)) { // only emit if finalCount > 0 if (finalCount > 0) { logger.info( "emitting final count" + ", finalCount: " + finalCount + ", totalCount: " + totalCount + ", tuplesToAck: " + tuplesToAck.size() + " at " + System.currentTimeMillis()); if (db != null) { db.insertValue(System.currentTimeMillis(), finalCount); } else { if (enableAck) { this.collector.emit(tuplesToAck, new Values(finalCount)); } else { this.collector.emit(new Values(finalCount)); } } finalCount = 0L; if (enableAck) { for (Tuple tupleToAck : tuplesToAck) { collector.ack(tupleToAck); } tuplesToAck.clear(); } } } else { // Merge finalCount from all PartialCountBolt tasks long incomingPartialCount = tuple.getLong(0); finalCount += incomingPartialCount; totalCount += incomingPartialCount; if (enableAck) { tuplesToAck.add(tuple); } } }