func()

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
}