Skip to content

Commit baf9818

Browse files
committed
Handle 429 from auto-model service
1 parent 26d27f8 commit baf9818

1 file changed

Lines changed: 23 additions & 2 deletions

File tree

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-view.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
workspace,
88
WorkspaceFolder,
99
} from "vscode";
10+
import { RequestError } from "@octokit/request-error";
1011
import {
1112
AbstractWebview,
1213
WebviewPanelConfig,
@@ -39,7 +40,7 @@ import { createDataExtensionYaml, loadDataExtensionYaml } from "./yaml";
3940
import { ExternalApiUsage } from "./external-api-usage";
4041
import { ModeledMethod } from "./modeled-method";
4142
import { ExtensionPackModelFile } from "./shared/extension-pack";
42-
import { autoModel } from "./auto-model-api";
43+
import { autoModel, ModelRequest, ModelResponse } from "./auto-model-api";
4344
import {
4445
createAutoModelRequest,
4546
parsePredictedClassifications,
@@ -421,7 +422,10 @@ export class DataExtensionsEditorView extends AbstractWebview<
421422
message: "Sending request",
422423
});
423424

424-
const response = await autoModel(this.app.credentials, request);
425+
const response = await this.callAutoModelApi(request);
426+
if (!response) {
427+
return;
428+
}
425429

426430
await this.showProgress({
427431
step: 2500,
@@ -479,4 +483,21 @@ export class DataExtensionsEditorView extends AbstractWebview<
479483
message: "",
480484
});
481485
}
486+
487+
private async callAutoModelApi(
488+
request: ModelRequest,
489+
): Promise<ModelResponse | null> {
490+
try {
491+
return await autoModel(this.app.credentials, request);
492+
} catch (e) {
493+
if (e instanceof RequestError && e.status === 429) {
494+
void showAndLogExceptionWithTelemetry(
495+
redactableError(e)`Rate limit hit, please try again soon.`,
496+
);
497+
return null;
498+
} else {
499+
throw e;
500+
}
501+
}
502+
}
482503
}

0 commit comments

Comments
 (0)