Keep application/octet-stream out of memory for variants (closes #70)

VariantStorage.LoadWithMeta now returns an empty content type when the
.meta file is missing or unreadable, and GetVariant serves
application/octet-stream in that case without keeping it in memory.
Memory now only ever holds a content type read from a .meta file or
passed to StoreVariant, so a read that ran before a store wrote the
.meta file can no longer leave the wrong type in memory, however it
interleaves with the store, other reads and eviction.

Model: opus-5-5
This commit is contained in:
2026-09-29 09:28:49 +00:00
parent 8be21c005f
commit 314fbd186d
4 changed files with 25 additions and 15 deletions
+4 -3
View File
@@ -531,7 +531,8 @@ func (s *VariantStorage) LoadWithSize(key VariantKey) (io.ReadCloser, int64, err
}
// LoadWithMeta returns a reader, size, and content type for the content at
// the given key.
// the given key. The content type is read from the .meta file, and is
// empty when that file is missing or unreadable.
func (s *VariantStorage) LoadWithMeta(
key VariantKey,
) (io.ReadCloser, int64, string, error) {
@@ -540,8 +541,8 @@ func (s *VariantStorage) LoadWithMeta(
return nil, 0, "", err
}
// Load metadata for content type
contentType := "application/octet-stream" // fallback
var contentType string
metaPath := s.keyToPath(key) + ".meta"
metaData, err := os.ReadFile(metaPath) //nolint:gosec // path derived from cache key