mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-10 03:28:43 +00:00
Fix edge case for many secrets on replicate folders update function
This commit is contained in:
+21
-7
@@ -371,18 +371,32 @@ 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;
|
||||||
|
const secretBatches = Array.from(
|
||||||
|
{ length: Math.ceil(secretFolderKeys.length / batchSize) },
|
||||||
|
(_, i) => secretFolderKeys.slice(i * batchSize, (i + 1) * batchSize)
|
||||||
|
);
|
||||||
|
|
||||||
|
const existingSecretLookup: Record<string, boolean> = {};
|
||||||
|
|
||||||
|
const processBatches = async () => {
|
||||||
|
await secretBatches.reduce(async (previous, batch) => {
|
||||||
|
await previous;
|
||||||
|
|
||||||
|
const { secrets: batchSecrets } = await fetchDashboardProjectSecretsByKeys({
|
||||||
secretPath: normalizedPath,
|
secretPath: normalizedPath,
|
||||||
environment,
|
environment,
|
||||||
projectId: workspaceId,
|
projectId: workspaceId,
|
||||||
keys: secretFolderKeys
|
keys: batch
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create a quick lookup for existing secrets
|
batchSecrets.forEach((secret) => {
|
||||||
const existingSecretLookup = existingSecrets.reduce<Record<string, boolean>>(
|
existingSecretLookup[secret.secretKey] = true;
|
||||||
(lookup, secret) => ({ ...lookup, [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) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user