diff --git a/background/ticker.go b/background/ticker.go index a2b1abe..622f348 100644 --- a/background/ticker.go +++ b/background/ticker.go @@ -1,6 +1,8 @@ package background import ( + "fmt" + "runtime" "time" "git.fjla.uk/owlboard/timetable-mgr/cif" @@ -9,11 +11,16 @@ import ( "git.fjla.uk/owlboard/timetable-mgr/log" ) -const frequency = 600 * time.Hour // Figure out a sensible frequency! +const frequency = 2 * time.Hour // Figure out a sensible frequency! // Starts a background ticker to run background tasks. Uses the frequency configured in the background/ticker.go file func InitTicker(cfg *helpers.Configuration, stop <-chan struct{}) { go runTicker(cfg, stop) + + // Run goroutine logging ticker if runtime set to debug + if helpers.Runtime == "debug" { + go goroutineTicker(stop) + } } // Runs the ticker and handles tick events @@ -32,3 +39,18 @@ func runTicker(cfg *helpers.Configuration, stop <-chan struct{}) { } } } + +// Starts a ticker that logs how many goroutines are running every two seconds +func goroutineTicker(stop <-chan struct{}) { + log.Msg.Warn("Starting goroutine Tracker ticker - DEBUG USE ONLY") + ticker := time.NewTicker(1000 * time.Millisecond) + defer ticker.Stop() + for { + select { + case <-stop: + return + case <-ticker.C: + fmt.Printf("Number of goroutines running: %d\n", runtime.NumGoroutine()) + } + } +} diff --git a/cif/update.go b/cif/update.go index 990fe8b..a45f926 100644 --- a/cif/update.go +++ b/cif/update.go @@ -32,7 +32,7 @@ func runCifFullDownload(cfg *helpers.Configuration) error { } // Drop timetable collection - dbAccess.DropCollection(dbAccess.TimetableCollection) + dbAccess.DropCollection(dbAccess.TimetableCollection) // I should edit this to prevent removal of VSTP entries in the database. // Process CIF file err = processParsedCif(parsed) diff --git a/log/log.go b/log/log.go index b9732d6..1b4fe20 100644 --- a/log/log.go +++ b/log/log.go @@ -19,7 +19,7 @@ func init() { // Determine the log level based on the runtime mode logLevel := zapcore.DebugLevel - if helpers.Runtime == "production" { + if helpers.Runtime != "debug" { logLevel = zapcore.InfoLevel } diff --git a/main.go b/main.go index 77f1e8b..db0c58a 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "git.fjla.uk/owlboard/timetable-mgr/background" "git.fjla.uk/owlboard/timetable-mgr/cif" + "git.fjla.uk/owlboard/timetable-mgr/corpus" "git.fjla.uk/owlboard/timetable-mgr/dbAccess" "git.fjla.uk/owlboard/timetable-mgr/helpers" "git.fjla.uk/owlboard/timetable-mgr/log" @@ -34,14 +35,16 @@ func main() { // Initialise a `stop` channel to signal goroutines to cleanup stop := make(chan struct{}) - // Handle signals from the OS - go handleSignals(cfg, stop) - // Start CIF Task Ticker background.InitTicker(cfg, stop) - // Test CORPUS Fetching + // Handle signals from the OS + go handleSignals(cfg, stop) + + // Manually call CIF and CORPUS checks to ensure that they are + // not delayed until the first ticker event. go cif.CheckCif(cfg) + go corpus.CheckCorpus(cfg) if cfg.VstpOn { messaging.StompInit(cfg)