Skip to content

Commit 0464112

Browse files
committed
do not attempt blob deletion for infra outage
1 parent 434c8a3 commit 0464112

2 files changed

Lines changed: 29 additions & 20 deletions

File tree

apps/sim/lib/execution/payloads/store.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,25 @@ describe('large execution payload store', () => {
155155
expect(mockDeleteFileMetadata).not.toHaveBeenCalled()
156156
})
157157

158+
it('does not delete uploaded storage when owner metadata registration throws', async () => {
159+
const value = { payload: 'x'.repeat(2048) }
160+
const json = JSON.stringify(value)
161+
mockRegisterLargeValueOwner.mockRejectedValueOnce(new Error('metadata db down'))
162+
163+
await expect(
164+
storeLargeValue(value, json, Buffer.byteLength(json, 'utf8'), {
165+
workspaceId: 'workspace-1',
166+
workflowId: 'workflow-1',
167+
executionId: 'execution-1',
168+
userId: 'user-1',
169+
requireDurable: true,
170+
})
171+
).rejects.toThrow('metadata db down')
172+
173+
expect(mockDeleteFiles).not.toHaveBeenCalled()
174+
expect(mockDeleteFileMetadata).not.toHaveBeenCalled()
175+
})
176+
158177
it('falls back to memory-only refs for non-durable writes when orphan cleanup fails', async () => {
159178
const value = { payload: 'x'.repeat(2048) }
160179
const json = JSON.stringify(value)

apps/sim/lib/execution/payloads/store.ts

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -114,27 +114,17 @@ async function registerPersistedValueOwner(
114114
return false
115115
}
116116

117-
try {
118-
const { registerLargeValueOwner } = await import(
119-
'@/lib/execution/payloads/large-value-metadata'
120-
)
121-
return await registerLargeValueOwner(
122-
{
123-
key,
124-
workspaceId,
125-
workflowId,
126-
executionId,
127-
size,
128-
},
129-
referencedKeys
130-
)
131-
} catch (error) {
132-
logger.warn('Failed to register large execution value metadata', {
117+
const { registerLargeValueOwner } = await import('@/lib/execution/payloads/large-value-metadata')
118+
return await registerLargeValueOwner(
119+
{
133120
key,
134-
error: toError(error).message,
135-
})
136-
return false
137-
}
121+
workspaceId,
122+
workflowId,
123+
executionId,
124+
size,
125+
},
126+
referencedKeys
127+
)
138128
}
139129

140130
async function deleteUntrackedPersistedValue(key: string): Promise<boolean> {

0 commit comments

Comments
 (0)