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`?
---