21697: Comment why releaseSession func exists.
authorTom Clegg <tom@curii.com>
Tue, 23 Apr 2024 18:09:34 +0000 (14:09 -0400)
committerTom Clegg <tom@curii.com>
Tue, 23 Apr 2024 18:09:34 +0000 (14:09 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

services/keep-web/handler.go

index 4fae0aee5f1e1fec81186f5206d3cd06ea41a4ea..d318b5cdd4edee5d419c321d688f9dd3a8f1385f 100644 (file)
@@ -435,6 +435,14 @@ func (h *handler) ServeHTTP(wOrig http.ResponseWriter, r *http.Request) {
                break
        }
 
+       // releaseSession() is equivalent to session.Release() except
+       // that it's a no-op if (1) session is nil, or (2) it has
+       // already been called.
+       //
+       // This way, we can do a defer call here to ensure it gets
+       // called in all code paths, and also call it inline (see
+       // below) in the cases where we want to release the lock
+       // before returning.
        releaseSession := func() {}
        if session != nil {
                var releaseSessionOnce sync.Once