pkg/api: use a rwlock when accessing storage

The original patch used a mutex, however, the workload patterns are
likely to be read-heavy, so use a rwlock instead.
This commit is contained in:
Ramkumar Chinchani
2020-03-20 10:56:19 -07:00
parent 2fd87b6a86
commit dfe023225f
3 changed files with 6 additions and 5 deletions
+4 -2
View File
@@ -53,7 +53,8 @@ func NewRouteHandler(c *Controller) *RouteHandler {
}
// blobRLockWrapper calls the real handler with read-lock held
func (rh *RouteHandler) blobRLockWrapper(f func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) {
func (rh *RouteHandler) blobRLockWrapper(f func(w http.ResponseWriter,
r *http.Request)) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
rh.blobLock.RLock()
f(w, r)
@@ -62,7 +63,8 @@ func (rh *RouteHandler) blobRLockWrapper(f func(w http.ResponseWriter, r *http.R
}
// blobLockWrapper calls the real handler with write-lock held
func (rh *RouteHandler) blobLockWrapper(f func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) {
func (rh *RouteHandler) blobLockWrapper(f func(w http.ResponseWriter,
r *http.Request)) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
rh.blobLock.Lock()
f(w, r)