|
|
@ -289,6 +289,9 @@ func (v *Volume) makeupDiff(newDatFileName, newIdxFileName, oldDatFileName, oldI |
|
|
|
return fmt.Errorf("ReadNeedleBlob %s key %d offset %d size %d failed: %v", oldDatFile.Name(), key, increIdxEntry.offset.ToActualOffset(), increIdxEntry.size, err) |
|
|
|
} |
|
|
|
dstDatBackend.Write(needleBytes) |
|
|
|
if err := dstDatBackend.Sync(); err != nil { |
|
|
|
return fmt.Errorf("cannot sync needle %s: %v", dstDatBackend.File.Name(), err) |
|
|
|
} |
|
|
|
util.Uint32toBytes(idxEntryBytes[8:12], uint32(offset/NeedlePaddingSize)) |
|
|
|
} else { //deleted needle
|
|
|
|
//fakeDelNeedle 's default Data field is nil
|
|
|
@ -308,6 +311,12 @@ func (v *Volume) makeupDiff(newDatFileName, newIdxFileName, oldDatFileName, oldI |
|
|
|
newIdxFileName, err) |
|
|
|
} |
|
|
|
_, err = idx.Write(idxEntryBytes) |
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("cannot write indexfile %s: %v", newIdxFileName, err) |
|
|
|
} |
|
|
|
if err := idx.Sync(); err != nil { |
|
|
|
return fmt.Errorf("cannot sync indexfile %s: %v", newIdxFileName, err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|