syncthing/lib/db
greatroar 9f92f8c609
lib/db: Use SipHash to deal with hash collision in GC (#6826)
If the GC finds a key k that it wants to keep, it records that in a
Bloom filter. If a key k' can be removed but its hash collides with k,
it will be kept. Since the old Bloom filter code was completely
deterministic, the next run would encounter the same collision, assuming
k must still be kept.

A randomized hash function that uses all the SHA-256 bits solves this
problem: the second run has a non-zero probability of removing k', as
long as the Bloom filter is not completely full.
2020-07-11 09:36:09 +02:00
..
backend all: Make all error implementations pointer types (#6726) 2020-06-16 09:27:34 +02:00
testdata lib/db, lib/model: Keep need stats in metadata (ref #5899) (#6413) 2020-05-11 15:07:06 +02:00
.gitignore Change DB label format (index folders, devices) 2016-01-03 19:32:40 +01:00
benchmark_test.go lib/db: Refactor to use global list by version (fixes #6372) (#6638) 2020-05-30 09:50:23 +02:00
blockmap_test.go lib/db: Use Commit() instead of commit() (#6330) 2020-02-12 11:59:55 +01:00
blockmap.go lib/db: Remove unused blockFinder global (#6534) 2020-04-14 17:09:59 +02:00
db_test.go lib/db: Add test for GC run 2020-07-11 09:22:15 +02:00
debug.go all, lib/logger: Refactor SetDebug calls (#6054) 2019-10-04 13:03:34 +02:00
keyer_test.go lib/db: Remove unused keyer methods (#6723) 2020-06-08 19:19:18 +01:00
keyer.go lib/db: Use explicit byte type for type prefixes (#6754) 2020-06-17 09:37:07 +02:00
lowlevel.go lib/db: Use SipHash to deal with hash collision in GC (#6826) 2020-07-11 09:36:09 +02:00
meta_test.go lib/db, lib/model: Keep need stats in metadata (ref #5899) (#6413) 2020-05-11 15:07:06 +02:00
meta.go lib/db: Correct need accounting on reset (fixes #6784) (#6785) 2020-06-23 07:29:27 +02:00
namespaced_test.go lib/db, lib/model: Code simplifications (#6484) 2020-03-31 14:32:24 +02:00
namespaced.go cmd/syncthing, lib/db: Store upgrade info to throttle queries (fixes #6513) (#6514) 2020-04-13 10:21:07 +02:00
schemaupdater.go all: Make all error implementations pointer types (#6726) 2020-06-16 09:27:34 +02:00
set_test.go lib/protocol: Add BlocksHash to FileInfo string (#6802) 2020-06-27 07:44:33 +02:00
set.go lib/db: Refactor to use global list by version (fixes #6372) (#6638) 2020-05-30 09:50:23 +02:00
smallindex_test.go Implement database abstraction, error checking (ref #5907) (#6107) 2019-11-29 09:11:52 +01:00
smallindex.go Implement database abstraction, error checking (ref #5907) (#6107) 2019-11-29 09:11:52 +01:00
structs.go lib/db: Refactor to use global list by version (fixes #6372) (#6638) 2020-05-30 09:50:23 +02:00
structs.pb.go lib/db: Refactor to use global list by version (fixes #6372) (#6638) 2020-05-30 09:50:23 +02:00
structs.proto lib/db: Refactor to use global list by version (fixes #6372) (#6638) 2020-05-30 09:50:23 +02:00
transactions.go lib/protocol: Avoid panic in DeviceIDFromBytes (#6714) 2020-06-07 10:31:12 +02:00
util_test.go lib/db, lib/model: Keep need stats in metadata (ref #5899) (#6413) 2020-05-11 15:07:06 +02:00