From ac30332d40714a53ca0557bfada88a2dc12c631d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 11 Jan 2024 22:46:54 +0800 Subject: [PATCH] :art: Some kernel interface concurrency is no longer controlled to improve performance https://github.com/siyuan-note/siyuan/issues/10149 --- kernel/model/session.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/kernel/model/session.go b/kernel/model/session.go index 3c74a4ac507..1a0f9fbc18a 100644 --- a/kernel/model/session.go +++ b/kernel/model/session.go @@ -331,11 +331,31 @@ func ControlConcurrency(c *gin.Context) { return } + reqPath := c.Request.URL.Path + + // Improve the concurrency of the kernel data reading interfaces https://github.com/siyuan-note/siyuan/issues/10149 + if strings.HasPrefix(reqPath, "/stage/") || strings.HasPrefix(reqPath, "/assets/") || strings.HasPrefix(reqPath, "/appearance/") { + c.Next() + return + } + + parts := strings.Split(reqPath, "/") + function := parts[len(parts)-1] + if strings.HasPrefix(function, "get") || strings.HasPrefix(function, "list") || + strings.HasPrefix(function, "search") || strings.HasPrefix(function, "render") || strings.HasPrefix(function, "ls") { + c.Next() + return + } + if strings.HasPrefix(function, "/api/query/") || strings.HasPrefix(function, "/api/search/") { + c.Next() + return + } + requestingLock.Lock() - mutex := requesting[c.Request.URL.Path] + mutex := requesting[reqPath] if nil == mutex { mutex = &sync.Mutex{} - requesting[c.Request.URL.Path] = mutex + requesting[reqPath] = mutex } requestingLock.Unlock()