bugfix: read too much data when receiving rdb

v4
suxb201 2 years ago
parent 5624e96f1e
commit efad9c069d
  1. 19
      internal/reader/psync.go

@ -154,15 +154,20 @@ func (r *psyncReader) saveRDB() {
}
// read rdb
var readTotal int64 = 0
buf := make([]byte, 32*1024*1024)
for readTotal < length {
n, err := r.rd.Read(buf)
remainder := length
const bufSize int64 = 32 * 1024 * 1024 // 32MB
buf := make([]byte, bufSize)
for remainder != 0 {
readOnce := bufSize
if remainder < readOnce {
readOnce = remainder
}
n, err := r.rd.Read(buf[:readOnce])
if err != nil {
log.PanicError(err)
}
readTotal += int64(n)
statistics.UpdateRDBReceivedSize(readTotal)
remainder -= int64(n)
statistics.UpdateRDBReceivedSize(length - remainder)
_, err = rdbFileHandle.Write(buf[:n])
if err != nil {
log.PanicError(err)
@ -172,7 +177,7 @@ func (r *psyncReader) saveRDB() {
if err != nil {
log.PanicError(err)
}
log.Infof("save RDB finished. address=[%s], total_bytes=[%d]", r.address, readTotal)
log.Infof("save RDB finished. address=[%s], total_bytes=[%d]", r.address, length)
}
func (r *psyncReader) saveAOF(rd io.Reader) {

Loading…
Cancel
Save