1) Stream session or the stream doesn't have any progress (Read Timeout/rpc timeout - Socket timeout might help)
But do you know what is the reason for it making no progress? Because unless we know what can cause it, not sure what to fix?
2) Validation compaction completed but the result tree is sent but not received.
3) Repair request is sent but the receiving node didn't receive it.
How can we "lose" messages, aren't tcp supposed to avoid this?
4) When we have a big repair which runs for hours it will be better to retry the failed part rather than full retry.
Streaming is supposed to have some part of built-in retry, though I'm not sure there is situation where it is actually useful. But if we talking like having a repair fail because a node die and continuing it once the node is back up, then that would be nice, but I'm pretty sure this will be mightily complicated. In particular and to name only one difficulty, whether this is for the validation compaction or the streaming itself, we likely will have a hard time making sure that sstables haven't been compacted between the initial try and the retry (or we'll risk hanging on obsolete sstables forever). But in principle, that would be nice. Clearly not in the scope of this ticket in any case.