diff --git a/fedilogue/fedilogue.go b/fedilogue/fedilogue.go index 3baf6af..702797b 100644 --- a/fedilogue/fedilogue.go +++ b/fedilogue/fedilogue.go @@ -82,6 +82,7 @@ func main() { removeHTMLReg = regexp.MustCompile(`<\/?\s*br\s*>`) re = regexp.MustCompile("^https?://([^/]*)/(.*)$") matchurl = regexp.MustCompile("http?s://[\\w\\-]+\\.[\\w\\-]+\\S*") + staggeredStartChan = make(chan bool) // Start instances located in database rows, err := pool.Query(context.Background(), "SELECT endpoint FROM instances") @@ -91,6 +92,9 @@ func main() { } defer rows.Close() + go staggeredStart(); + go statusReportHandler() + for rows.Next() { var endpoint string err = rows.Scan(&endpoint) @@ -100,14 +104,12 @@ func main() { } _, exists := GetRunner(endpoint) if exists == false { - logInfo("Autostarting " + endpoint) go StartInstance(endpoint) } } go startctl() //go webmain() - go statusReportHandler() runtime.Goexit() } diff --git a/fedilogue/instance.go b/fedilogue/instance.go index 1b69116..ebc2b48 100644 --- a/fedilogue/instance.go +++ b/fedilogue/instance.go @@ -14,6 +14,8 @@ import ( "fmt" ) +var staggeredStartChan chan bool + func DoTries(o *RunningInstance, req *http.Request) (*http.Response, error) { var resp *http.Response var err error @@ -212,8 +214,17 @@ func CheckInstance(newinstance string, callerEndpoint string) { } } +func staggeredStart() { + for { + _ :<- staggeredStartChan + time.Sleep(500 * time.Millisecond) + } +} func StartInstance(endpoint string) { + staggeredStartChan <- true + logInfo("Starting " + endpoint) + // Check if exists. If so, get the object. If not, create it o, _ := GetRunner(endpoint) diff --git a/fedilogue/retrieve.go b/fedilogue/retrieve.go index 6f97571..04f9220 100644 --- a/fedilogue/retrieve.go +++ b/fedilogue/retrieve.go @@ -64,7 +64,7 @@ type PostJson struct { Published time.Time `json:"published"` Source string `json:"source"` Summary string `json:"summary"` - tag []TagType `json:"tag"` + Tag []TagType `json:"tag"` To []string `json:"to"` Type string `json:"type"` @@ -150,7 +150,7 @@ func check_activity(uri string) { activityjson.normalized = spaceReg.ReplaceAllString(activityjson.normalized, " ") var hashtags []string - for _, tag := range activityjson.tag { + for _, tag := range activityjson.Tag { if tag.Type == "Hashtag" { hashtags = append(hashtags, strings.ToLower(tag.Name)) }