Prevent double-close for SFTP client

This commit is contained in:
Ben Johnson
2022-03-05 11:28:31 -07:00
parent 07d220028a
commit d5792c42b9
3 changed files with 47 additions and 4 deletions

View File

@@ -270,12 +270,13 @@ func (c *ReplicaClient) WriteSnapshot(ctx context.Context, generation string, in
if err != nil {
return info, fmt.Errorf("cannot open snapshot file for writing: %w", err)
}
defer f.Close()
closer := internal.OnceCloser(f)
defer closer.Close()
n, err := io.Copy(f, rd)
if err != nil {
return info, err
} else if err := f.Close(); err != nil {
} else if err := closer.Close(); err != nil {
return info, err
}
@@ -391,12 +392,13 @@ func (c *ReplicaClient) WriteWALSegment(ctx context.Context, pos litestream.Pos,
if err != nil {
return info, fmt.Errorf("cannot open snapshot file for writing: %w", err)
}
defer f.Close()
closer := internal.OnceCloser(f)
defer closer.Close()
n, err := io.Copy(f, rd)
if err != nil {
return info, err
} else if err := f.Close(); err != nil {
} else if err := closer.Close(); err != nil {
return info, err
}