Skip to content

Commit 22f04c2

Browse files
committed
GetRun logic paginates more arrays
1 parent 6b76d2a commit 22f04c2

File tree

2 files changed

+43
-11
lines changed

2 files changed

+43
-11
lines changed

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

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,9 @@ public Run getRun(GetRunRequest request) {
3535
Collection<RunTask> iterations = run.getIterations();
3636
boolean paginatingIterations = iterations != null && !iterations.isEmpty();
3737

38-
Run currRun = run;
39-
while (currRun.getNextPageToken() != null) {
40-
request.setPageToken(currRun.getNextPageToken());
41-
currRun = super.getRun(request);
38+
while (run.getNextPageToken() != null) {
39+
request.setPageToken(run.getNextPageToken());
40+
Run currRun = super.getRun(request);
4241
if (paginatingIterations) {
4342
Collection<RunTask> newIterations = currRun.getIterations();
4443
if (newIterations != null) {
@@ -50,10 +49,21 @@ public Run getRun(GetRunRequest request) {
5049
run.getTasks().addAll(newTasks);
5150
}
5251
}
53-
}
5452

55-
// now that we've added all pages to the Run, the tokens are useless
56-
run.setNextPageToken(null);
53+
Collection<JobCluster> newClusters = currRun.getJobClusters();
54+
if (newClusters != null) {
55+
run.getJobClusters().addAll(newClusters);
56+
}
57+
Collection<JobParameter> newParameters = currRun.getJobParameters();
58+
if (newParameters != null) {
59+
run.getJobParameters().addAll(newParameters);
60+
}
61+
Collection<RepairHistoryItem> newRepairHistory = currRun.getRepairHistory();
62+
if (newRepairHistory != null) {
63+
run.getRepairHistory().addAll(newRepairHistory);
64+
}
65+
run.setNextPageToken(currRun.getNextPageToken());
66+
}
5767

5868
return run;
5969
}

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
import static org.mockito.ArgumentMatchers.any;
55
import static org.mockito.Mockito.*;
66

7-
import com.databricks.sdk.service.jobs.GetRunRequest;
8-
import com.databricks.sdk.service.jobs.JobsService;
9-
import com.databricks.sdk.service.jobs.Run;
10-
import com.databricks.sdk.service.jobs.RunTask;
7+
import com.databricks.sdk.service.jobs.*;
8+
119
import java.util.ArrayList;
1210
import java.util.Collection;
1311
import org.junit.jupiter.api.Test;
@@ -21,10 +19,16 @@ public void testGetRunPaginationWithTasks() {
2119

2220
Run firstPage = new Run().setNextPageToken("tokenToSecondPage");
2321
addTasks(firstPage, 0L, 1L);
22+
addJobClusters(firstPage, "clusterKey1", "clusterKey2");
23+
addJobParameters(firstPage, "parameterKey1", "parameterKey2");
2424
Run secondPage = new Run().setNextPageToken("tokenToThirdPage");
2525
addTasks(secondPage, 2L, 3L);
26+
addJobClusters(secondPage, "clusterKey3");
27+
addJobParameters(secondPage, "parameterKey3", "parameterKey4");
2628
Run thirdPage = new Run();
2729
addTasks(thirdPage, 4L);
30+
addJobParameters(thirdPage, "parameterKey5");
31+
2832

2933
when(service.getRun(any())).thenReturn(firstPage).thenReturn(secondPage).thenReturn(thirdPage);
3034

@@ -36,6 +40,8 @@ public void testGetRunPaginationWithTasks() {
3640

3741
Run expectedRun = new Run();
3842
addTasks(expectedRun, 0L, 1L, 2L, 3L, 4L);
43+
addJobClusters(expectedRun, "clusterKey1", "clusterKey2", "clusterKey3");
44+
addJobParameters(expectedRun, "parameterKey1", "parameterKey2", "parameterKey3", "parameterKey4", "parameterKey5");
3945

4046
assertEquals(expectedRun, run);
4147
verify(service, times(3)).getRun(any());
@@ -82,4 +88,20 @@ private void addIterations(Run run, long... iterationRunIds) {
8288
}
8389
run.setIterations(iterations);
8490
}
91+
92+
private void addJobClusters(Run run, String... clusterKeys) {
93+
Collection<JobCluster> clusters = new ArrayList<>();
94+
for (String clusterKey : clusterKeys) {
95+
clusters.add(new JobCluster().setJobClusterKey(clusterKey));
96+
}
97+
run.setJobClusters(clusters);
98+
}
99+
100+
private void addJobParameters(Run run, String... parameterKeys) {
101+
Collection<JobParameter> parameters = new ArrayList<>();
102+
for (String parameterKey : parameterKeys) {
103+
parameters.add(new JobParameter().setName(parameterKey).setValue(parameterKey));
104+
}
105+
run.setJobParameters(parameters);
106+
}
85107
}

0 commit comments

Comments
 (0)