镜像自地址
https://github.com/tuna/tunasync.git
已同步 2025-12-06 06:26:46 +00:00
fix(worker): fixed multi-manager configuration
the worker must be registerred on the manager `extra_status_manager` option is replaced by `api_base_list`, which overrides the `api_base` option
这个提交包含在:
@@ -55,12 +55,20 @@ type globalConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type managerConfig struct {
|
type managerConfig struct {
|
||||||
APIBase string `toml:"api_base"`
|
APIBase string `toml:"api_base"`
|
||||||
CACert string `toml:"ca_cert"`
|
// this option overrides the APIBase
|
||||||
ExtraStatusAPIs []string `toml:"extra_status_managers"`
|
APIList []string `toml:"api_base_list"`
|
||||||
|
CACert string `toml:"ca_cert"`
|
||||||
// Token string `toml:"token"`
|
// Token string `toml:"token"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (mc managerConfig) APIBaseList() []string {
|
||||||
|
if len(mc.APIList) > 0 {
|
||||||
|
return mc.APIList
|
||||||
|
}
|
||||||
|
return []string{mc.APIBase}
|
||||||
|
}
|
||||||
|
|
||||||
type serverConfig struct {
|
type serverConfig struct {
|
||||||
Hostname string `toml:"hostname"`
|
Hostname string `toml:"hostname"`
|
||||||
Addr string `toml:"listen_addr"`
|
Addr string `toml:"listen_addr"`
|
||||||
|
|||||||
@@ -386,18 +386,17 @@ func (w *Worker) URL() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *Worker) registorWorker() {
|
func (w *Worker) registorWorker() {
|
||||||
url := fmt.Sprintf(
|
|
||||||
"%s/workers",
|
|
||||||
w.cfg.Manager.APIBase,
|
|
||||||
)
|
|
||||||
|
|
||||||
msg := WorkerStatus{
|
msg := WorkerStatus{
|
||||||
ID: w.Name(),
|
ID: w.Name(),
|
||||||
URL: w.URL(),
|
URL: w.URL(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := PostJSON(url, msg, w.httpClient); err != nil {
|
for _, root := range w.cfg.Manager.APIBaseList() {
|
||||||
logger.Errorf("Failed to register worker")
|
url := fmt.Sprintf("%s/workers", root)
|
||||||
|
logger.Debugf("register on manager url: %s", url)
|
||||||
|
if _, err := PostJSON(url, msg, w.httpClient); err != nil {
|
||||||
|
logger.Errorf("Failed to register worker")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,12 +412,11 @@ func (w *Worker) updateStatus(job *mirrorJob, jobMsg jobMessage) {
|
|||||||
ErrorMsg: jobMsg.msg,
|
ErrorMsg: jobMsg.msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
apiBases := []string{w.cfg.Manager.APIBase}
|
for _, root := range w.cfg.Manager.APIBaseList() {
|
||||||
apiBases = append(apiBases, w.cfg.Manager.ExtraStatusAPIs...)
|
|
||||||
for _, root := range apiBases {
|
|
||||||
url := fmt.Sprintf(
|
url := fmt.Sprintf(
|
||||||
"%s/workers/%s/jobs/%s", root, w.Name(), jobMsg.name,
|
"%s/workers/%s/jobs/%s", root, w.Name(), jobMsg.name,
|
||||||
)
|
)
|
||||||
|
logger.Debugf("reporting on manager url: %s", url)
|
||||||
if _, err := PostJSON(url, smsg, w.httpClient); err != nil {
|
if _, err := PostJSON(url, smsg, w.httpClient); err != nil {
|
||||||
logger.Errorf("Failed to update mirror(%s) status: %s", jobMsg.name, err.Error())
|
logger.Errorf("Failed to update mirror(%s) status: %s", jobMsg.name, err.Error())
|
||||||
}
|
}
|
||||||
@@ -427,12 +425,9 @@ func (w *Worker) updateStatus(job *mirrorJob, jobMsg jobMessage) {
|
|||||||
|
|
||||||
func (w *Worker) fetchJobStatus() []MirrorStatus {
|
func (w *Worker) fetchJobStatus() []MirrorStatus {
|
||||||
var mirrorList []MirrorStatus
|
var mirrorList []MirrorStatus
|
||||||
|
apiBase := w.cfg.Manager.APIBaseList()[0]
|
||||||
|
|
||||||
url := fmt.Sprintf(
|
url := fmt.Sprintf("%s/workers/%s/jobs", apiBase, w.Name())
|
||||||
"%s/workers/%s/jobs",
|
|
||||||
w.cfg.Manager.APIBase,
|
|
||||||
w.Name(),
|
|
||||||
)
|
|
||||||
|
|
||||||
if _, err := GetJSON(url, &mirrorList, w.httpClient); err != nil {
|
if _, err := GetJSON(url, &mirrorList, w.httpClient); err != nil {
|
||||||
logger.Errorf("Failed to fetch job status: %s", err.Error())
|
logger.Errorf("Failed to fetch job status: %s", err.Error())
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户