fix(worker): refactor and fix issues of worker

This commit is contained in:
hexxa 2021-09-12 12:45:03 +08:00 committed by Hexxa
parent 8518072c7e
commit 4a5c68df17
13 changed files with 194 additions and 86 deletions

View file

@ -41,11 +41,18 @@ type ServerCfg struct {
PublicPath string `json:"publicPath" yaml:"publicPath"`
}
type WorkerPoolCfg struct {
QueueSize int `json:"queueSize" yaml:"queueSize"`
SleepCyc int `json:"sleepCyc" yaml:"sleepCyc"`
WorkerCount int `json:"workerCount" yaml:"workerCount"`
}
type Config struct {
Fs *FSConfig `json:"fs" yaml:"fs"`
Secrets *Secrets `json:"secrets" yaml:"secrets"`
Server *ServerCfg `json:"server" yaml:"server"`
Users *UsersCfg `json:"users" yaml:"users"`
Fs *FSConfig `json:"fs" yaml:"fs"`
Secrets *Secrets `json:"secrets" yaml:"secrets"`
Server *ServerCfg `json:"server" yaml:"server"`
Users *UsersCfg `json:"users" yaml:"users"`
Workers *WorkerPoolCfg `json:"workers" yaml:"workers"`
}
func NewConfig() *Config {
@ -89,6 +96,11 @@ func DefaultConfig() (string, error) {
MaxHeaderBytes: 512,
PublicPath: "public",
},
Workers: &WorkerPoolCfg{
QueueSize: 1024,
SleepCyc: 1,
WorkerCount: 2,
},
}
cfgBytes, err := json.Marshal(defaultCfg)

View file

@ -34,7 +34,6 @@ import (
"github.com/ihexxa/quickshare/src/kvstore"
"github.com/ihexxa/quickshare/src/kvstore/boltdbpvd"
"github.com/ihexxa/quickshare/src/userstore"
"github.com/ihexxa/quickshare/src/worker"
"github.com/ihexxa/quickshare/src/worker/localworker"
)
@ -42,7 +41,6 @@ type Server struct {
server *http.Server
cfg gocfg.ICfg
deps *depidx.Deps
workers worker.IWorkerPool
signalChan chan os.Signal
}
@ -52,9 +50,8 @@ func NewServer(cfg gocfg.ICfg) (*Server, error) {
}
deps := initDeps(cfg)
workers := localworker.NewWorkerPool(1024, 5000, 2, deps)
router := gin.Default()
router, err := initHandlers(router, cfg, deps, workers)
router, err := initHandlers(router, cfg, deps)
if err != nil {
return nil, err
}
@ -71,7 +68,6 @@ func NewServer(cfg gocfg.ICfg) (*Server, error) {
server: srv,
deps: deps,
cfg: cfg,
workers: workers,
}, nil
}
@ -132,10 +128,19 @@ func initDeps(cfg gocfg.ICfg) *depidx.Deps {
deps.SetLog(logger)
deps.SetLimiter(limiter)
queueSize := cfg.GrabInt("Workers.QueueSize")
sleepCyc := cfg.GrabInt("Workers.SleepCyc")
workerCount := cfg.GrabInt("Workers.WorkerCount")
fmt.Println(queueSize, sleepCyc, workerCount)
workers := localworker.NewWorkerPool(queueSize, sleepCyc, workerCount, logger)
workers.Start()
deps.SetWorkers(workers)
return deps
}
func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps, workers worker.IWorkerPool) (*gin.Engine, error) {
func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.Engine, error) {
// handlers
userHdrs, err := multiusers.NewMultiUsersSvc(cfg, deps)
if err != nil {
@ -170,7 +175,7 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps, workers
deps.Log().Infof("user (%s) is created\n", adminName)
}
fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps, workers)
fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps)
if err != nil {
return nil, err
}
@ -298,7 +303,7 @@ func (s *Server) Start() error {
func (s *Server) Shutdown() error {
// TODO: add timeout
s.workers.Stop()
s.deps.Workers().Stop()
s.deps.Log().Sync()
return s.server.Shutdown(context.Background())
}