Skip to content

Commit f738715

Browse files
authored
telemetry(auth): debounce aws_loadCredentials more aggressively and remove debugging. (#6548)
## Problem Alternative solution to #6541 ## Solution - debounce very aggressively (once per day). - remove debugging `function_call`. ## Notes debounce ignores args, so regardless of the telemetry metadata, it will only be emitted once per day. That is, regardless of the value of `credentialsSourceId`, it is emitted once per day. --- - Treat all work as PUBLIC. Private `feature/x` branches will not be squash-merged at release time. - Your code changes must meet the guidelines in [CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines). - License: I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent 08bedbc commit f738715

File tree

2 files changed

+5
-14
lines changed

2 files changed

+5
-14
lines changed

packages/core/src/auth/providers/credentialsProviderManager.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
import { oneDay } from '../../shared/datetime'
67
import { getLogger } from '../../shared/logger/logger'
78
import { AwsLoadCredentials, telemetry } from '../../shared/telemetry/telemetry'
89
import { withTelemetryContext } from '../../shared/telemetry/util'
9-
import { cancellableDebounce } from '../../shared/utilities/functionUtils'
10+
import { debounce } from '../../shared/utilities/functionUtils'
1011
import {
1112
asString,
1213
CredentialsProvider,
@@ -26,13 +27,13 @@ export class CredentialsProviderManager {
2627
private readonly providerFactories: CredentialsProviderFactory[] = []
2728
private readonly providers: CredentialsProvider[] = []
2829

29-
@withTelemetryContext({ name: 'getAllCredentialsProvider', class: credentialsProviderManagerClassName, emit: true })
30+
@withTelemetryContext({ name: 'getAllCredentialsProvider', class: credentialsProviderManagerClassName })
3031
public async getAllCredentialsProviders(): Promise<CredentialsProvider[]> {
3132
let providers: CredentialsProvider[] = []
3233

3334
for (const provider of this.providers) {
3435
if (await provider.isAvailable()) {
35-
telemetry.aws_loadCredentials.emit({
36+
void this.emitWithDebounce({
3637
credentialSourceId: credentialsProviderToTelemetryType(
3738
provider.getCredentialsId().credentialSource
3839
),
@@ -61,10 +62,7 @@ export class CredentialsProviderManager {
6162

6263
return providers
6364
}
64-
private emitWithDebounce = cancellableDebounce(
65-
(m: AwsLoadCredentials) => telemetry.aws_loadCredentials.emit(m),
66-
100
67-
).promise
65+
private emitWithDebounce = debounce((m: AwsLoadCredentials) => telemetry.aws_loadCredentials.emit(m), oneDay)
6866
/**
6967
* Returns a map of `CredentialsProviderId` string-forms to object-forms,
7068
* from all credential sources. Only available providers are returned.

packages/core/src/test/techdebt.test.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,4 @@ describe('tech debt', function () {
3939
// This is relevant for the use of `fs.cpSync` in the copyFiles scripts.
4040
assert.ok(semver.lt(minNodejs, '18.0.0'), 'with node18+, we can remove the dependency on @types/node@18')
4141
})
42-
43-
it('remove debugging telemetry', async function () {
44-
fixByDate(
45-
'2025-02-11',
46-
'Remove debugging telemetry in `packages/core/src/auth/providers/credentialsProviderManager.ts`. Should only need to remove the `emit: true` in the decorator.'
47-
)
48-
})
4942
})

0 commit comments

Comments
 (0)