Skip to content

Commit fbfea80

Browse files
committed
enforcement of min secret refresh interval
1 parent dcc0540 commit fbfea80

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/keyvault/keyVaultSecretProvider.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
import { KeyVaultOptions } from "./keyVaultOptions.js";
4+
import { KeyVaultOptions, MIN_SECRET_REFRESH_INTERVAL_IN_MS } from "./keyVaultOptions.js";
55
import { RefreshTimer } from "../refresh/refreshTimer.js";
66
import { ArgumentError } from "../common/errors.js";
77
import { SecretClient, KeyVaultSecretIdentifier } from "@azure/keyvault-secrets";
@@ -10,6 +10,7 @@ import { KeyVaultReferenceErrorMessages } from "../common/errorMessages.js";
1010
export class AzureKeyVaultSecretProvider {
1111
#keyVaultOptions: KeyVaultOptions | undefined;
1212
#secretRefreshTimer: RefreshTimer | undefined;
13+
#minSecretRefreshTimer: RefreshTimer;
1314
#secretClients: Map<string, SecretClient>; // map key vault hostname to corresponding secret client
1415
#cachedSecretValues: Map<string, any> = new Map<string, any>(); // map secret identifier to secret value
1516

@@ -24,6 +25,7 @@ export class AzureKeyVaultSecretProvider {
2425
}
2526
this.#keyVaultOptions = keyVaultOptions;
2627
this.#secretRefreshTimer = refreshTimer;
28+
this.#minSecretRefreshTimer = new RefreshTimer(MIN_SECRET_REFRESH_INTERVAL_IN_MS);
2729
this.#secretClients = new Map();
2830
for (const client of this.#keyVaultOptions?.secretClients ?? []) {
2931
const clientUrl = new URL(client.vaultUrl);
@@ -47,7 +49,10 @@ export class AzureKeyVaultSecretProvider {
4749
}
4850

4951
clearCache(): void {
50-
this.#cachedSecretValues.clear();
52+
if (this.#minSecretRefreshTimer.canRefresh()) {
53+
this.#cachedSecretValues.clear();
54+
this.#minSecretRefreshTimer.reset();
55+
}
5156
}
5257

5358
async #getSecretValueFromKeyVault(secretIdentifier: KeyVaultSecretIdentifier): Promise<unknown> {

0 commit comments

Comments
 (0)