Skip to content

Commit b0f534d

Browse files
committed
feature: add param attempt deadline for cloud scheduler
1 parent 3a663a1 commit b0f534d

File tree

4 files changed

+11
-0
lines changed

4 files changed

+11
-0
lines changed

src/deploy/functions/backend.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface ScheduleTrigger {
2323
schedule?: string;
2424
timeZone?: string | null;
2525
retryConfig?: ScheduleRetryConfig | null;
26+
attemptDeadline?: string | null;
2627
}
2728

2829
/** Something that has a ScheduleTrigger */

src/deploy/functions/build.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ export interface ScheduleTrigger {
148148
schedule: string | Expression<string>;
149149
timeZone?: Field<string>;
150150
retryConfig?: ScheduleRetryConfig | null;
151+
attemptDeadline?: Field<string>;
151152
}
152153

153154
export type HttpsTriggered = { httpsTrigger: HttpsTrigger };
@@ -602,6 +603,9 @@ function discoverTrigger(endpoint: Endpoint, region: string, r: Resolver): backe
602603
if (endpoint.scheduleTrigger.timeZone !== undefined) {
603604
bkSchedule.timeZone = r.resolveString(endpoint.scheduleTrigger.timeZone);
604605
}
606+
if (endpoint.scheduleTrigger.attemptDeadline !== undefined) {
607+
bkSchedule.attemptDeadline = r.resolveString(endpoint.scheduleTrigger.attemptDeadline);
608+
}
605609
if (endpoint.scheduleTrigger.retryConfig) {
606610
const bkRetry: backend.ScheduleRetryConfig = {};
607611
r.resolveInts(

src/deploy/functions/runtimes/discovery/v1alpha1.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ function assertBuildEndpoint(ep: WireEndpoint, id: string): void {
222222
schedule: "Field<string>",
223223
timeZone: "Field<string>?",
224224
retryConfig: "object?",
225+
attemptDeadline: "Field<string>?",
225226
});
226227
if (ep.scheduleTrigger.retryConfig) {
227228
assertKeyTypes(prefix + ".scheduleTrigger.retryConfig", ep.scheduleTrigger.retryConfig, {
@@ -320,6 +321,7 @@ function parseEndpointForBuild(
320321
// invalid values before actually modifying prod.
321322
schedule: ep.scheduleTrigger.schedule || "",
322323
timeZone: ep.scheduleTrigger.timeZone ?? null,
324+
attemptDeadline: ep.scheduleTrigger.attemptDeadline ?? null,
323325
};
324326
if (ep.scheduleTrigger.retryConfig) {
325327
st.retryConfig = {};

src/gcp/cloudscheduler.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export interface HttpTarget {
3636
httpMethod: HttpMethod;
3737
headers?: Record<string, string>;
3838
body?: string;
39+
attemptDeadline?: string;
3940

4041
// oneof authorizationHeader
4142
oauthToken?: OauthToken;
@@ -249,6 +250,9 @@ export async function jobFromEndpoint(
249250
endpoint.serviceAccount ?? (await gce.getDefaultServiceAccount(projectNumber)),
250251
},
251252
};
253+
if (endpoint.scheduleTrigger.attemptDeadline) {
254+
job.httpTarget.attemptDeadline = endpoint.scheduleTrigger.attemptDeadline;
255+
}
252256
} else {
253257
assertExhaustive(endpoint.platform);
254258
}

0 commit comments

Comments
 (0)