You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When there are two or more PureeBufferedOutputs, if the flushSync function is skipped by locking storage with another PureeBufferedOutput instance, it will never resume.
Caused by
PureeBufferedOutput has RetryableTaskRunner and send log by the runner.
RetryableTaskRunner start by tryToStart function but the function skip if already 'future' exists. ★
PureeBufferedOutput call tryToStart function when receive new log. ★
PureeBufferedOutput#flushSync() will be skipped when 'storage' is locked. ★
RetryableTaskRunner resets 'future' only if it have done the send process (success / failed). ★
So, if there are multiple PureeBufferedOutputs and one locks the 'storage', the other instance's "future" will not be reset and the flushTask will not work. 😵
Idea
I have no idea... 🙀
thanks.
The text was updated successfully, but these errors were encountered:
@sys1yagi Thanks for reporting.
I patched this bug in #62 , but it cannot completely fix because if this situation loops it will be occurred.
In the future, I will try to split storage's lock which has each PureeBufferedOuput.
Hi.
Problem
When there are two or more PureeBufferedOutputs, if the flushSync function is skipped by locking storage with another PureeBufferedOutput instance, it will never resume.
Caused by
Idea
I have no idea... 🙀
thanks.
The text was updated successfully, but these errors were encountered: