diff options
author | James Fargher <jfargher@gitlab.com> | 2023-09-14 07:25:59 +0300 |
---|---|---|
committer | James Fargher <jfargher@gitlab.com> | 2023-09-14 07:25:59 +0300 |
commit | 1109a5c2dde4886515243f7b2a9feeeca6aef394 (patch) | |
tree | 300b79329e0d270c965e8a4e30b7bfadfd5b748c | |
parent | 6dc646f9fa0de6e676f6a77cbbfca2006f78fa11 (diff) |
backup: Buffer small writesadd_benchmarking_backup_repository
-rw-r--r-- | internal/backup/backup.go | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/internal/backup/backup.go b/internal/backup/backup.go index 07d3ad73b..cad8cefd9 100644 --- a/internal/backup/backup.go +++ b/internal/backup/backup.go @@ -1,6 +1,7 @@ package backup import ( + "bufio" "bytes" "context" "errors" @@ -392,6 +393,7 @@ func (mgr *Manager) negatedKnownRefs(ctx context.Context, step *Step) (io.ReadCl } defer reader.Close() + buf := bufio.NewWriter(w) d := git.NewShowRefDecoder(reader) for { var ref git.Reference @@ -403,11 +405,16 @@ func (mgr *Manager) negatedKnownRefs(ctx context.Context, step *Step) (io.ReadCl return } - if _, err := fmt.Fprintf(w, "^%s\n", ref.Target); err != nil { + if _, err := fmt.Fprintf(buf, "^%s\n", ref.Target); err != nil { _ = w.CloseWithError(err) return } } + + if err := buf.Flush(); err != nil { + _ = w.CloseWithError(err) + return + } }() return r, nil @@ -495,13 +502,19 @@ func (mgr *Manager) writeRefs(ctx context.Context, path string, refs []git.Refer } }() + buf := bufio.NewWriter(w) + for _, ref := range refs { - _, err = fmt.Fprintf(w, "%s %s\n", ref.Target, ref.Name) + _, err = fmt.Fprintf(buf, "%s %s\n", ref.Target, ref.Name) if err != nil { return fmt.Errorf("write refs: %w", err) } } + if err := buf.Flush(); err != nil { + return fmt.Errorf("write refs: %w", err) + } + return nil } |