Skip to content
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

server: fix a Serve() vs. (immediate) Shutdown() race #175

Merged
merged 2 commits into from
Oct 29, 2024

Commits on Sep 16, 2024

  1. server_test: add Serve()/Shutdown() race test.

    Signed-off-by: Krisztian Litkey <[email protected]>
    klihub committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    ed6c3ba View commit details
    Browse the repository at this point in the history
  2. server: fix Serve() vs. immediate Shutdown() race.

    Fix a race where an asynchronous server.Serve() invoked in a
    a goroutine races with an almost immediate server.Shutdown().
    If Shutdown() finishes its locked closing of listeners before
    Serve() gets around to add the new one, Serve will sit stuck
    forever in l.Accept(), unless the caller closes the listener
    in addition to Shutdown().
    
    This is probably almost impossible to trigger in real life,
    but some of the unit tests, which run the server and client
    in the same process, occasionally do trigger this. Then, if
    the test tries to verify a final ErrServerClosed error from
    Serve() after Shutdown() it gets stuck forever.
    
    Signed-off-by: Krisztian Litkey <[email protected]>
    klihub committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    c4d96d5 View commit details
    Browse the repository at this point in the history