Skip to content

Commit d7eb8b3

Browse files
committed
refactor: skip creating goroutine for logging
The purpose for logging by new goroutine is to reduce client delay, as logging has IO-blocking. But creating a new goroutine for each request maybe too heavy.
1 parent b6f5a43 commit d7eb8b3

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

src/serverHandler/log.go

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type loggableResponseWriter struct {
1616

1717
func (w loggableResponseWriter) WriteHeader(statusCode int) {
1818
w.ResponseWriter.WriteHeader(statusCode)
19-
go logRequest(w.logger, w.request, statusCode)
19+
logRequest(w.logger, w.request, statusCode)
2020
}
2121

2222
func logRequest(logger *serverLog.Logger, r *http.Request, statusCode int) {
@@ -70,7 +70,7 @@ func (h *aliasHandler) logMutate(username, action, detail string, r *http.Reques
7070
buf = append(buf, ':', ' ') // 2 bytes
7171
buf = append(buf, []byte(detail)...)
7272

73-
go h.logger.LogAccess(buf)
73+
h.logger.LogAccess(buf)
7474
}
7575

7676
func (h *aliasHandler) logUpload(username, filename, fsPath string, r *http.Request) {
@@ -91,7 +91,7 @@ func (h *aliasHandler) logUpload(username, filename, fsPath string, r *http.Requ
9191
buf = append(buf, []byte(" -> ")...) // 4 bytes
9292
buf = append(buf, []byte(fsPath)...)
9393

94-
go h.logger.LogAccess(buf)
94+
h.logger.LogAccess(buf)
9595
}
9696

9797
func (h *aliasHandler) logArchive(filename, relPath string, r *http.Request) {
@@ -107,7 +107,7 @@ func (h *aliasHandler) logArchive(filename, relPath string, r *http.Request) {
107107
buf = append(buf, []byte(" <- ")...) // 4 bytes
108108
buf = append(buf, []byte(relPath)...)
109109

110-
go h.logger.LogAccess(buf)
110+
h.logger.LogAccess(buf)
111111
}
112112

113113
func (h *aliasHandler) logErrors(errs []error) (hasError bool) {
@@ -116,14 +116,9 @@ func (h *aliasHandler) logErrors(errs []error) (hasError bool) {
116116
}
117117

118118
if h.logger.CanLogError() {
119-
go func(errs []error) {
120-
for i := range errs {
121-
errBytes := util.EscapeControllingRune(errs[i].Error())
122-
buf := serverLog.NewBuffer(len(errBytes))
123-
buf = append(buf, errBytes...)
124-
h.logger.LogError(buf)
125-
}
126-
}(errs)
119+
for _, err := range errs {
120+
h.logErrorBytes(err)
121+
}
127122
}
128123

129124
return true
@@ -135,13 +130,15 @@ func (h *aliasHandler) logError(err error) (hasError bool) {
135130
}
136131

137132
if h.logger.CanLogError() {
138-
go func(err error) {
139-
errBytes := util.EscapeControllingRune(err.Error())
140-
buf := serverLog.NewBuffer(len(errBytes))
141-
buf = append(buf, errBytes...)
142-
h.logger.LogError(buf)
143-
}(err)
133+
h.logErrorBytes(err)
144134
}
145135

146136
return true
147137
}
138+
139+
func (h *aliasHandler) logErrorBytes(err error) {
140+
errBytes := util.EscapeControllingRune(err.Error())
141+
buf := serverLog.NewBuffer(len(errBytes))
142+
buf = append(buf, errBytes...)
143+
h.logger.LogError(buf)
144+
}

0 commit comments

Comments
 (0)