Add retries when checking if account is allowed to access phoenix (#1342)

This commit is contained in:
victor-meng 2022-10-19 17:12:24 -07:00 committed by GitHub
parent afe59c1589
commit 00eb07da11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 7 deletions

View File

@ -96,12 +96,18 @@ export const QuickstartGuide: React.FC = (): JSX.Element => {
<Stack style={{ flexGrow: 1, padding: "0 20px", overflow: "auto" }}> <Stack style={{ flexGrow: 1, padding: "0 20px", overflow: "auto" }}>
<Text variant="xxLarge">Quick start guide</Text> <Text variant="xxLarge">Quick start guide</Text>
{currentStep < 5 && ( {currentStep < 5 && (
<Pivot style={{ marginTop: 10, width: "100%" }} selectedKey={GuideSteps[currentStep]}> <Pivot
style={{ marginTop: 10, width: "100%" }}
selectedKey={GuideSteps[currentStep]}
onLinkClick={(item?: PivotItem) => setCurrentStep(Object.values(GuideSteps).indexOf(item.props.itemKey))}
>
<PivotItem <PivotItem
headerText="Login" headerText="Login"
onRenderItemLink={(props, defaultRenderer) => customPivotHeaderRenderer(props, defaultRenderer, 0)} onRenderItemLink={(props, defaultRenderer) => customPivotHeaderRenderer(props, defaultRenderer, 0)}
itemKey={GuideSteps[0]} itemKey={GuideSteps[0]}
onClick={() => setCurrentStep(0)} onClick={() => {
setCurrentStep(0);
}}
> >
<Stack style={{ marginTop: 20 }}> <Stack style={{ marginTop: 20 }}>
<Text> <Text>

View File

@ -1,4 +1,4 @@
import { Spinner, SpinnerSize, Stack } from "@fluentui/react"; import { Spinner, SpinnerSize, Stack, Text } from "@fluentui/react";
import { configContext } from "ConfigContext"; import { configContext } from "ConfigContext";
import { NotebookWorkspaceConnectionInfo, PostgresFirewallRule } from "Contracts/DataModels"; import { NotebookWorkspaceConnectionInfo, PostgresFirewallRule } from "Contracts/DataModels";
import { NotebookTerminalComponent } from "Explorer/Controls/Notebook/NotebookTerminalComponent"; import { NotebookTerminalComponent } from "Explorer/Controls/Notebook/NotebookTerminalComponent";
@ -69,7 +69,15 @@ export const QuickstartTab: React.FC<QuickstartTabProps> = ({ explorer }: Quicks
/> />
)} )}
{isAllPublicIPAddressEnabled && !notebookServerInfo?.notebookServerEndpoint && ( {isAllPublicIPAddressEnabled && !notebookServerInfo?.notebookServerEndpoint && (
<Spinner styles={{ root: { marginTop: 10 } }} size={SpinnerSize.large}></Spinner> <Stack style={{ margin: "auto 0" }}>
<Text block style={{ margin: "auto" }}>
Connecting to the PostgreSQL shell.
</Text>
<Text block style={{ margin: "auto" }}>
If the cluster was just created, this could take up to a minute.
</Text>
<Spinner styles={{ root: { marginTop: 16 } }} size={SpinnerSize.large}></Spinner>
</Stack>
)} )}
</Stack> </Stack>
</Stack> </Stack>

View File

@ -45,7 +45,11 @@ export class PhoenixClient {
} }
public async allocateContainer(provisionData: IProvisionData): Promise<IResponse<IPhoenixServiceInfo>> { public async allocateContainer(provisionData: IProvisionData): Promise<IResponse<IPhoenixServiceInfo>> {
return this.executeContainerAssignmentOperation(provisionData, "allocate"); return promiseRetry(() => this.executeContainerAssignmentOperation(provisionData, "allocate"), {
retries: 4,
maxTimeout: 20000,
minTimeout: 20000,
});
} }
public async resetContainer(provisionData: IProvisionData): Promise<IResponse<IPhoenixServiceInfo>> { public async resetContainer(provisionData: IProvisionData): Promise<IResponse<IPhoenixServiceInfo>> {
@ -80,9 +84,12 @@ export class PhoenixClient {
} }
const phoenixError = responseJson as IPhoenixError; const phoenixError = responseJson as IPhoenixError;
if (response.status === HttpStatusCodes.Forbidden) { if (response.status === HttpStatusCodes.Forbidden) {
throw new Error(this.ConvertToForbiddenErrorString(phoenixError)); if (phoenixError.message === "Sequence contains no elements") {
throw Error("Phoenix container allocation failed, please try again later.");
}
throw new AbortError(this.ConvertToForbiddenErrorString(phoenixError));
} }
throw new Error(phoenixError.message); throw new AbortError(phoenixError.message);
} catch (error) { } catch (error) {
error.status = response?.status; error.status = response?.status;
throw error; throw error;

View File

@ -81,6 +81,9 @@ export class JupyterLabAppFactory {
// Attach the widget to the dom. // Attach the widget to the dom.
Widget.attach(panel, document.body); Widget.attach(panel, document.body);
// Switch focus to the terminal
term.activate();
// Handle resize events. // Handle resize events.
window.addEventListener("resize", () => { window.addEventListener("resize", () => {
panel.update(); panel.update();