21697: Comment why releaseSession func exists.
[arvados.git] / 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