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

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <jfargher@gitlab.com>2023-09-14 07:25:59 +0300
committerJames Fargher <jfargher@gitlab.com>2023-09-14 07:25:59 +0300
commit1109a5c2dde4886515243f7b2a9feeeca6aef394 (patch)
tree300b79329e0d270c965e8a4e30b7bfadfd5b748c
parent6dc646f9fa0de6e676f6a77cbbfca2006f78fa11 (diff)
backup: Buffer small writesadd_benchmarking_backup_repository
-rw-r--r--internal/backup/backup.go17
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
}