Skip to content

Commit e89d85a

Browse files
authored
Merge pull request #129 from mcarmonaa/fix/remove-tmp-siva-on-error
pga-create: fix clean temp siva files on indexer error
2 parents b69531c + 75e5ca6 commit e89d85a

1 file changed

Lines changed: 26 additions & 18 deletions

File tree

PublicGitArchive/pga-create/process.go

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"os"
99
"path/filepath"
1010
"regexp"
11-
"runtime"
11+
"runtime/debug"
1212
"sort"
1313
"strings"
1414
"sync"
@@ -139,7 +139,7 @@ func processRepos(
139139
rs *model.RepositoryResultSet,
140140
stars map[string]uint32,
141141
) <-chan *repositoryData {
142-
logrus.WithField("workers", runtime.NumCPU()).Info("start processing repos")
142+
logrus.WithField("workers", workers).Info("start processing repos")
143143
start := time.Now()
144144
defer func() {
145145
logrus.WithField("elapsed", time.Since(start)).Debug("finished processing repos")
@@ -240,27 +240,34 @@ func (p *processor) process() (*repositoryData, error) {
240240

241241
mut := p.locker.lock(head.String())
242242
mut.Lock()
243-
tx, err := p.txer.Begin(context.TODO(), plumbing.NewHash(head.String()))
244-
if err != nil {
245-
mut.Unlock()
246-
return nil, fmt.Errorf("can't start transaction: %s", err)
247-
}
248243

249-
p.repo, err = git.Open(tx.Storer(), nil)
250-
if err != nil {
251-
mut.Unlock()
252-
return nil, fmt.Errorf("can't open git repo: %s", err)
253-
}
244+
var data *repositoryData
245+
err := func() error {
246+
defer mut.Unlock()
247+
248+
tx, err := p.txer.Begin(context.TODO(), plumbing.NewHash(head.String()))
249+
if err != nil {
250+
return fmt.Errorf("can't start transaction: %s", err)
251+
}
252+
defer tx.Rollback()
253+
254+
p.repo, err = git.Open(tx.Storer(), nil)
255+
if err != nil {
256+
return fmt.Errorf("can't open git repo: %s", err)
257+
}
258+
259+
data, err = p.data()
260+
if err != nil {
261+
return fmt.Errorf("unable to get repo data: %s", err)
262+
}
263+
264+
return nil
265+
}()
254266

255-
data, err := p.data()
256267
if err != nil {
257-
mut.Unlock()
258-
return nil, fmt.Errorf("unable to get repo data: %s", err)
268+
return nil, err
259269
}
260270

261-
mut.Unlock()
262-
_ = tx.Rollback()
263-
264271
log = log.WithField("url", data.URL)
265272
var sumOfSivaSizes int64
266273
for init := range inits {
@@ -333,6 +340,7 @@ func (p *processor) process() (*repositoryData, error) {
333340
data.SivaFiles = sivaFiles(inits)
334341
data.Size = sumOfSivaSizes
335342

343+
debug.FreeOSMemory()
336344
return data, nil
337345
}
338346

0 commit comments

Comments
 (0)