mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 23:32:24 -06:00 
			
		
		
		
	* replace media workers with just runners.WorkerPool, move to state structure, use go-sched for global task scheduling
* improved code comment
* fix worker tryUntil function, update go-runners/go-sched
* make preprocess functions package public, use these where possible to stop doubled up processing
* remove separate emoji worker pool
* limit calls to time.Now() during media preprocessing
* use Processor{} to manage singular runtime of processing media
* ensure workers get started when media manager is used
* improved error setting in processing media, fix media test
* port changes from processingmedia to processing emoji
* finish code commenting
* finish code commenting and comment-out client API + federator worker pools until concurrency worker pools replaced
* linterrrrrrrrrrrrrrrr
---------
Signed-off-by: kim <grufwub@gmail.com>
		
	
			
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
//go:build debug || debugenv
 | 
						|
// +build debug debugenv
 | 
						|
 | 
						|
package debug
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
	"net/http/pprof"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
// ServePprof will start an HTTP server serving /debug/pprof only if debug enabled.
 | 
						|
func ServePprof(addr string) error {
 | 
						|
	if !DEBUG {
 | 
						|
		// debug disabled in env
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	handler := WithPprof(nil)
 | 
						|
	return http.ListenAndServe(addr, handler)
 | 
						|
}
 | 
						|
 | 
						|
// WithPprof will add /debug/pprof handling (provided by "net/http/pprof") only if debug enabled.
 | 
						|
func WithPprof(handler http.Handler) http.Handler {
 | 
						|
	if !DEBUG {
 | 
						|
		// debug disabled in env
 | 
						|
		return handler
 | 
						|
	}
 | 
						|
 | 
						|
	// Default serve mux is setup with pprof
 | 
						|
	pprofmux := http.DefaultServeMux
 | 
						|
 | 
						|
	if pprofmux == nil {
 | 
						|
		// Someone nil'ed the default mux
 | 
						|
		pprofmux = &http.ServeMux{}
 | 
						|
		pprofmux.HandleFunc("/debug/pprof/", pprof.Index)
 | 
						|
		pprofmux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
 | 
						|
		pprofmux.HandleFunc("/debug/pprof/profile", pprof.Profile)
 | 
						|
		pprofmux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
 | 
						|
		pprofmux.HandleFunc("/debug/pprof/trace", pprof.Trace)
 | 
						|
	}
 | 
						|
 | 
						|
	if handler == nil {
 | 
						|
		// Ensure handler is non-nil
 | 
						|
		handler = http.NotFoundHandler()
 | 
						|
	}
 | 
						|
 | 
						|
	// Debug enabled, return wrapped handler func
 | 
						|
	return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
 | 
						|
		const prefix = "/debug/pprof"
 | 
						|
 | 
						|
		// /debug/pprof(/.*)? -> pass to pprofmux
 | 
						|
		if strings.HasPrefix(r.URL.Path, prefix) {
 | 
						|
			path := r.URL.Path[len(prefix):]
 | 
						|
			if path == "" || path[0] == '/' {
 | 
						|
				pprofmux.ServeHTTP(rw, r)
 | 
						|
				return
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// .* -> pass to handler
 | 
						|
		handler.ServeHTTP(rw, r)
 | 
						|
	})
 | 
						|
}
 |