Skip to content

Commit 456da32

Browse files
Fix null pointer on trigger immediately (#1865)
1 parent d50d274 commit 456da32

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

temporal-sdk/src/main/java/io/temporal/client/schedules/Schedule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public Builder setSpec(ScheduleSpec spec) {
7373
}
7474

7575
/**
76-
* Set the spec for this schedule
76+
* Set the policy for this schedule
7777
*
78-
* @see ScheduleSpec
78+
* @see SchedulePolicy
7979
*/
8080
public Builder setPolicy(SchedulePolicy policy) {
8181
this.policy = policy;

temporal-sdk/src/main/java/io/temporal/internal/client/RootScheduleClientInvoker.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,11 @@ public void createSchedule(CreateScheduleInput input) {
9898
}
9999

100100
if (input.getOptions().isTriggerImmediately()) {
101-
patchBuilder.setTriggerImmediately(
102-
TriggerImmediatelyRequest.newBuilder()
103-
.setOverlapPolicy(input.getSchedule().getPolicy().getOverlap())
104-
.build());
101+
TriggerImmediatelyRequest.Builder triggerRequest = TriggerImmediatelyRequest.newBuilder();
102+
if (input.getSchedule().getPolicy() != null) {
103+
triggerRequest.setOverlapPolicy(input.getSchedule().getPolicy().getOverlap());
104+
}
105+
patchBuilder.setTriggerImmediately(triggerRequest.build());
105106
}
106107

107108
request.setInitialPatch(patchBuilder.build());

temporal-sdk/src/test/java/io/temporal/client/schedules/ScheduleTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,20 @@ public void triggerSchedule() {
235235
}
236236
}
237237

238+
@Test
239+
public void triggerScheduleNoPolicy() {
240+
ScheduleClient client = createScheduleClient();
241+
// Create schedule
242+
ScheduleOptions options = ScheduleOptions.newBuilder().setTriggerImmediately(true).build();
243+
String scheduleId = UUID.randomUUID().toString();
244+
Schedule schedule =
245+
createTestSchedule().setState(ScheduleState.newBuilder().setPaused(true).build()).build();
246+
ScheduleHandle handle = client.createSchedule(scheduleId, schedule, options);
247+
waitForActions(handle, 1);
248+
// Cleanup schedule
249+
handle.delete();
250+
}
251+
238252
@Test
239253
public void backfillSchedules() {
240254
// assumeTrue("skipping for test server", SDKTestWorkflowRule.useExternalService);

0 commit comments

Comments
 (0)