When using reserve with timeout from multiple connections on the same tube, only the last one receives "TIMED_OUT". The other connections hang indefinitely. This is occurs with the trunk codebase.
The issue seems to stem from the existing connection being removed from srv->conns when the most recent connection issues the watch foo command. I'm still digging into the code to understand why that is happening.
Confirmed, thanks. If there's anything I can do to help you
track this down, let me know!
Cool, I didn't mean to close this just now. Anyway, I think I'm pretty close and I hope to have a patch by Monday.
Ok, I have a one-line fix but developing a unit test for the bug will be trickier because the current unit test framework does not appear to support multiple concurrent connections. I'll look to see if I figure something out this evening.
Hey, even if it's not totally finished, can you push the fix for this
in a branch somewhere? I'd like to take a look at it.
It shouldn't be too hard to copy testsrv in integ-test.c to a new
function and edit it to make two concurrent connections.
I just wrote a test for this.
Great! I saw your message about adding the test and was going to check my fix (which we've been running in production since October) but it looks like I'm too late. I had slightly changed the logic in srvscheconn in srv.c but your fix is better.
I'm still seeing exactly this behavior on 1.5