fix: stackoverflow
This commit is contained in:
parent
85fd781072
commit
95736c0bc4
@ -165,7 +165,7 @@ func (t *Tracker) StartSelectTrackerBackground() *Tracker {
|
||||
for {
|
||||
fmt.Println("[client->trackers] SelectBestTrackerBackground...")
|
||||
t.SelectBestTracker()
|
||||
time.Sleep(5 * time.Minute)
|
||||
time.Sleep(1 * time.Minute)
|
||||
}
|
||||
}()
|
||||
return t
|
||||
|
@ -11,15 +11,29 @@ import (
|
||||
)
|
||||
|
||||
func (t *Tracker) Project() (proj Project) {
|
||||
if time.Since(t.__project_last_fetched) < 3*time.Minute {
|
||||
if time.Since(t.__project_last_fetched) <= 3*time.Minute {
|
||||
return *t.__project
|
||||
}
|
||||
|
||||
t.StartFetchProjectBackground()
|
||||
for t.__project == nil {
|
||||
|
||||
for t.__project == nil { // initial fetch
|
||||
time.Sleep(1 * time.Second)
|
||||
if t.__project != nil { // fetch success
|
||||
return t.Project()
|
||||
}
|
||||
}
|
||||
|
||||
for { // not nil, but outdated
|
||||
if time.Since(t.__project_last_fetched) > 5*time.Minute { // over 5 minutes, abort
|
||||
panic("all fetch failed for 5 minutes")
|
||||
}
|
||||
if time.Since(t.__project_last_fetched) <= 3*time.Minute { // not outdated anymore
|
||||
return *t.__project
|
||||
}
|
||||
go t.FetchProject(5 * time.Second) // short timeout
|
||||
time.Sleep(8 * time.Second)
|
||||
}
|
||||
return t.Project()
|
||||
}
|
||||
|
||||
func (t *Tracker) StartFetchProjectBackground() *Tracker {
|
||||
|
Loading…
Reference in New Issue
Block a user