Add phoenix telemetry (#1164)
* Add phoenix telemetry * Revert changes * Update trace logs
This commit is contained in:
parent
42bdcaf8d1
commit
e575b94ffa
|
@ -7,7 +7,7 @@ import shallow from "zustand/shallow";
|
||||||
import { AuthType } from "../AuthType";
|
import { AuthType } from "../AuthType";
|
||||||
import { BindingHandlersRegisterer } from "../Bindings/BindingHandlersRegisterer";
|
import { BindingHandlersRegisterer } from "../Bindings/BindingHandlersRegisterer";
|
||||||
import * as Constants from "../Common/Constants";
|
import * as Constants from "../Common/Constants";
|
||||||
import { ConnectionStatusType, HttpStatusCodes, Notebook } from "../Common/Constants";
|
import { Areas, ConnectionStatusType, HttpStatusCodes, Notebook } from "../Common/Constants";
|
||||||
import { readCollection } from "../Common/dataAccess/readCollection";
|
import { readCollection } from "../Common/dataAccess/readCollection";
|
||||||
import { readDatabases } from "../Common/dataAccess/readDatabases";
|
import { readDatabases } from "../Common/dataAccess/readDatabases";
|
||||||
import { getErrorMessage, getErrorStack, handleError } from "../Common/ErrorHandlingUtils";
|
import { getErrorMessage, getErrorStack, handleError } from "../Common/ErrorHandlingUtils";
|
||||||
|
@ -392,26 +392,43 @@ export default class Explorer {
|
||||||
};
|
};
|
||||||
useNotebook.getState().setConnectionInfo(connectionStatus);
|
useNotebook.getState().setConnectionInfo(connectionStatus);
|
||||||
try {
|
try {
|
||||||
|
TelemetryProcessor.traceStart(Action.PhoenixConnection, {
|
||||||
|
dataExplorerArea: Areas.Notebook,
|
||||||
|
});
|
||||||
useNotebook.getState().setIsAllocating(true);
|
useNotebook.getState().setIsAllocating(true);
|
||||||
const connectionInfo = await this.phoenixClient.allocateContainer(provisionData);
|
const connectionInfo = await this.phoenixClient.allocateContainer(provisionData);
|
||||||
|
if (connectionInfo.status !== HttpStatusCodes.OK) {
|
||||||
|
throw new Error(`Received status code: ${connectionInfo?.status}`);
|
||||||
|
}
|
||||||
|
if (!connectionInfo?.data?.notebookServerUrl) {
|
||||||
|
throw new Error(`NotebookServerUrl is invalid!`);
|
||||||
|
}
|
||||||
await this.setNotebookInfo(connectionInfo, connectionStatus);
|
await this.setNotebookInfo(connectionInfo, connectionStatus);
|
||||||
|
TelemetryProcessor.traceSuccess(Action.PhoenixConnection, {
|
||||||
|
dataExplorerArea: Areas.Notebook,
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
TelemetryProcessor.traceFailure(Action.PhoenixConnection, {
|
||||||
|
dataExplorerArea: Areas.Notebook,
|
||||||
|
error: getErrorMessage(error),
|
||||||
|
errorStack: getErrorStack(error),
|
||||||
|
});
|
||||||
connectionStatus.status = ConnectionStatusType.Failed;
|
connectionStatus.status = ConnectionStatusType.Failed;
|
||||||
useNotebook.getState().resetContainerConnection(connectionStatus);
|
useNotebook.getState().resetContainerConnection(connectionStatus);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
} finally {
|
||||||
|
useNotebook.getState().setIsAllocating(false);
|
||||||
this.refreshCommandBarButtons();
|
this.refreshCommandBarButtons();
|
||||||
this.refreshNotebookList();
|
this.refreshNotebookList();
|
||||||
|
|
||||||
this._isInitializingNotebooks = false;
|
this._isInitializingNotebooks = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async setNotebookInfo(
|
private async setNotebookInfo(
|
||||||
connectionInfo: IResponse<IPhoenixConnectionInfoResult>,
|
connectionInfo: IResponse<IPhoenixConnectionInfoResult>,
|
||||||
connectionStatus: DataModels.ContainerConnectionInfo
|
connectionStatus: DataModels.ContainerConnectionInfo
|
||||||
) {
|
) {
|
||||||
if (connectionInfo.status === HttpStatusCodes.OK && connectionInfo.data && connectionInfo.data.notebookServerUrl) {
|
|
||||||
const containerData = {
|
const containerData = {
|
||||||
forwardingId: connectionInfo.data.forwardingId,
|
forwardingId: connectionInfo.data.forwardingId,
|
||||||
dbAccountName: userContext.databaseAccount.name,
|
dbAccountName: userContext.databaseAccount.name,
|
||||||
|
@ -428,11 +445,6 @@ export default class Explorer {
|
||||||
this.notebookManager?.notebookClient
|
this.notebookManager?.notebookClient
|
||||||
.getMemoryUsage()
|
.getMemoryUsage()
|
||||||
.then((memoryUsageInfo) => useNotebook.getState().setMemoryUsageInfo(memoryUsageInfo));
|
.then((memoryUsageInfo) => useNotebook.getState().setMemoryUsageInfo(memoryUsageInfo));
|
||||||
} else {
|
|
||||||
connectionStatus.status = ConnectionStatusType.Failed;
|
|
||||||
useNotebook.getState().resetContainerConnection(connectionStatus);
|
|
||||||
}
|
|
||||||
useNotebook.getState().setIsAllocating(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public resetNotebookWorkspace(): void {
|
public resetNotebookWorkspace(): void {
|
||||||
|
@ -517,7 +529,9 @@ export default class Explorer {
|
||||||
logConsoleError(error);
|
logConsoleError(error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
TelemetryProcessor.traceStart(Action.PhoenixResetWorkspace, {
|
||||||
|
dataExplorerArea: Areas.Notebook,
|
||||||
|
});
|
||||||
if (NotebookUtil.isPhoenixEnabled()) {
|
if (NotebookUtil.isPhoenixEnabled()) {
|
||||||
useTabs.getState().closeAllNotebookTabs(true);
|
useTabs.getState().closeAllNotebookTabs(true);
|
||||||
connectionStatus = {
|
connectionStatus = {
|
||||||
|
@ -526,27 +540,24 @@ export default class Explorer {
|
||||||
useNotebook.getState().setConnectionInfo(connectionStatus);
|
useNotebook.getState().setConnectionInfo(connectionStatus);
|
||||||
}
|
}
|
||||||
const connectionInfo = await this.notebookManager?.notebookClient.resetWorkspace();
|
const connectionInfo = await this.notebookManager?.notebookClient.resetWorkspace();
|
||||||
if (connectionInfo && connectionInfo.status && connectionInfo.status === HttpStatusCodes.OK) {
|
if (connectionInfo?.status !== HttpStatusCodes.OK) {
|
||||||
if (NotebookUtil.isPhoenixEnabled() && connectionInfo.data && connectionInfo.data.notebookServerUrl) {
|
throw new Error(`Reset Workspace: Received status code- ${connectionInfo?.status}`);
|
||||||
|
}
|
||||||
|
if (!connectionInfo?.data?.notebookServerUrl) {
|
||||||
|
throw new Error(`Reset Workspace: NotebookServerUrl is invalid!`);
|
||||||
|
}
|
||||||
|
if (NotebookUtil.isPhoenixEnabled()) {
|
||||||
await this.setNotebookInfo(connectionInfo, connectionStatus);
|
await this.setNotebookInfo(connectionInfo, connectionStatus);
|
||||||
useNotebook.getState().setIsRefreshed(!useNotebook.getState().isRefreshed);
|
useNotebook.getState().setIsRefreshed(!useNotebook.getState().isRefreshed);
|
||||||
}
|
}
|
||||||
logConsoleInfo("Successfully reset notebook workspace");
|
logConsoleInfo("Successfully reset notebook workspace");
|
||||||
TelemetryProcessor.traceSuccess(Action.ResetNotebookWorkspace);
|
TelemetryProcessor.traceSuccess(Action.PhoenixResetWorkspace, {
|
||||||
} else {
|
dataExplorerArea: Areas.Notebook,
|
||||||
logConsoleError(`Failed to reset notebook workspace`);
|
});
|
||||||
TelemetryProcessor.traceFailure(Action.ResetNotebookWorkspace);
|
|
||||||
if (NotebookUtil.isPhoenixEnabled()) {
|
|
||||||
connectionStatus = {
|
|
||||||
status: ConnectionStatusType.Reconnect,
|
|
||||||
};
|
|
||||||
useNotebook.getState().resetContainerConnection(connectionStatus);
|
|
||||||
useNotebook.getState().setIsRefreshed(!useNotebook.getState().isRefreshed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logConsoleError(`Failed to reset notebook workspace: ${error}`);
|
logConsoleError(`Failed to reset notebook workspace: ${error}`);
|
||||||
TelemetryProcessor.traceFailure(Action.ResetNotebookWorkspace, {
|
TelemetryProcessor.traceFailure(Action.PhoenixResetWorkspace, {
|
||||||
|
dataExplorerArea: Areas.Notebook,
|
||||||
error: getErrorMessage(error),
|
error: getErrorMessage(error),
|
||||||
errorStack: getErrorStack(error),
|
errorStack: getErrorStack(error),
|
||||||
});
|
});
|
||||||
|
@ -554,7 +565,7 @@ export default class Explorer {
|
||||||
connectionStatus = {
|
connectionStatus = {
|
||||||
status: ConnectionStatusType.Failed,
|
status: ConnectionStatusType.Failed,
|
||||||
};
|
};
|
||||||
useNotebook.getState().setConnectionInfo(connectionStatus);
|
useNotebook.getState().resetContainerConnection(connectionStatus);
|
||||||
useNotebook.getState().setIsRefreshed(!useNotebook.getState().isRefreshed);
|
useNotebook.getState().setIsRefreshed(!useNotebook.getState().isRefreshed);
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
|
|
|
@ -50,7 +50,6 @@ export enum Action {
|
||||||
SubscriptionSwitch,
|
SubscriptionSwitch,
|
||||||
TenantSwitch,
|
TenantSwitch,
|
||||||
DefaultTenantSwitch,
|
DefaultTenantSwitch,
|
||||||
ResetNotebookWorkspace,
|
|
||||||
CreateNotebookWorkspace,
|
CreateNotebookWorkspace,
|
||||||
NotebookErrorNotification,
|
NotebookErrorNotification,
|
||||||
CreateSparkCluster,
|
CreateSparkCluster,
|
||||||
|
@ -82,6 +81,8 @@ export enum Action {
|
||||||
NotebooksInsertTextCellBelowFromMenu,
|
NotebooksInsertTextCellBelowFromMenu,
|
||||||
NotebooksMoveCellUpFromMenu,
|
NotebooksMoveCellUpFromMenu,
|
||||||
NotebooksMoveCellDownFromMenu,
|
NotebooksMoveCellDownFromMenu,
|
||||||
|
PhoenixConnection,
|
||||||
|
PhoenixResetWorkspace,
|
||||||
DeleteCellFromMenu,
|
DeleteCellFromMenu,
|
||||||
OpenTerminal,
|
OpenTerminal,
|
||||||
CreateMongoCollectionWithWildcardIndex,
|
CreateMongoCollectionWithWildcardIndex,
|
||||||
|
|
Loading…
Reference in New Issue