From 0ddc96800112092de9ecaf25f82870bf1062342c Mon Sep 17 00:00:00 2001 From: Seebs Date: Fri, 3 Apr 2020 13:16:12 -0500 Subject: [PATCH] cache result of marshalling import-was-OK message This message gets generated millions of times and it's unchanging for the life of the program, and small. --- http/handler.go | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/http/handler.go b/http/handler.go index d5cbadef2..5b9eaf405 100644 --- a/http/handler.go +++ b/http/handler.go @@ -31,6 +31,7 @@ import ( "runtime/debug" "strconv" "strings" + "sync" "time" "github.com/gorilla/handlers" @@ -122,8 +123,18 @@ func OptHandlerCloseTimeout(d time.Duration) handlerOption { } } +var makeImportOk sync.Once +var importOk []byte + // NewHandler returns a new instance of Handler with a default logger. func NewHandler(opts ...handlerOption) (*Handler, error) { + makeImportOk.Do(func() { + var err error + importOk, err = proto.DefaultSerializer.Marshal(&pilosa.ImportResponse{Err: ""}) + if err != nil { + panic(fmt.Sprintf("trying to cache import-OK response: %v", err)) + } + }) handler := &Handler{ logger: logger.NopLogger, closeTimeout: time.Second * 30, @@ -1392,15 +1403,8 @@ func (h *Handler) handlePostImport(w http.ResponseWriter, r *http.Request) { } } - // Marshal response object. - buf, e := proto.DefaultSerializer.Marshal(&pilosa.ImportResponse{Err: ""}) - if e != nil { - http.Error(w, "marshal import response", http.StatusInternalServerError) - return - } - // Write response. - _, err = w.Write(buf) + _, err = w.Write(importOk) if err != nil { h.logger.Printf("writing import response: %v", err) } @@ -1911,15 +1915,8 @@ func (h *Handler) handlePostImportColumnAttrs(w http.ResponseWriter, r *http.Req return } - // Marshal response object. - buf, e := proto.DefaultSerializer.Marshal(&pilosa.ImportResponse{Err: ""}) - if e != nil { - http.Error(w, "marshal import-column-attrs response", http.StatusInternalServerError) - return - } - // Write response. - _, err = w.Write(buf) + _, err = w.Write(importOk) if err != nil { h.logger.Printf("writing import-column-attrs response: %v", err) }