Skip to content

Commit fb959da

Browse files
committed
Finished up changes to perf tracking for jql fetching.
1 parent 4e9caac commit fb959da

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

src/views/jira/treeViews/jiraAssignedWorkItemsViewProvider.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { executeJqlQuery, JiraIssueNode, loginToJiraMessageNode, TreeViewIssue }
2727

2828
const AssignedWorkItemsViewProviderId = AssignedJiraItemsViewId;
2929
const RefreshCumulativeJqlFetchEventName = 'ui.jira.jqlFetch.update.lcp';
30+
const InitialCumulativeJqlFetchEventName = 'ui.jira.jqlFetch.render.lcp';
3031

3132
export class AssignedWorkItemsViewProvider extends Disposable implements TreeDataProvider<TreeItem> {
3233
private static readonly _treeItemConfigureJiraMessage = loginToJiraMessageNode;
@@ -60,7 +61,15 @@ export class AssignedWorkItemsViewProvider extends Disposable implements TreeDat
6061

6162
const jqlEntries = Container.jqlManager.getAllDefaultJQLEntries();
6263
if (jqlEntries.length) {
63-
this._initPromises = new PromiseRacer(jqlEntries.map((entry) => executeJqlQuery(entry, true)));
64+
timer.mark(InitialCumulativeJqlFetchEventName);
65+
const promises = jqlEntries.map(executeJqlQuery);
66+
this._initPromises = new PromiseRacer(promises);
67+
Promise.all(promises).then(() => {
68+
const jqlInitialDuration = timer.measureAndClear(InitialCumulativeJqlFetchEventName);
69+
performanceEvent(InitialCumulativeJqlFetchEventName, jqlInitialDuration).then((event) => {
70+
Container.analyticsClient.sendTrackEvent(event);
71+
});
72+
});
6473
}
6574

6675
Container.context.subscriptions.push(configuration.onDidChange(this.onConfigurationChanged, this));
@@ -153,13 +162,12 @@ export class AssignedWorkItemsViewProvider extends Disposable implements TreeDat
153162
}
154163
// this branch triggers when refresing an already rendered panel
155164
else {
165+
timer.mark(RefreshCumulativeJqlFetchEventName);
156166
const jqlEntries = Container.jqlManager.getAllDefaultJQLEntries();
157167
if (!jqlEntries.length) {
158168
return [AssignedWorkItemsViewProvider._treeItemConfigureJiraMessage];
159169
}
160-
timer.mark(RefreshCumulativeJqlFetchEventName);
161170
const allIssues = (await Promise.all(jqlEntries.map((entry) => executeJqlQuery(entry)))).flat();
162-
const jqlRefreshDuration = timer.measureAndClear(RefreshCumulativeJqlFetchEventName);
163171

164172
if (this._skipNotificationForNextFetch) {
165173
this._skipNotificationForNextFetch = false;
@@ -169,6 +177,7 @@ export class AssignedWorkItemsViewProvider extends Disposable implements TreeDat
169177
}
170178

171179
SearchJiraHelper.setIssues(allIssues, AssignedWorkItemsViewProviderId);
180+
const jqlRefreshDuration = timer.measureAndClear(RefreshCumulativeJqlFetchEventName);
172181
performanceEvent(RefreshCumulativeJqlFetchEventName, jqlRefreshDuration).then((event) => {
173182
Container.analyticsClient.sendTrackEvent(event);
174183
});

src/views/jira/treeViews/utils.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import { isMinimalIssue, MinimalIssue } from '@atlassianlabs/jira-pi-common-models';
2-
import { performanceEvent } from 'src/analytics';
3-
import timer from 'src/util/perf';
42
import { Command, TreeItem, TreeItemCollapsibleState, Uri } from 'vscode';
53

64
import { DetailedSiteInfo, ProductJira } from '../../../atlclients/authInfo';
@@ -11,8 +9,6 @@ import { issuesForJQL } from '../../../jira/issuesForJql';
119
import { Logger } from '../../../logger';
1210
import { AbstractBaseNode } from '../../../views/nodes/abstractBaseNode';
1311

14-
const InitialCumulativeJqlFetchEventName = 'ui.jira.jqlFetch.render.lcp';
15-
1612
export function createLabelItem(label: string, command?: Command): TreeItem {
1713
const item = new TreeItem(label);
1814
item.resourceUri = Uri.parse(label);
@@ -26,28 +22,17 @@ export interface TreeViewIssue extends MinimalIssue<DetailedSiteInfo> {
2622
}
2723

2824
/** This function returns a Promise that never rejects. */
29-
export async function executeJqlQuery(jqlEntry: JQLEntry, isInitialLoad: boolean = false): Promise<TreeViewIssue[]> {
25+
export async function executeJqlQuery(jqlEntry: JQLEntry): Promise<TreeViewIssue[]> {
3026
try {
3127
if (jqlEntry) {
3228
const jqlSite = Container.siteManager.getSiteForId(ProductJira, jqlEntry.siteId);
3329
if (jqlSite) {
34-
if (isInitialLoad) {
35-
timer.mark(`${InitialCumulativeJqlFetchEventName}_${jqlSite.id}`);
36-
}
3730
const issues = (await issuesForJQL(jqlEntry.query, jqlSite)) as TreeViewIssue[];
3831

3932
issues.forEach((i) => {
4033
i.source = jqlEntry;
4134
i.children = [];
4235
});
43-
if (isInitialLoad) {
44-
const jqlInitialDuration = timer.measureAndClear(
45-
`${InitialCumulativeJqlFetchEventName}_${jqlSite.id}`,
46-
);
47-
performanceEvent(InitialCumulativeJqlFetchEventName, jqlInitialDuration).then((event) => {
48-
Container.analyticsClient.sendTrackEvent(event);
49-
});
50-
}
5136
return issues;
5237
}
5338
}

0 commit comments

Comments
 (0)