fix: prevent OOM when archiving large tasks
This commit is contained in:
1 parent
1fcc4b0588
commit
0ec45bb45d
11 files changed
+605
-87
No files matched your search
@@ -480,11 +480,20 @@ func writeTaskArchivePackage(path, payloadDir string, snapshot *pgdb.TaskArchive
|
||||
if err = os.MkdirAll(filepath.Dir(path), archiveDirMode); err != nil {
|
||||
return 0, 0, "", err
|
||||
}
|
||||
manifest, err := json.Marshal(snapshot)
|
||||
manifestFile, err := os.OpenFile(
|
||||
filepath.Join(payloadDir, "manifest.json"),
|
||||
os.O_CREATE|os.O_TRUNC|os.O_WRONLY,
|
||||
archiveFileMode,
|
||||
)
|
||||
if err != nil {
|
||||
return 0, 0, "", err
|
||||
}
|
||||
if err = os.WriteFile(filepath.Join(payloadDir, "manifest.json"), manifest, archiveFileMode); err != nil {
|
||||
encodeErr := json.NewEncoder(manifestFile).Encode(snapshot)
|
||||
var syncErr error
|
||||
if encodeErr == nil {
|
||||
syncErr = manifestFile.Sync()
|
||||
}
|
||||
if err := errors.Join(encodeErr, syncErr, manifestFile.Close()); err != nil {
|
||||
return 0, 0, "", err
|
||||
}
|
||||
temporary := path + ".partial"
|
||||
|
||||
Reference in new issue
Block a user