Restart failed saves through a guarded server retry

This commit is contained in:
Jonathan Sykes
2026-10-03 19:16:08 +08:00
parent 5485a3c2f4
commit f341b0c76e
7 changed files with 162 additions and 4 deletions

View File

@@ -192,6 +192,23 @@ describe('media cache jobs', () => {
expect(calls.length).toBe(1);
});
test('force retry bypasses failed backoff, deduplicates and preserves ready copies', async () => {
await clearDb();
const { cache, calls, state } = makeCache({ fixture: 'truncated.mp4' });
await cache.init();
await expect(cache.ensureCached('retryAAAAA1', { priority: HIGH })).rejects.toThrow();
await expect(cache.ensureCached('retryAAAAA1')).rejects.toMatchObject({ code: 'BACKOFF' });
state.fixture = 'good.mp4';
const [first, joined] = await Promise.all([
cache.ensureCached('retryAAAAA1', { priority: HIGH, force: true }),
cache.ensureCached('retryAAAAA1', { priority: HIGH, force: true }),
]);
expect(first.gen).toBe(joined.gen);
expect(calls).toHaveLength(2);
expect((await cache.ensureCached('retryAAAAA1', { force: true })).gen).toBe(first.gen);
expect(calls).toHaveLength(2);
});
test('a faststart download with cut media data is rejected too', async () => {
await clearDb();
const { cache, dir } = makeCache({ fixture: 'truncated-fs.mp4' });