Restart failed saves through a guarded server retry
This commit is contained in:
@@ -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' });
|
||||
|
||||
Reference in New Issue
Block a user