Skip to content

Commit 2cc5cc3

Browse files
committed
find npe
1 parent 36d2b48 commit 2cc5cc3

3 files changed

Lines changed: 11 additions & 2 deletions

File tree

sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/Timer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public static <K> Timer<K> cleared(
126126
*/
127127
public abstract @Nullable PaneInfo getPaneInfo();
128128

129-
public abstract @Nullable CausedByDrain causedByDrain();
129+
public abstract CausedByDrain causedByDrain();
130130

131131
@Override
132132
public final boolean equals(@Nullable Object other) {

sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValues.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ public Builder<T> setRecordOffset(@Nullable Long recordOffset) {
148148

149149
@Override
150150
public Builder<T> setCausedByDrain(CausedByDrain causedByDrain) {
151+
checkStateNotNull(causedByDrain, "CausedByDrain is null");
151152
this.causedByDrain = causedByDrain;
152153
return this;
153154
}
@@ -202,6 +203,7 @@ public PaneInfo getPaneInfo() {
202203

203204
@Override
204205
public CausedByDrain causedByDrain() {
206+
checkStateNotNull(causedByDrain, "CausedByDrain not set");
205207
return causedByDrain;
206208
}
207209

sdks/java/harness/src/main/java/org/apache/beam/fn/harness/FnApiDoFnRunner.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,15 +624,18 @@ private void startBundle() {
624624

625625
private void processElementForParDo(WindowedValue<InputT> elem) {
626626
currentElement = elem;
627+
causedByDrain = currentElement.causedByDrain();
627628
try {
628629
doFnInvoker.invokeProcessElement(processContext);
629630
} finally {
630631
currentElement = null;
632+
causedByDrain = null;
631633
}
632634
}
633635

634636
private void processElementForWindowObservingParDo(WindowedValue<InputT> elem) {
635637
currentElement = elem;
638+
causedByDrain = currentElement.causedByDrain();
636639
try {
637640
Iterator<BoundedWindow> windowIterator =
638641
(Iterator<BoundedWindow>) elem.getWindows().iterator();
@@ -643,12 +646,14 @@ private void processElementForWindowObservingParDo(WindowedValue<InputT> elem) {
643646
} finally {
644647
currentElement = null;
645648
currentWindow = null;
649+
causedByDrain = null;
646650
}
647651
}
648652

649653
private void processElementForWindowObservingSizedElementAndRestriction(
650654
WindowedValue<KV<KV<InputT, KV<RestrictionT, WatermarkEstimatorStateT>>, Double>> elem) {
651655
currentElement = elem.withValue(elem.getValue().getKey().getKey());
656+
causedByDrain = elem.causedByDrain();
652657
windowCurrentIndex = -1;
653658
windowStopIndex = currentElement.getWindows().size();
654659
currentWindows = ImmutableList.copyOf(currentElement.getWindows());
@@ -660,6 +665,7 @@ private void processElementForWindowObservingSizedElementAndRestriction(
660665
windowCurrentIndex = -1;
661666
windowStopIndex = 0;
662667
currentElement = null;
668+
causedByDrain = null;
663669
currentWindows = null;
664670
currentRestriction = null;
665671
currentWatermarkEstimatorState = null;
@@ -1202,7 +1208,8 @@ private <K> void processTimer(
12021208
checkNotNull(timerBundleTracker);
12031209
try {
12041210
currentKey = timer.getUserKey();
1205-
causedByDrain = timer.causedByDrain();
1211+
causedByDrain = Preconditions.checkNotNull(timer.causedByDrain());
1212+
12061213
// add drain
12071214
Iterator<BoundedWindow> windowIterator =
12081215
(Iterator<BoundedWindow>) timer.getWindows().iterator();

0 commit comments

Comments
 (0)