mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-08-04 14:57:42 +00:00
fix: Preserve OpenAI files on quota rejection
This commit is contained in:
parent
adc92b58d5
commit
d9ad8db714
2 changed files with 37 additions and 1 deletions
|
|
@ -1219,7 +1219,7 @@ const processOpenAIFile = async ({
|
|||
};
|
||||
|
||||
if (saveFile) {
|
||||
await createFileWithStorageLimit(request, file, true, { openai });
|
||||
await createFileWithStorageLimit(request, file, true, { cleanup: false });
|
||||
} else if (updateUsage) {
|
||||
try {
|
||||
await db.updateFileUsage({ file_id });
|
||||
|
|
|
|||
|
|
@ -1392,6 +1392,42 @@ describe('generated image quota paths', () => {
|
|||
);
|
||||
});
|
||||
|
||||
it('retrieveAndProcessFile does not delete existing OpenAI files when metadata quota rejects', async () => {
|
||||
const error = Object.assign(new Error('storage limit exceeded.'), {
|
||||
code: 'FILE_STORAGE_LIMIT_EXCEEDED',
|
||||
status: 413,
|
||||
});
|
||||
const req = {
|
||||
user: { id: 'user-123', tenantId: 'tenant-a' },
|
||||
body: { endpoint: EModelEndpoint.assistants, model: 'gpt-4o' },
|
||||
config: { fileConfig: { storageLimit: 1 } },
|
||||
};
|
||||
const openai = {
|
||||
baseURL: 'https://api.openai.test',
|
||||
files: {
|
||||
retrieve: jest.fn().mockResolvedValue({
|
||||
bytes: 512,
|
||||
filename: 'remote.txt',
|
||||
purpose: 'assistants_output',
|
||||
}),
|
||||
},
|
||||
};
|
||||
const deleteFile = jest.fn();
|
||||
getStrategyFunctions.mockReturnValue({ deleteFile });
|
||||
assertFileStorageLimit.mockRejectedValueOnce(error);
|
||||
|
||||
await expect(
|
||||
retrieveAndProcessFile({
|
||||
openai,
|
||||
client: { req },
|
||||
file_id: 'openai-file-id',
|
||||
}),
|
||||
).rejects.toThrow('storage limit exceeded');
|
||||
|
||||
expect(deleteFile).not.toHaveBeenCalled();
|
||||
expect(db.createFile).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('retrieveAndProcessFile rejects over-limit OpenAI image outputs before metadata persistence', async () => {
|
||||
const error = Object.assign(new Error('storage limit exceeded.'), {
|
||||
code: 'FILE_STORAGE_LIMIT_EXCEEDED',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue