in go/storage/certdatabase.go [447:486]
func (db *CertDatabase) moveCachedSerialsToStorage() error {
issuerList, err := db.GetIssuerAndDatesFromCache()
if err != nil {
return err
}
for _, issuerDate := range issuerList {
issuer := issuerDate.Issuer
tmpDir := renameio.TempDir(db.issuerDir(issuer))
err = os.MkdirAll(tmpDir, permModeDir)
if err != nil {
return err
}
batchSize := kMoveSerialsBatchSize
for start := 0; start < len(issuerDate.ExpDates); start += batchSize {
if start+batchSize > len(issuerDate.ExpDates) {
batchSize = len(issuerDate.ExpDates) - start
}
glog.Infof("[%s] Moving %d expiry bins to storage.", issuer.ID(), batchSize)
errChan := make(chan error, batchSize)
var wg sync.WaitGroup
wg.Add(batchSize)
for i := start; i < start+batchSize; i++ {
go func(expDate types.ExpDate) {
errChan <- db.moveOneBinOfCachedSerialsToStorage(tmpDir, expDate, issuer)
wg.Done()
}(issuerDate.ExpDates[i])
}
wg.Wait()
close(errChan)
for err := range errChan {
if err != nil {
return err
}
}
}
}
return nil
}