Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Martinez <jmartinez@gitlab.com>2022-07-05 08:04:14 +0300
committerJaime Martinez <jmartinez@gitlab.com>2022-07-05 08:04:14 +0300
commitf85c07170b2cbfb50cb9375689f15cf09492dee9 (patch)
treeb2bdc64e8f5cd51d68b63b7d001e7a21501f1fa7
parentece2a232bafa09a1f037de514899003cc5b364d2 (diff)
parentf94de222c0e4d228a981a493d088fdc1173c3513 (diff)
Merge branch 'perf/nil-zip-archive' into 'master'
perf: null out zip reader after reading archive See merge request gitlab-org/gitlab-pages!804
-rw-r--r--internal/vfs/zip/archive.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/internal/vfs/zip/archive.go b/internal/vfs/zip/archive.go
index 9f01794b..2b04310d 100644
--- a/internal/vfs/zip/archive.go
+++ b/internal/vfs/zip/archive.go
@@ -56,7 +56,6 @@ type zipArchive struct {
resource *httprange.Resource
reader *httprange.RangedReader
- archive *zip.Reader
err error
files map[string]*zip.File
@@ -128,13 +127,15 @@ func (a *zipArchive) readArchive(url string) {
return
}
+ var archive *zip.Reader
+
// load all archive files into memory using a cached ranged reader
a.reader = httprange.NewRangedReader(a.resource)
a.reader.WithCachedReader(ctx, func() {
- a.archive, a.err = zip.NewReader(a.reader, a.resource.Size)
+ archive, a.err = zip.NewReader(a.reader, a.resource.Size)
})
- if a.archive == nil || a.err != nil {
+ if archive == nil || a.err != nil {
log.WithFields(log.Fields{
"archive_url": url,
}).WithError(a.err).Infoln("loading zip archive files into memory failed")
@@ -143,7 +144,7 @@ func (a *zipArchive) readArchive(url string) {
}
// TODO: Improve preprocessing of zip archives https://gitlab.com/gitlab-org/gitlab-pages/-/issues/432
- for _, file := range a.archive.File {
+ for _, file := range archive.File {
if !strings.HasPrefix(file.Name, dirPrefix) {
continue
}
@@ -164,8 +165,10 @@ func (a *zipArchive) readArchive(url string) {
a.addPathDirectory(file.Name)
}
- // recycle memory
- a.archive.File = nil
+ // Each file stores a pointer to the zip.reader.
+ // The file slice is not used so we null it out
+ // to reduce memory consumption.
+ archive.File = nil
fileCount := float64(len(a.files))
metrics.ZipOpened.WithLabelValues("ok").Inc()