Skip to content

Commit c6d0e23

Browse files
committed
Add option to disable logger during saving to S3
During physical restore logger data are stored on the storage. Therefore logging during S3 Save opration is not the option, the logging buffer will get full and will cause deadlock. This commit adds option for S3.Save method to dissable logger. During physical restore logBuffer implementation uses that option to dissable logger during Save just when logBuffer does writes to the storage.
1 parent 3ccdd70 commit c6d0e23

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pbm/restore/physical.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,9 @@ func (r *PhysRestore) Snapshot(
987987
buf: &bytes.Buffer{},
988988
path: fmt.Sprintf("%s/%s/rs.%s/log/%s", defs.PhysRestoresDir, r.name, r.rsConf.ID, r.nodeInfo.Me),
989989
limit: 1 << 20, // 1Mb
990-
write: func(name string, data io.Reader) error { return r.stg.Save(name, data, -1) },
990+
write: func(name string, data io.Reader) error {
991+
return r.stg.Save(name, data, -1, storage.UseLogger(false))
992+
},
991993
})
992994
logger.PauseMgo()
993995

pbm/storage/s3/s3.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,12 @@ func (*S3) Type() storage.Type {
315315
}
316316

317317
func (s *S3) Save(name string, data io.Reader, sizeb int64, options ...storage.Option) error {
318+
opts := storage.GetDefaultOpts()
319+
for _, opt := range options {
320+
if err := opt(opts); err != nil {
321+
return errors.Wrap(err, "processing options for save")
322+
}
323+
}
318324
cc := runtime.NumCPU() / 2
319325
if cc == 0 {
320326
cc = 1
@@ -367,7 +373,7 @@ func (s *S3) Save(name string, data io.Reader, sizeb int64, options ...storage.O
367373
}
368374
}
369375

370-
if s.log != nil {
376+
if s.log != nil && opts.UseLogger {
371377
s.log.Debug("uploading %q [size hint: %v (%v); part size: %v (%v)]",
372378
name,
373379
sizeb,

0 commit comments

Comments
 (0)