chore: remove weak hashing which does not pull its weight (#10005)
We've had weak/rolling hashing in the code for quite a while. It was a popular request for a while, based on the belief that rsync does this and we should too. However, the benefit is quite small; we save on average about 0.8% of transferred blocks over the population as a whole: <img width="974" alt="Screenshot 2025-03-28 at 17 09 02" src="https://github.com/user-attachments/assets/bbe10dea-f85e-4043-9823-7cef1220b4a2" /> This would be fine if the cost was comparably low, however the downside of attempting rolling hash matching is that we (by default) do a complete file read on the destination in order to look for matches before we starting pulling blocks for the file. For any larger file this means a sometimes long, I/O-intensive pause before the file starts syncing, for usually no benefit. I propose we simply rip off the bandaid and save the effort.
This commit is contained in:
@@ -25,7 +25,6 @@ type Request struct {
|
||||
Size int
|
||||
Hash []byte
|
||||
FromTemporary bool
|
||||
WeakHash uint32
|
||||
BlockNo int
|
||||
}
|
||||
|
||||
@@ -38,7 +37,6 @@ func (r *Request) toWire() *bep.Request {
|
||||
Size: int32(r.Size),
|
||||
Hash: r.Hash,
|
||||
FromTemporary: r.FromTemporary,
|
||||
WeakHash: r.WeakHash,
|
||||
BlockNo: int32(r.BlockNo),
|
||||
}
|
||||
}
|
||||
@@ -52,7 +50,6 @@ func requestFromWire(w *bep.Request) *Request {
|
||||
Size: int(w.Size),
|
||||
Hash: w.Hash,
|
||||
FromTemporary: w.FromTemporary,
|
||||
WeakHash: w.WeakHash,
|
||||
BlockNo: int(w.BlockNo),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user