Merge pull request #3095 from Infisical/secret-sync-handle-larger-messages

Improvement: Increase Max Error Message Size for Secret Syncs
This commit is contained in:
Scott Wilson
2025-02-07 10:04:30 -08:00
committed by GitHub
3 changed files with 48 additions and 7 deletions
@@ -0,0 +1,31 @@
import { Knex } from "knex";
import { TableName } from "@app/db/schemas";
export async function up(knex: Knex): Promise<void> {
if (await knex.schema.hasTable(TableName.SecretSync)) {
const hasLastSyncMessage = await knex.schema.hasColumn(TableName.SecretSync, "lastSyncMessage");
const hasLastImportMessage = await knex.schema.hasColumn(TableName.SecretSync, "lastImportMessage");
const hasLastRemoveMessage = await knex.schema.hasColumn(TableName.SecretSync, "lastRemoveMessage");
await knex.schema.alterTable(TableName.SecretSync, (t) => {
if (hasLastSyncMessage) t.string("lastSyncMessage", 1024).alter();
if (hasLastImportMessage) t.string("lastImportMessage", 1024).alter();
if (hasLastRemoveMessage) t.string("lastRemoveMessage", 1024).alter();
});
}
}
export async function down(knex: Knex): Promise<void> {
if (await knex.schema.hasTable(TableName.SecretSync)) {
const hasLastSyncMessage = await knex.schema.hasColumn(TableName.SecretSync, "lastSyncMessage");
const hasLastImportMessage = await knex.schema.hasColumn(TableName.SecretSync, "lastImportMessage");
const hasLastRemoveMessage = await knex.schema.hasColumn(TableName.SecretSync, "lastRemoveMessage");
await knex.schema.alterTable(TableName.SecretSync, (t) => {
if (hasLastSyncMessage) t.string("lastSyncMessage").alter();
if (hasLastImportMessage) t.string("lastImportMessage").alter();
if (hasLastRemoveMessage) t.string("lastRemoveMessage").alter();
});
}
}
@@ -134,17 +134,25 @@ export const SecretSyncFns = {
} }
}; };
const MAX_MESSAGE_LENGTH = 1024;
export const parseSyncErrorMessage = (err: unknown): string => { export const parseSyncErrorMessage = (err: unknown): string => {
let errorMessage: string;
if (err instanceof SecretSyncError) { if (err instanceof SecretSyncError) {
return JSON.stringify({ errorMessage = JSON.stringify({
secretKey: err.secretKey, secretKey: err.secretKey,
error: err.message || parseSyncErrorMessage(err.error) error: err.message || parseSyncErrorMessage(err.error)
}); });
} else if (err instanceof AxiosError) {
errorMessage = err?.response?.data
? JSON.stringify(err?.response?.data)
: err?.message ?? "An unknown error occurred.";
} else {
errorMessage = (err as Error)?.message || "An unknown error occurred.";
} }
if (err instanceof AxiosError) { return errorMessage.length <= MAX_MESSAGE_LENGTH
return err?.response?.data ? JSON.stringify(err?.response?.data) : err?.message ?? "An unknown error occurred."; ? errorMessage
} : `${errorMessage.substring(0, MAX_MESSAGE_LENGTH - 3)}...`;
return (err as Error)?.message || "An unknown error occurred.";
}; };
@@ -208,7 +208,9 @@ export const SecretSyncRow = ({
<FontAwesomeIcon icon={faXmark} className="ml-1 pr-1.5 pt-0.5 text-sm" /> <FontAwesomeIcon icon={faXmark} className="ml-1 pr-1.5 pt-0.5 text-sm" />
<div className="text-xs">Failure Reason</div> <div className="text-xs">Failure Reason</div>
</div> </div>
<div className="rounded bg-mineshaft-600 p-2 text-xs">{failureMessage}</div> <div className="break-words rounded bg-mineshaft-600 p-2 text-xs">
{failureMessage}
</div>
</div> </div>
)} )}
</div> </div>