Skip to content

Commit fc40e1d

Browse files
authored
fix: JS API viewports should throw only for basic data issues (deephaven#6535)
Network issues now fire requestfailed events to signal that the table was in a bad state. Fixes DH-18331
1 parent dd72175 commit fc40e1d

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

web/client-api/src/main/java/io/deephaven/web/client/api/subscription/TableViewportSubscription.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,9 @@ public void setInternalViewport(double firstRow, double lastRow, Column[] column
250250
Boolean isReverseViewport) {
251251
// Until we've created the stream, we just cache the requested viewport
252252
if (status == Status.STARTING) {
253+
if (firstRow < 0 || firstRow > lastRow) {
254+
throw new IllegalArgumentException("Invalid viewport row range: " + firstRow + " to " + lastRow);
255+
}
253256
this.firstRow = firstRow;
254257
this.lastRow = lastRow;
255258
this.columns = columns;
@@ -273,8 +276,12 @@ public void setInternalViewport(double firstRow, double lastRow, Column[] column
273276
isReverseViewport = false;
274277
}
275278
RangeSet viewport = RangeSet.ofRange((long) firstRow, (long) lastRow);
276-
this.sendBarrageSubscriptionRequest(viewport, Js.uncheckedCast(columns), updateIntervalMs,
277-
isReverseViewport);
279+
try {
280+
this.sendBarrageSubscriptionRequest(viewport, Js.uncheckedCast(columns), updateIntervalMs,
281+
isReverseViewport);
282+
} catch (Exception e) {
283+
fireEvent(JsTable.EVENT_REQUEST_FAILED, e.getMessage());
284+
}
278285
}
279286

280287
/**

0 commit comments

Comments
 (0)