Dear Fujii-san,
> This approach doesn't seem helpful on platforms that don't support
> TCP_USER_TIMEOUT, i.e., tcp_user_timeout is not available. Right?
> If I remember correctly, Windows is one of those platforms.
Good point, documentation said it's not usable for Windows.
The easiest fix I can come up with is to determine a timeout for checkpoint wait;
ConditionVariableTimedSleep() can be used in InvalidatePossiblyObsoleteSlot(),
we can put some LOG and skip invalidating for a while. Not sure how long we
should wait but at least we can use the a fixed value. This might be similar
with your second option.
Regarding the first option, it can solve the root cause, but I'm afraid we may
have to modify very common code.
Best regards,
Hayato Kuroda
FUJITSU LIMITED