Created attachment 813772 [details] nspr.log.zip [entry=94bf790] This comes much more obvious with bug 922741 and bug 922671 in. Scenario: - channel1 opens a new entry - channel2 opens it too - channel2 gets onCheck after the channel1 calls metaDataReady() - channel2 want the entry complete (response not resumable) - channel1 doomes the entry - channel2 gets onAvail(NOT_FOUND) The log shows a failed assertion hit during this scenario that uncovers this issue. The fix there is just to drop the flag. I think we can freely provide the channel1 with a new entry (recreated one).
[ No longer blocks enabling cache2, expected to be fixed after cache2 is on ]
Created attachment 8358724 [details] [diff] [review] v1 (not widely tested | unstable) callbacks are now transferred when: - Recreate()'ed (already implemeted, but now a bit improved) - AsyncDoom()'ed - OPEN_TRANCATE'ed All should be clear from the patch. The biggest difference is that callbacks should never be invoked on a doomed entry unless something during reopen fails (what shouldn't). https://tbpl.mozilla.org/?tree=Try&rev=b732d195e645
- the patch may potentially leak during shutdown, locally fixed
The patch is unstable and not critically needed for the first deployment. Will return to this after enable.
(In reply to Honza Bambas (:mayhemer) from comment #2) > This shows up important. Unfortunately I didn't bother to write why... Anyway, the patch is rather complicated and I think this scenario is probably pretty rare. Not worth the effort.