mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-04-08 02:42:08 +01:00
Add retries when checking if account is allowed to access phoenix (#1342)
This commit is contained in:
parent
afe59c1589
commit
00eb07da11
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user