Skip to content

Commit ecc7525

Browse files
committed
fix(schedule): serialize ScheduleState into gRPC CreateScheduleRequest proto
RequestMapper.createScheduleRequest was missing the state field, causing initialState to be silently dropped on the gRPC path. Add TypeMapper overloads for the thrift→proto direction (schedulePauseInfo and scheduleState) and wire state into the proto builder. Add a RequestMapper-level test that verifies state and pauseInfo survive the full thrift→proto conversion. Signed-off-by: abhishek.jha <abhishek.jha@uber.com>
1 parent e4782a9 commit ecc7525

3 files changed

Lines changed: 44 additions & 0 deletions

File tree

src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.scheduleAction;
4646
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.schedulePolicies;
4747
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.scheduleSpec;
48+
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.scheduleState;
4849
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.searchAttributes;
4950
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.startTimeFilter;
5051
import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.statusFilter;
@@ -1033,6 +1034,7 @@ public static com.uber.cadence.api.v1.CreateScheduleRequest createScheduleReques
10331034
if (t.getMemo() != null) b.setMemo(memo(t.getMemo()));
10341035
if (t.getSearchAttributes() != null)
10351036
b.setSearchAttributes(searchAttributes(t.getSearchAttributes()));
1037+
if (t.getState() != null) b.setState(scheduleState(t.getState()));
10361038
return b.build();
10371039
}
10381040

src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,6 +1197,16 @@ static com.uber.cadence.SchedulePauseInfo schedulePauseInfo(SchedulePauseInfo t)
11971197
return res;
11981198
}
11991199

1200+
static SchedulePauseInfo schedulePauseInfo(com.uber.cadence.SchedulePauseInfo t) {
1201+
if (t == null) {
1202+
return SchedulePauseInfo.getDefaultInstance();
1203+
}
1204+
return SchedulePauseInfo.newBuilder()
1205+
.setReason(Helpers.nullToEmpty(t.getReason()))
1206+
.setPausedBy(Helpers.nullToEmpty(t.getPausedBy()))
1207+
.build();
1208+
}
1209+
12001210
static com.uber.cadence.ScheduleState scheduleState(ScheduleState t) {
12011211
if (t == null || t == ScheduleState.getDefaultInstance()) {
12021212
return null;
@@ -1207,6 +1217,15 @@ static com.uber.cadence.ScheduleState scheduleState(ScheduleState t) {
12071217
return res;
12081218
}
12091219

1220+
static ScheduleState scheduleState(com.uber.cadence.ScheduleState t) {
1221+
if (t == null) {
1222+
return ScheduleState.getDefaultInstance();
1223+
}
1224+
ScheduleState.Builder b = ScheduleState.newBuilder().setPaused(t.isPaused());
1225+
if (t.getPauseInfo() != null) b.setPauseInfo(schedulePauseInfo(t.getPauseInfo()));
1226+
return b.build();
1227+
}
1228+
12101229
static com.uber.cadence.BackfillInfo backfillInfo(BackfillInfo t) {
12111230
if (t == null || t == BackfillInfo.getDefaultInstance()) {
12121231
return null;

src/test/java/com/uber/cadence/internal/sync/ScheduleClientImplTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.junit.Assert.assertEquals;
1919
import static org.junit.Assert.assertNotNull;
2020
import static org.junit.Assert.assertNull;
21+
import static org.junit.Assert.assertTrue;
2122
import static org.mockito.ArgumentCaptor.forClass;
2223
import static org.mockito.ArgumentMatchers.any;
2324
import static org.mockito.Mockito.mock;
@@ -440,6 +441,28 @@ SCHEDULE_ID, null, minimalAction(), null, new ScheduleInitialState(true, null, "
440441
assertEquals("ci", req.getState().getPauseInfo().getPausedBy());
441442
}
442443

444+
@Test
445+
public void createScheduleRequest_stateSerializesToProto() {
446+
com.uber.cadence.SchedulePauseInfo pi = new com.uber.cadence.SchedulePauseInfo();
447+
pi.setReason("deploying");
448+
pi.setPausedBy("ci-bot");
449+
com.uber.cadence.ScheduleState thriftState =
450+
new com.uber.cadence.ScheduleState().setPaused(true).setPauseInfo(pi);
451+
com.uber.cadence.CreateScheduleRequest thrift =
452+
new com.uber.cadence.CreateScheduleRequest()
453+
.setDomain(DOMAIN)
454+
.setScheduleId(SCHEDULE_ID)
455+
.setState(thriftState);
456+
457+
com.uber.cadence.api.v1.CreateScheduleRequest proto =
458+
com.uber.cadence.internal.compatibility.proto.mappers.RequestMapper.createScheduleRequest(
459+
thrift);
460+
461+
assertTrue(proto.getState().getPaused());
462+
assertEquals("deploying", proto.getState().getPauseInfo().getReason());
463+
assertEquals("ci-bot", proto.getState().getPauseInfo().getPausedBy());
464+
}
465+
443466
// --- null handling ---
444467

445468
@Test

0 commit comments

Comments
 (0)