-
Notifications
You must be signed in to change notification settings - Fork 190
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
go: add deadlock detector, improve locking #618
base: master
Are you sure you want to change the base?
Commits on Feb 17, 2023
-
go: use deadlock.Mutex to check for deadlocks
Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 156398d - Browse repository at this point
Copy the full SHA 156398dView commit details -
Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 15fd0be - Browse repository at this point
Copy the full SHA 15fd0beView commit details -
go: skip a Unix test on Windows
Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 8bca054 - Browse repository at this point
Copy the full SHA 8bca054View commit details -
go: avoid acquiring the multiplexer mutex in channel
The code is clearer if each object only acquires its own mutex, and doesn't reach into the mutexes of others (if possible) Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 026682d - Browse repository at this point
Copy the full SHA 026682dView commit details -
go: avoid possible read/modify/write of the Write window
The Write window is used to keep track of how much buffer space is free in the remote to avoid one connection blocking the rest. Previously we checked the window and decided how much to write, then dropped the metadata mutex before performing the write. In theory another Write call on the same connection could see that buffer size is free, send too much and block the connection. Therefore Write should take ownership of the space by bumping the `current` window before dropping the lock. Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 30aec04 - Browse repository at this point
Copy the full SHA 30aec04View commit details -
go: simplify the Write timeout handling
Previously we had a complicated set of channels and a condition variable, and the condition variable Wait() was in a goroutine. Instead the Wait() is now in the main goroutine and an optional timeout is in an optional goroutine. Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for e74d418 - Browse repository at this point
Copy the full SHA e74d418View commit details -
go: net.Conn allows concurrent Write() calls
If multiple calls are blocked waiting for window space, we need to use Broadcast() to wake them all up on a window update. Signed-off-by: David Scott <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 8d838a0 - Browse repository at this point
Copy the full SHA 8d838a0View commit details