igorkamyshev / farfetched

The advanced data fetching tool for web applications
https://ff.effector.dev
MIT License
191 stars 34 forks source link

Cached query doesn't abort uncached resulting in race conditions #498

Open SQReder opened 3 months ago

SQReder commented 3 months ago

If query started with cached parameters it doesn't abort running uncached query

const cachedQuery = createQuery({ 
  handler() {
    const ac = new AbortController();

    onAbort(() => {
      ac.abort("early aborted");
    });

    ...
  }
})

concurrency(cachedQuery, { strategy: "TAKE_LATEST" });
cache(cachedQuery, { staleAfter: "1m" });

cachedQuery.start('1st'); // long query that will be cached
/// wait for complete ...
cachedQuery.start('2nd'); // long query that should be aborted
// start cached query before 2nd resolved
cachedQuery.start('1st'); // completes almost immediately but doesnt abort 2nd

Reproduce https://github.com/SQReder/farfetched-cache-issues