mirror of
https://codeberg.org/scip/io-exporter.git
synced 2025-12-17 12:31:03 +01:00
add waitgroup for goroutine 1
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ncw/directio"
|
"github.com/ncw/directio"
|
||||||
@@ -32,7 +33,10 @@ func NewExporter(conf *Config, alloc *Alloc, metrics *Metrics) *Exporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// starts the primary go-routine, which will run the io checks for ever
|
// starts the primary go-routine, which will run the io checks for ever
|
||||||
func (exp *Exporter) RunIOchecks() {
|
func (exp *Exporter) RunIOchecks() sync.WaitGroup {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(1)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
var res_r, res_w Result
|
var res_r, res_w Result
|
||||||
@@ -60,6 +64,8 @@ func (exp *Exporter) RunIOchecks() {
|
|||||||
time.Sleep(time.Duration(exp.conf.Sleeptime) * time.Second)
|
time.Sleep(time.Duration(exp.conf.Sleeptime) * time.Second)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
return wg
|
||||||
}
|
}
|
||||||
|
|
||||||
// call an io measurement and collect time needed
|
// call an io measurement and collect time needed
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func Run() {
|
|||||||
alloc := NewAlloc()
|
alloc := NewAlloc()
|
||||||
exporter := NewExporter(conf, alloc, metrics)
|
exporter := NewExporter(conf, alloc, metrics)
|
||||||
|
|
||||||
exporter.RunIOchecks()
|
wg := exporter.RunIOchecks()
|
||||||
|
|
||||||
http.Handle("/metrics", promhttp.HandlerFor(
|
http.Handle("/metrics", promhttp.HandlerFor(
|
||||||
metrics.registry,
|
metrics.registry,
|
||||||
@@ -49,6 +49,8 @@ func Run() {
|
|||||||
if err := http.ListenAndServe(fmt.Sprintf(":%d", conf.Port), nil); err != nil {
|
if err := http.ListenAndServe(fmt.Sprintf(":%d", conf.Port), nil); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
func report(err error, fd *os.File) bool {
|
func report(err error, fd *os.File) bool {
|
||||||
|
|||||||
Reference in New Issue
Block a user