Handle 429 from auto-model service (#2474)

This commit is contained in:
Charis Kyriakou
2023-06-02 13:51:40 +01:00
committed by GitHub
parent 7250e82055
commit 134c4405f9

View File

@@ -6,6 +6,7 @@ import {
window,
workspace,
} from "vscode";
import { RequestError } from "@octokit/request-error";
import {
AbstractWebview,
WebviewPanelConfig,
@@ -38,7 +39,7 @@ import { createDataExtensionYaml, loadDataExtensionYaml } from "./yaml";
import { ExternalApiUsage } from "./external-api-usage";
import { ModeledMethod } from "./modeled-method";
import { ExtensionPackModelFile } from "./shared/extension-pack";
import { autoModel } from "./auto-model-api";
import { autoModel, ModelRequest, ModelResponse } from "./auto-model-api";
import {
createAutoModelRequest,
parsePredictedClassifications,
@@ -401,7 +402,10 @@ export class DataExtensionsEditorView extends AbstractWebview<
message: "Sending request",
});
const response = await autoModel(this.app.credentials, request);
const response = await this.callAutoModelApi(request);
if (!response) {
return;
}
await this.showProgress({
step: 2500,
@@ -459,4 +463,23 @@ export class DataExtensionsEditorView extends AbstractWebview<
message: "",
});
}
private async callAutoModelApi(
request: ModelRequest,
): Promise<ModelResponse | null> {
try {
return await autoModel(this.app.credentials, request);
} catch (e) {
await this.clearProgress();
if (e instanceof RequestError && e.status === 429) {
void showAndLogExceptionWithTelemetry(
redactableError(e)`Rate limit hit, please try again soon.`,
);
return null;
} else {
throw e;
}
}
}
}