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:
authorVladimir Shushlin <v.shushlin@gmail.com>2022-02-10 17:58:22 +0300
committerVladimir Shushlin <v.shushlin@gmail.com>2022-02-10 17:58:22 +0300
commit9ee57093f3a53110689fd38295747ce8c47a634e (patch)
tree3deb1480eb86665456ae500c01aa2f1f1d082045
parent4be18c70ba9ddc62237dcf0a534c57540829cc9e (diff)
-rw-r--r--internal/config/config.go28
-rw-r--r--internal/config/flags.go5
-rw-r--r--internal/vfs/zip/vfs.go20
3 files changed, 27 insertions, 26 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index 3bb7b126..aafe0787 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -123,11 +123,15 @@ type TLS struct {
// ZipServing groups settings to be used by the zip VFS opening and caching
type ZipServing struct {
- ExpirationInterval time.Duration
- CleanupInterval time.Duration
- RefreshInterval time.Duration
- OpenTimeout time.Duration
- AllowedPaths []string
+ ExpirationInterval time.Duration
+ CleanupInterval time.Duration
+ RefreshInterval time.Duration
+ FileOffsetCacheMaxSize int64
+ FileOffsetCacheExpiration time.Duration
+ ReadLinkOffsetCacheMaxSize int64
+ ReadLinkOffsetCacheExpiration time.Duration
+ OpenTimeout time.Duration
+ AllowedPaths []string
}
func internalGitlabServerFromFlags() string {
@@ -221,11 +225,15 @@ func loadConfig() (*Config, error) {
MaxVersion: tls.AllTLSVersions[*tlsMaxVersion],
},
Zip: ZipServing{
- ExpirationInterval: *zipCacheExpiration,
- CleanupInterval: *zipCacheCleanup,
- RefreshInterval: *zipCacheRefresh,
- OpenTimeout: *zipOpenTimeout,
- AllowedPaths: []string{*pagesRoot},
+ ExpirationInterval: *zipCacheExpiration,
+ CleanupInterval: *zipCacheCleanup,
+ RefreshInterval: *zipCacheRefresh,
+ FileOffsetCacheMaxSize: int64(*zipFileOffsetCacheMaxSize),
+ FileOffsetCacheExpiration: *zipFileOffsetCacheExpiration,
+ ReadLinkOffsetCacheMaxSize: int64(*zipReadLinkOffsetCacheMaxSize),
+ ReadLinkOffsetCacheExpiration: *zipReadLinkOffsetCacheExpiration,
+ OpenTimeout: *zipOpenTimeout,
+ AllowedPaths: []string{*pagesRoot},
},
// Actual listener pointers will be populated in appMain. We populate the
diff --git a/internal/config/flags.go b/internal/config/flags.go
index 93228827..054087ca 100644
--- a/internal/config/flags.go
+++ b/internal/config/flags.go
@@ -62,6 +62,11 @@ var (
zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval")
zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout")
+ zipFileOffsetCacheMaxSize = flag.Int("zip-file-offset-cache-max-size", 50000, "TODO")
+ zipFileOffsetCacheExpiration = flag.Duration("zip-file-offset-expiration", time.Hour, "TODO")
+ zipReadLinkOffsetCacheMaxSize = flag.Int("zip-read-link-offset-cache-max-size", 10000, "TODO")
+ zipReadLinkOffsetCacheExpiration = flag.Duration("zip-read-link-offset-expiration", time.Hour, "TODO")
+
disableCrossOriginRequests = flag.Bool("disable-cross-origin-requests", false, "Disable cross-origin requests")
showVersion = flag.Bool("version", false, "Show version")
diff --git a/internal/vfs/zip/vfs.go b/internal/vfs/zip/vfs.go
index d0608c81..ea237fd1 100644
--- a/internal/vfs/zip/vfs.go
+++ b/internal/vfs/zip/vfs.go
@@ -19,18 +19,6 @@ import (
"gitlab.com/gitlab-org/gitlab-pages/metrics"
)
-const (
- // we assume that each item costs around 100 bytes
- // this gives around 5MB of raw memory needed without acceleration structures
- defaultDataOffsetItems = 50000
- defaultDataOffsetExpirationInterval = time.Hour
-
- // we assume that each item costs around 200 bytes
- // this gives around 2MB of raw memory needed without acceleration structures
- defaultReadlinkItems = 10000
- defaultReadlinkExpirationInterval = time.Hour
-)
-
var (
errAlreadyCached = errors.New("archive already cached")
errMissingCacheKey = errors.New("missing cache key")
@@ -87,15 +75,15 @@ func New(cfg *config.ZipServing) vfs.VFS {
// TODO: To be removed with https://gitlab.com/gitlab-org/gitlab-pages/-/issues/480
zipVFS.dataOffsetCache = lru.New(
"data-offset",
- lru.WithMaxSize(defaultDataOffsetItems),
- lru.WithExpirationInterval(defaultDataOffsetExpirationInterval),
+ lru.WithMaxSize(cfg.FileOffsetCacheMaxSize),
+ lru.WithExpirationInterval(cfg.FileOffsetCacheExpiration),
lru.WithCachedEntriesMetric(metrics.ZipCachedEntries),
lru.WithCachedRequestsMetric(metrics.ZipCacheRequests),
)
zipVFS.readlinkCache = lru.New(
"readlink",
- lru.WithMaxSize(defaultReadlinkItems),
- lru.WithExpirationInterval(defaultReadlinkExpirationInterval),
+ lru.WithMaxSize(cfg.ReadLinkOffsetCacheMaxSize),
+ lru.WithExpirationInterval(cfg.ReadLinkOffsetCacheExpiration),
lru.WithCachedEntriesMetric(metrics.ZipCachedEntries),
lru.WithCachedRequestsMetric(metrics.ZipCacheRequests),
)