Github user uddhavarote commented on the issue:

    https://github.com/apache/storm/pull/2790
  
    Hey, thanks for this update. Without this update, one would end up 
(re)writing a bolt like KafkaBolt with similar functionality but different  
`OnCompletion` function, like I am doing currently for extracting the 
`timestamp` (message's ingest time) from `RecordMetadata` and passing it to the 
next bolt with current `Tuple` fields. 
    
    However, even with this update, I am afraid if I will be able to do the 
similar `OnCompletion` thing I am currently doing by rewriting the bolt.
    The implemented `OnCompletion`  function looks  like ↓
    ```
    @Override
    public void onCompletion(RecordMetadata metadata, Exception e) {
      boolean hasNextBolt = appConf.getBooleanOrDefault(, true);
      synchronized (collector) {
        if (e != null) {
          collector.reportError(e);
        } else {
            if (hasNextBolt) {
              Long field1 = metadata.timestamp(); 
              Long field2 = input.getLongByField(...);
              String field3 = input.getStringByField(...);
              collector.emit( input, new Values(field1, field2, field3));
           }
            collector.ack(input);
        }
      }
    }
    ```
    Since, there is no reference to the`Tuple` object in the  
`PreparableCallback` interface, how can something like above be achieved? 
    If not achievable, is it a good idea to give reference to `Tuple` in the 
said interface allowing further new emits (in `OnCompletion()`) of tuples 
composed of new fields `field1`and fields from current tuple `field2, field3`?


---

Reply via email to