Browse Source
caddytls: Move initial storage clean op into goroutine
Sometimes this operation can take a while (we observed 7 minutes
recently, with a large, globally-distributed storage backend).
master
Matthew Holt
5 years ago
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
1 changed files with
4 additions and
4 deletions
-
modules/caddytls/tls.go
|
|
@ -373,9 +373,9 @@ func (t *TLS) AllMatchingCertificates(san string) []certmagic.Certificate { |
|
|
|
return t.certCache.AllMatchingCertificates(san) |
|
|
|
} |
|
|
|
|
|
|
|
// keepStorageClean immediately cleans up all known storage units
|
|
|
|
// if it was not recently done, and starts a goroutine that runs
|
|
|
|
// the operation at every tick from t.storageCleanTicker.
|
|
|
|
// keepStorageClean starts a goroutine that immediately cleans up all
|
|
|
|
// known storage units if it was not recently done, and then runs the
|
|
|
|
// operation at every tick from t.storageCleanTicker.
|
|
|
|
func (t *TLS) keepStorageClean() { |
|
|
|
t.storageCleanTicker = time.NewTicker(storageCleanInterval) |
|
|
|
t.storageCleanStop = make(chan struct{}) |
|
|
@ -385,6 +385,7 @@ func (t *TLS) keepStorageClean() { |
|
|
|
log.Printf("[PANIC] storage cleaner: %v\n%s", err, debug.Stack()) |
|
|
|
} |
|
|
|
}() |
|
|
|
t.cleanStorageUnits() |
|
|
|
for { |
|
|
|
select { |
|
|
|
case <-t.storageCleanStop: |
|
|
@ -394,7 +395,6 @@ func (t *TLS) keepStorageClean() { |
|
|
|
} |
|
|
|
} |
|
|
|
}() |
|
|
|
t.cleanStorageUnits() |
|
|
|
} |
|
|
|
|
|
|
|
func (t *TLS) cleanStorageUnits() { |
|
|
|