shards: a progress message every 10s when loading
A zoekt-webserver does not start listening until it has loaded all
shards. In some cases (eg misconfigured IO) the startup time can be very
large. This commit adds a progress message so admins can understand what
is going on.
Change-Id: I997543ce4204f1de48f4071f635668b70c299bb4
diff --git a/shards/watcher.go b/shards/watcher.go
index 4bdb8c1..4a7dc72 100644
--- a/shards/watcher.go
+++ b/shards/watcher.go
@@ -107,14 +107,30 @@
}
}
+ if len(toDrop) > 0 {
+ log.Printf("unloading %d shards", len(toDrop))
+ }
for _, t := range toDrop {
log.Printf("unloading: %s", t)
s.loader.drop(t)
}
+ if len(toLoad) == 0 {
+ return nil
+ }
+
+ log.Printf("loading %d shards", len(toLoad))
+
// Limit amount of concurrent shard loads.
throttle := make(chan struct{}, runtime.GOMAXPROCS(0))
- for _, t := range toLoad {
+ lastProgress := time.Now()
+ for i, t := range toLoad {
+ // If taking a while to start-up occasionally give a progress message
+ if time.Since(lastProgress) > 10*time.Second {
+ log.Printf("still need to load %d shards...", len(toLoad)-i)
+ lastProgress = time.Now()
+ }
+
throttle <- struct{}{}
go func(k string) {
s.loader.load(k)