Skip to content

Commit aeed5c7

Browse files
williamsyang-workbhufmann
authored andcommittedFeb 29, 2024
Refactor: Get Trace/Experiment Managers Every Use
There were issues with stored managers needing to be updated when the TspClient Url is updated. It's much simpler to fetch managers every use to ensure that they are updated. Signed-off-by: Will Yang <william.yang@ericsson.com>
1 parent 8311efd commit aeed5c7

File tree

3 files changed

+18
-27
lines changed

3 files changed

+18
-27
lines changed
 

‎vscode-trace-extension/src/extension.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import {
1212
resetZoomHandler,
1313
undoRedoHandler,
1414
zoomHandler,
15-
keyboardShortcutsHandler,
16-
reInitializeTraceManager
15+
keyboardShortcutsHandler
1716
} from './trace-explorer/trace-tree';
1817
import { TraceServerConnectionStatusService } from './utils/trace-server-status';
1918
import { getTspClientUrl, updateTspClientUrl, isUp } from './utils/backend-tsp-client-provider';
@@ -97,7 +96,6 @@ export function activate(context: vscode.ExtensionContext): ExternalAPI {
9796
myAnalysisProvider.updateTraceServerUrl(newTspClientURL);
9897
propertiesProvider.updateTraceServerUrl(newTspClientURL);
9998
timeRangeDataProvider.updateTraceServerUrl(newTspClientURL);
100-
reInitializeTraceManager();
10199

102100
// Signal the change to all trace panels
103101
TraceViewerPanel.updateTraceServerUrl(newTspClientURL);

‎vscode-trace-extension/src/trace-explorer/trace-tree.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,14 @@ import * as vscode from 'vscode';
22
import * as fs from 'fs';
33
import * as path from 'path';
44
import { Trace as TspTrace } from 'tsp-typescript-client/lib/models/trace';
5-
import { TraceManager } from 'traceviewer-base/lib/trace-manager';
6-
import { ExperimentManager } from 'traceviewer-base/lib/experiment-manager';
75
import { AnalysisProvider } from './analysis-tree';
86
import { TraceViewerPanel } from '../trace-viewer-panel/trace-viewer-webview-panel';
9-
import { getTspClient } from '../utils/backend-tsp-client-provider';
7+
import { getExperimentManager, getTraceManager } from '../utils/backend-tsp-client-provider';
108
import { traceLogger } from '../extension';
119
import { KeyboardShortcutsPanel } from '../trace-viewer-panel/keyboard-shortcuts-panel';
1210

1311
const rootPath = path.resolve(__dirname, '../../..');
1412

15-
let traceManager = new TraceManager(getTspClient());
16-
let experimentManager = new ExperimentManager(getTspClient(), traceManager);
17-
18-
export const reInitializeTraceManager = (): void => {
19-
traceManager = new TraceManager(getTspClient());
20-
experimentManager = new ExperimentManager(getTspClient(), traceManager);
21-
};
22-
2313
// eslint-disable-next-line no-shadow
2414
export enum ProgressMessages {
2515
COMPLETE = 'Complete',
@@ -96,6 +86,7 @@ export const traceHandler =
9686
(analysisTree: AnalysisProvider) =>
9787
(context: vscode.ExtensionContext, trace: Trace): void => {
9888
const panel = TraceViewerPanel.createOrShow(context.extensionUri, trace.name, undefined);
89+
const { traceManager, experimentManager } = getManagers();
9990
(async () => {
10091
const traces = new Array<TspTrace>();
10192
const t = await traceManager.openTrace(trace.uri, trace.name);
@@ -152,6 +143,7 @@ export const fileHandler =
152143
(analysisTree: AnalysisProvider) =>
153144
async (context: vscode.ExtensionContext, traceUri: vscode.Uri): Promise<void> => {
154145
const resolvedTraceURI: vscode.Uri = traceUri;
146+
const { traceManager, experimentManager } = getManagers();
155147
vscode.window.withProgress(
156148
{
157149
location: vscode.ProgressLocation.Notification,
@@ -264,6 +256,7 @@ const rollbackTraces = async (
264256
increment: number | undefined;
265257
}>
266258
) => {
259+
const { traceManager } = getManagers();
267260
progress.report({ message: ProgressMessages.ROLLING_BACK_TRACES, increment: progressIncrement });
268261
for (let i = 0; i < traces.length; i++) {
269262
await traceManager.deleteTrace(traces[i].UUID);
@@ -314,3 +307,10 @@ function getProgressBarTitle(traceUri: vscode.Uri | undefined): string {
314307
}
315308
return path.basename(traceUri.fsPath);
316309
}
310+
311+
function getManagers() {
312+
return {
313+
traceManager: getTraceManager(),
314+
experimentManager: getExperimentManager()
315+
};
316+
}

‎vscode-trace-webviews/src/trace-explorer/opened-traces/vscode-trace-explorer-opened-traces-widget.tsx

+6-13
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { signalManager, Signals } from 'traceviewer-base/lib/signals/signal-mana
1010
import '../../style/trace-viewer.css';
1111
import 'traceviewer-react-components/style/trace-explorer.css';
1212
import '../../style/react-contextify.css';
13-
import { ExperimentManager } from 'traceviewer-base/lib/experiment-manager';
1413
import { convertSignalExperiment } from 'vscode-trace-common/lib/signals/vscode-signal-converter';
1514
import JSONBigConfig from 'json-bigint';
1615
import { OpenedTracesUpdatedSignalPayload } from 'traceviewer-base/lib/signals/opened-traces-updated-signal-payload';
@@ -30,7 +29,7 @@ const MENU_ID = 'traceExplorer.openedTraces.menuId';
3029

3130
class TraceExplorerOpenedTraces extends React.Component<{}, OpenedTracesAppState> {
3231
private _signalHandler: VsCodeMessageManager;
33-
private _experimentManager: ExperimentManager;
32+
3433
private _urlProvider: TraceServerUrlProvider;
3534

3635
static ID = 'trace-explorer-opened-traces-widget';
@@ -44,7 +43,8 @@ class TraceExplorerOpenedTraces extends React.Component<{}, OpenedTracesAppState
4443
private loading = false;
4544

4645
private doHandleRemoveTraceSignal(traceUUID: string) {
47-
this._experimentManager
46+
this.state.tspClientProvider
47+
?.getExperimentManager()
4848
.getExperiment(traceUUID)
4949
.then(experimentOpen => {
5050
if (experimentOpen) {
@@ -73,13 +73,6 @@ class TraceExplorerOpenedTraces extends React.Component<{}, OpenedTracesAppState
7373
this._signalHandler,
7474
this._urlProvider
7575
);
76-
this._experimentManager = tspClientProvider.getExperimentManager();
77-
78-
tspClientProvider.addTspClientChangeListener(() => {
79-
if (this.state.tspClientProvider) {
80-
this._experimentManager = this.state.tspClientProvider.getExperimentManager();
81-
}
82-
});
8376

8477
this.setState({ tspClientProvider: tspClientProvider });
8578
break;
@@ -223,9 +216,9 @@ class TraceExplorerOpenedTraces extends React.Component<{}, OpenedTracesAppState
223216
return;
224217
case 'remove-id':
225218
this._signalHandler.deleteTrace(args.props.experiment as Experiment);
226-
if (this._experimentManager) {
227-
this._experimentManager.deleteExperiment((args.props.experiment as Experiment).UUID);
228-
}
219+
this.state.tspClientProvider
220+
?.getExperimentManager()
221+
.deleteExperiment((args.props.experiment as Experiment).UUID);
229222

230223
return;
231224
default:

0 commit comments

Comments
 (0)
Please sign in to comment.