Skip to content

Commit e3a0f30

Browse files
authored
chore: pass window info in accumulator eof message (#197)
Signed-off-by: Yashash H L <yashashhl25@gmail.com>
1 parent 4fa3b39 commit e3a0f30

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

src/main/java/io/numaproj/numaflow/accumulator/AccumulatorActor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ private void sendEOF(String EOF) {
5050
.newBuilder()
5151
.setWindow(AccumulatorOuterClass.KeyedWindow
5252
.newBuilder()
53+
.setStart(this.keyedWindow.getStart())
54+
.setEnd(this.keyedWindow.getEnd())
5355
.addAllKeys(this.keyedWindow.getKeysList()))
5456
.setEOF(true)
5557
.build();

src/main/java/io/numaproj/numaflow/accumulator/OutputStreamObserverImpl.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class OutputStreamObserverImpl implements OutputStreamObserver {
1616
private final ActorRef outputActor;
1717
private final AccumulatorOuterClass.KeyedWindow keyedWindow;
18-
private final Instant latestWatermark = Instant.ofEpochMilli(-1);
18+
private Instant latestWatermark = Instant.ofEpochMilli(-1);
1919

2020
public OutputStreamObserverImpl(
2121
ActorRef outputActor,
@@ -26,14 +26,17 @@ public OutputStreamObserverImpl(
2626

2727
private AccumulatorOuterClass.AccumulatorResponse buildResponse(Message message) {
2828
AccumulatorOuterClass.AccumulatorResponse.Builder responseBuilder = AccumulatorOuterClass.AccumulatorResponse.newBuilder();
29+
if (message.getWatermark().isAfter(latestWatermark)) {
30+
this.latestWatermark = message.getWatermark();
31+
}
2932
// set the window using the actor metadata.
3033
responseBuilder.setWindow(AccumulatorOuterClass.KeyedWindow.newBuilder()
3134
.setStart(Timestamp.newBuilder()
3235
.setSeconds(0)
33-
.setNanos(0))
36+
.setNanos(0).build())
3437
.setEnd(Timestamp.newBuilder()
3538
.setSeconds(this.latestWatermark.getEpochSecond())
36-
.setNanos(this.latestWatermark.getNano()))
39+
.setNanos(this.latestWatermark.getNano()).build())
3740
.setSlot("slot-0")
3841
.addAllKeys(this.keyedWindow.getKeysList())
3942
.build());
@@ -47,11 +50,11 @@ private AccumulatorOuterClass.AccumulatorResponse buildResponse(Message message)
4750
.setEventTime(Timestamp
4851
.newBuilder()
4952
.setSeconds(message.getEventTime().getEpochSecond())
50-
.setNanos(message.getEventTime().getNano()))
53+
.setNanos(message.getEventTime().getNano()).build())
5154
.setWatermark(Timestamp
5255
.newBuilder()
5356
.setSeconds(message.getWatermark().getEpochSecond())
54-
.setNanos(message.getWatermark().getNano()))
57+
.setNanos(message.getWatermark().getNano()).build())
5558
.putAllHeaders(message.getHeaders())
5659
.addAllKeys(message.getKeys()
5760
== null ? new ArrayList<>() : Arrays.asList(message.getKeys()))

0 commit comments

Comments
 (0)