mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 13:27:46 +00:00
Fix edge case for many secrets on replicate folders update function
This commit is contained in:
+25
-11
@@ -371,19 +371,33 @@ export const ActionBar = ({
|
|||||||
if (secretFolderKeys.length === 0) return;
|
if (secretFolderKeys.length === 0) return;
|
||||||
|
|
||||||
// Check which secrets already exist in this path
|
// Check which secrets already exist in this path
|
||||||
const { secrets: existingSecrets } = await fetchDashboardProjectSecretsByKeys({
|
const batchSize = 50;
|
||||||
secretPath: normalizedPath,
|
const secretBatches = Array.from(
|
||||||
environment,
|
{ length: Math.ceil(secretFolderKeys.length / batchSize) },
|
||||||
projectId: workspaceId,
|
(_, i) => secretFolderKeys.slice(i * batchSize, (i + 1) * batchSize)
|
||||||
keys: secretFolderKeys
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create a quick lookup for existing secrets
|
|
||||||
const existingSecretLookup = existingSecrets.reduce<Record<string, boolean>>(
|
|
||||||
(lookup, secret) => ({ ...lookup, [secret.secretKey]: true }),
|
|
||||||
{}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const existingSecretLookup: Record<string, boolean> = {};
|
||||||
|
|
||||||
|
const processBatches = async () => {
|
||||||
|
await secretBatches.reduce(async (previous, batch) => {
|
||||||
|
await previous;
|
||||||
|
|
||||||
|
const { secrets: batchSecrets } = await fetchDashboardProjectSecretsByKeys({
|
||||||
|
secretPath: normalizedPath,
|
||||||
|
environment,
|
||||||
|
projectId: workspaceId,
|
||||||
|
keys: batch
|
||||||
|
});
|
||||||
|
|
||||||
|
batchSecrets.forEach((secret) => {
|
||||||
|
existingSecretLookup[secret.secretKey] = true;
|
||||||
|
});
|
||||||
|
}, Promise.resolve());
|
||||||
|
};
|
||||||
|
|
||||||
|
await processBatches();
|
||||||
|
|
||||||
// Categorize each secret as update or create
|
// Categorize each secret as update or create
|
||||||
secretFolderKeys.forEach((secretKey) => {
|
secretFolderKeys.forEach((secretKey) => {
|
||||||
const secretData = secrets[secretKey];
|
const secretData = secrets[secretKey];
|
||||||
|
|||||||
Reference in New Issue
Block a user