Skip to content

Commit 0b1aac1

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

1 file changed

Lines changed: 21 additions & 2 deletions

File tree

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

Lines changed: 21 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.callApi(request);
426+
if (!response) {
427+
return;
428+
}
425429

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

0 commit comments

Comments
 (0)