Skip to content

Commit ec57687

Browse files
committed
Only call runs/get when has_more is present
1 parent bd446fe commit ec57687

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

databricks-sdk-java/src/main/java/com/databricks/sdk/mixin/JobsExt.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,19 @@ public boolean hasNext() {
4040
@Override
4141
public BaseRun next() {
4242
BaseRun run = iterator.next();
43-
// fully fetch all top level arrays for the run
44-
GetRunRequest getRunRequest = new GetRunRequest().setRunId(run.getRunId());
45-
Run fullRun = getRun(getRunRequest);
46-
run.setTasks(fullRun.getTasks());
47-
run.setJobClusters(fullRun.getJobClusters());
48-
run.setJobParameters(fullRun.getJobParameters());
49-
run.setRepairHistory(fullRun.getRepairHistory());
43+
44+
// The has_more field is only present in run with 100+ tasks, that is served from Jobs API 2.2.
45+
// Extra tasks and other fields need to be fetched only when has_more is true.
46+
if (run.getHasMore() != null && run.getHasMore()) {
47+
// fully fetch all top level arrays for the run
48+
GetRunRequest getRunRequest = new GetRunRequest().setRunId(run.getRunId());
49+
Run fullRun = getRun(getRunRequest);
50+
run.setTasks(fullRun.getTasks());
51+
run.setJobClusters(fullRun.getJobClusters());
52+
run.setJobParameters(fullRun.getJobParameters());
53+
run.setRepairHistory(fullRun.getRepairHistory());
54+
}
55+
// Set the has_more field to false to indicate that there are no more tasks and other fields to fetch.
5056
run.setHasMore(false);
5157
return run;
5258
}

databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/JobsExtTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,9 +379,9 @@ public void testListRuns() {
379379
.orElse(null);
380380
assertEquals(expectedRun, run);
381381
}
382-
// 3 getRun calls for run 100, 2 getRun calls for run 200, 1 getRun call for run 300, 2 getRun
382+
// 3 getRun calls for run 100, 2 getRun calls for run 200, 0 getRun call for run 300, 2 getRun
383383
// calls for run 400
384-
verify(service, times(8)).getRun(any());
384+
verify(service, times(7)).getRun(any());
385385
}
386386

387387
private void addTasks(BaseRun run, long... taskRunIds) {

0 commit comments

Comments
 (0)