Revise the use of htime.Since/htime.Now

We cannot (also, it doesn't add any value)  use that when the `clock` is set,

* To measure time (before that global is set)
* To compare file timestamps re cache eviction

Fixes #9868
This commit is contained in:
Bjørn Erik Pedersen 2022-05-09 10:05:19 +02:00
parent 860c51c314
commit 51f08b0b6a
9 changed files with 22 additions and 20 deletions

View file

@ -24,7 +24,6 @@ import (
"sync" "sync"
"time" "time"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/hugio"
"github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/helpers"
@ -296,7 +295,10 @@ func (c *Cache) isExpired(modTime time.Time) bool {
if c.maxAge < 0 { if c.maxAge < 0 {
return false return false
} }
return c.maxAge == 0 || htime.Since(modTime) > c.maxAge
// Note the use of time.Since here.
// We cannot use Hugo's global Clock for this.
return c.maxAge == 0 || time.Since(modTime) > c.maxAge
} }
// For testing // For testing

View file

@ -18,7 +18,6 @@ import (
"os" "os"
"time" "time"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/hugo"
"github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/loggers"
hpaths "github.com/gohugoio/hugo/common/paths" hpaths "github.com/gohugoio/hugo/common/paths"
@ -152,7 +151,7 @@ built with love by spf13 and friends in Go.
Complete documentation is available at https://gohugo.io/.`, Complete documentation is available at https://gohugo.io/.`,
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
defer cc.timeTrack(htime.Now(), "Total") defer cc.timeTrack(time.Now(), "Total")
cfgInit := func(c *commandeer) error { cfgInit := func(c *commandeer) error {
if cc.buildWatch { if cc.buildWatch {
c.Set("disableLiveReload", true) c.Set("disableLiveReload", true)
@ -238,7 +237,7 @@ func (cc *hugoBuilderCommon) timeTrack(start time.Time, name string) {
if cc.quiet { if cc.quiet {
return return
} }
elapsed := htime.Since(start) elapsed := time.Since(start)
fmt.Printf("%s in %v ms\n", name, int(1000*elapsed.Seconds())) fmt.Printf("%s in %v ms\n", name, int(1000*elapsed.Seconds()))
} }

View file

@ -681,7 +681,11 @@ func (c *commandeer) firstPathSpec() *helpers.PathSpec {
} }
func (c *commandeer) timeTrack(start time.Time, name string) { func (c *commandeer) timeTrack(start time.Time, name string) {
elapsed := htime.Since(start) // Note the use of time.Since here and time.Now in the callers.
// We have a htime.Sinnce, but that may be adjusted to the future,
// and that does not make sense here, esp. when used before the
// global Clock is initialized.
elapsed := time.Since(start)
c.logger.Printf("%s in %v ms", name, int(1000*elapsed.Seconds())) c.logger.Printf("%s in %v ms", name, int(1000*elapsed.Seconds()))
} }
@ -792,7 +796,7 @@ func (c *commandeer) fullRebuild(changeType string) {
time.Sleep(2 * time.Second) time.Sleep(2 * time.Second)
}() }()
defer c.timeTrack(htime.Now(), "Rebuilt") defer c.timeTrack(time.Now(), "Rebuilt")
c.commandeerHugoState = newCommandeerHugoState() c.commandeerHugoState = newCommandeerHugoState()
err := c.loadConfig() err := c.loadConfig()
@ -1137,7 +1141,7 @@ func (c *commandeer) handleEvents(watcher *watcher.Batcher,
c.changeDetector.PrepareNew() c.changeDetector.PrepareNew()
func() { func() {
defer c.timeTrack(htime.Now(), "Total") defer c.timeTrack(time.Now(), "Total")
if err := c.rebuildSites(dynamicEvents); err != nil { if err := c.rebuildSites(dynamicEvents); err != nil {
c.handleBuildErr(err, "Rebuild failed") c.handleBuildErr(err, "Rebuild failed")
} }

View file

@ -251,7 +251,7 @@ func (sc *serverCmd) server(cmd *cobra.Command, args []string) error {
} }
err = func() error { err = func() error {
defer c.timeTrack(htime.Now(), "Built") defer c.timeTrack(time.Now(), "Built")
err := c.serverBuild() err := c.serverBuild()
if err != nil { if err != nil {
cmd.PrintErrln("Error:", err.Error()) cmd.PrintErrln("Error:", err.Error())

View file

@ -24,7 +24,6 @@ import (
"runtime" "runtime"
"time" "time"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/terminal" "github.com/gohugoio/hugo/common/terminal"
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
@ -177,7 +176,7 @@ func (l *logger) Out() io.Writer {
// PrintTimerIfDelayed prints a time statement to the FEEDBACK logger // PrintTimerIfDelayed prints a time statement to the FEEDBACK logger
// if considerable time is spent. // if considerable time is spent.
func (l *logger) PrintTimerIfDelayed(start time.Time, name string) { func (l *logger) PrintTimerIfDelayed(start time.Time, name string) {
elapsed := htime.Since(start) elapsed := time.Since(start)
milli := int(1000 * elapsed.Seconds()) milli := int(1000 * elapsed.Seconds())
if milli < 500 { if milli < 500 {
return return
@ -186,7 +185,7 @@ func (l *logger) PrintTimerIfDelayed(start time.Time, name string) {
} }
func (l *logger) PrintTimer(start time.Time, name string) { func (l *logger) PrintTimer(start time.Time, name string) {
elapsed := htime.Since(start) elapsed := time.Since(start)
milli := int(1000 * elapsed.Seconds()) milli := int(1000 * elapsed.Seconds())
l.Printf("%s in %v ms", name, milli) l.Printf("%s in %v ms", name, milli)
} }

View file

@ -25,7 +25,6 @@ import (
"sync" "sync"
"time" "time"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/types"
"github.com/gohugoio/hugo/compare" "github.com/gohugoio/hugo/compare"
"github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/helpers"
@ -130,7 +129,7 @@ func (s *Store) TrackValue(key string, value any, cached bool) {
// MeasureSince adds a measurement for key to the metric store. // MeasureSince adds a measurement for key to the metric store.
func (s *Store) MeasureSince(key string, start time.Time) { func (s *Store) MeasureSince(key string, start time.Time) {
s.mu.Lock() s.mu.Lock()
s.metrics[key] = append(s.metrics[key], htime.Since(start)) s.metrics[key] = append(s.metrics[key], time.Since(start))
s.mu.Unlock() s.mu.Unlock()
} }

View file

@ -23,7 +23,6 @@ import (
"time" "time"
"github.com/bep/debounce" "github.com/bep/debounce"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/loggers"
"github.com/spf13/cast" "github.com/spf13/cast"
@ -506,7 +505,7 @@ func (c *collector) applyThemeConfig(tc *moduleAdapter) error {
} }
func (c *collector) collect() { func (c *collector) collect() {
defer c.logger.PrintTimerIfDelayed(htime.Now(), "hugo: collected modules") defer c.logger.PrintTimerIfDelayed(time.Now(), "hugo: collected modules")
d := debounce.New(2 * time.Second) d := debounce.New(2 * time.Second)
d(func() { d(func() {
c.logger.Println("hugo: downloading modules …") c.logger.Println("hugo: downloading modules …")

View file

@ -25,8 +25,8 @@ import (
"reflect" "reflect"
"strings" "strings"
"sync" "sync"
"time"
"github.com/gohugoio/hugo/common/htime"
texttemplate "github.com/gohugoio/hugo/tpl/internal/go_templates/texttemplate" texttemplate "github.com/gohugoio/hugo/tpl/internal/go_templates/texttemplate"
"github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/helpers"
@ -222,7 +222,7 @@ func createKey(name string, variants ...any) (partialCacheKey, error) {
var errUnHashable = errors.New("unhashable") var errUnHashable = errors.New("unhashable")
func (ns *Namespace) getOrCreate(ctx context.Context, key partialCacheKey, context any) (result any, err error) { func (ns *Namespace) getOrCreate(ctx context.Context, key partialCacheKey, context any) (result any, err error) {
start := htime.Now() start := time.Now()
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
err = r.(error) err = r.(error)

View file

@ -27,10 +27,10 @@ import (
"sort" "sort"
"strings" "strings"
"sync" "sync"
"time"
"unicode" "unicode"
"unicode/utf8" "unicode/utf8"
"github.com/gohugoio/hugo/common/htime"
"github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/types"
"github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/helpers"
@ -235,7 +235,7 @@ func (t *templateExec) ExecuteWithContext(ctx context.Context, templ tpl.Templat
defer rlocker.RUnlock() defer rlocker.RUnlock()
} }
if t.Metrics != nil { if t.Metrics != nil {
defer t.Metrics.MeasureSince(templ.Name(), htime.Now()) defer t.Metrics.MeasureSince(templ.Name(), time.Now())
} }
if t.templateUsageTracker != nil { if t.templateUsageTracker != nil {