Conversation
There are race conditions when Set or Del are called at the same time than Clear or Close since the latter functions modify setBuf.
manishrjain
left a comment
There was a problem hiding this comment.
Reviewed 1 of 1 files at r1.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @jarifibrahim, @karlmcguire, and @martinmr)
cache.go, line 299 at r1 (raw file):
// Swap out the setBuf channel. c.setBufLock.Lock() c.setBuf = make(chan *item, setBufSize)
Instead of make chan. I could do a for loop and empty the chan out.
Let's not use locks.
martinmr
left a comment
There was a problem hiding this comment.
Reviewable status: 0 of 1 files reviewed, 1 unresolved discussion (waiting on @jarifibrahim, @karlmcguire, and @manishrjain)
cache.go, line 299 at r1 (raw file):
Previously, manishrjain (Manish R Jain) wrote…
Instead of make chan. I could do a for loop and empty the chan out.
Let's not use locks.
Done.
manishrjain
left a comment
There was a problem hiding this comment.
Reviewed 1 of 1 files at r2.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on @jarifibrahim and @karlmcguire)
manishrjain
left a comment
There was a problem hiding this comment.
Reviewable status:
complete! all files reviewed, all discussions resolved (waiting on @jarifibrahim and @karlmcguire)
The update brings following changes from ristretto into badger ``` f66de99 Improve handling of updated items (dgraph-io/ristretto#168) aec7994 Fix flaky TestCacheDel test (dgraph-io/ristretto#169) a093fe6 Add benchmark plots to the project repo (dgraph-io/ristretto#166) 49dc42c Add Anurag as codeowner (dgraph-io/ristretto#158) 7a3f2d3 z: use MemHashString and xxhash.Sum64String (dgraph-io/ristretto#153) 9c31bb2 Check conflict key before updating expiration map. (dgraph-io/ristretto#154) 62cb731 Fix race condition in Cache.Clear (dgraph-io/ristretto#133) 9af1934 Docs and whitespace changes for readability. (dgraph-io/ristretto#143) dbc185e Add changelog. (dgraph-io/ristretto#142) ff325ad Remove key from policy after TTL eviction (dgraph-io/ristretto#130) 2dd5ff5 Use the require library in all the tests. (dgraph-io/ristretto#128) 7c48141 Use require in all tests in cache_test.go (dgraph-io/ristretto#127) 51e97ad Sets with TTL (dgraph-io/ristretto#122) d3e7c37 Add benchmarks for math.rand and fastrand (dgraph-io/ristretto#118) 593823e Integrate fixes from PR dgraph-io/ristretto#91. (dgraph-io/ristretto#126) 29b4dd7 Fix comments. (dgraph-io/ristretto#123) ddf345c Removed workflows directory. (dgraph-io/ristretto#124) eb104d0 Add martinmr to CODEOWNERS file. (dgraph-io/ristretto#125) ```
The update brings following changes from ristretto into badger ``` f66de99 Improve handling of updated items (dgraph-io/ristretto#168) aec7994 Fix flaky TestCacheDel test (dgraph-io/ristretto#169) a093fe6 Add benchmark plots to the project repo (dgraph-io/ristretto#166) 49dc42c Add Anurag as codeowner (dgraph-io/ristretto#158) 7a3f2d3 z: use MemHashString and xxhash.Sum64String (dgraph-io/ristretto#153) 9c31bb2 Check conflict key before updating expiration map. (dgraph-io/ristretto#154) 62cb731 Fix race condition in Cache.Clear (dgraph-io/ristretto#133) 9af1934 Docs and whitespace changes for readability. (dgraph-io/ristretto#143) dbc185e Add changelog. (dgraph-io/ristretto#142) ff325ad Remove key from policy after TTL eviction (dgraph-io/ristretto#130) 2dd5ff5 Use the require library in all the tests. (dgraph-io/ristretto#128) 7c48141 Use require in all tests in cache_test.go (dgraph-io/ristretto#127) 51e97ad Sets with TTL (dgraph-io/ristretto#122) d3e7c37 Add benchmarks for math.rand and fastrand (dgraph-io/ristretto#118) 593823e Integrate fixes from PR dgraph-io/ristretto#91. (dgraph-io/ristretto#126) 29b4dd7 Fix comments. (dgraph-io/ristretto#123) ddf345c Removed workflows directory. (dgraph-io/ristretto#124) eb104d0 Add martinmr to CODEOWNERS file. (dgraph-io/ristretto#125) ``` (cherry picked from commit 09dfa66)
The update brings following changes from ristretto into badger ``` f66de99 Improve handling of updated items (dgraph-io/ristretto#168) aec7994 Fix flaky TestCacheDel test (dgraph-io/ristretto#169) a093fe6 Add benchmark plots to the project repo (dgraph-io/ristretto#166) 49dc42c Add Anurag as codeowner (dgraph-io/ristretto#158) 7a3f2d3 z: use MemHashString and xxhash.Sum64String (dgraph-io/ristretto#153) 9c31bb2 Check conflict key before updating expiration map. (dgraph-io/ristretto#154) 62cb731 Fix race condition in Cache.Clear (dgraph-io/ristretto#133) 9af1934 Docs and whitespace changes for readability. (dgraph-io/ristretto#143) dbc185e Add changelog. (dgraph-io/ristretto#142) ff325ad Remove key from policy after TTL eviction (dgraph-io/ristretto#130) 2dd5ff5 Use the require library in all the tests. (dgraph-io/ristretto#128) 7c48141 Use require in all tests in cache_test.go (dgraph-io/ristretto#127) 51e97ad Sets with TTL (dgraph-io/ristretto#122) d3e7c37 Add benchmarks for math.rand and fastrand (dgraph-io/ristretto#118) 593823e Integrate fixes from PR dgraph-io/ristretto#91. (dgraph-io/ristretto#126) 29b4dd7 Fix comments. (dgraph-io/ristretto#123) ddf345c Removed workflows directory. (dgraph-io/ristretto#124) eb104d0 Add martinmr to CODEOWNERS file. (dgraph-io/ristretto#125) ```
The update brings following changes from ristretto into badger ``` f66de99 Improve handling of updated items (dgraph-io/ristretto#168) aec7994 Fix flaky TestCacheDel test (dgraph-io/ristretto#169) a093fe6 Add benchmark plots to the project repo (dgraph-io/ristretto#166) 49dc42c Add Anurag as codeowner (dgraph-io/ristretto#158) 7a3f2d3 z: use MemHashString and xxhash.Sum64String (dgraph-io/ristretto#153) 9c31bb2 Check conflict key before updating expiration map. (dgraph-io/ristretto#154) 62cb731 Fix race condition in Cache.Clear (dgraph-io/ristretto#133) 9af1934 Docs and whitespace changes for readability. (dgraph-io/ristretto#143) dbc185e Add changelog. (dgraph-io/ristretto#142) ff325ad Remove key from policy after TTL eviction (dgraph-io/ristretto#130) 2dd5ff5 Use the require library in all the tests. (dgraph-io/ristretto#128) 7c48141 Use require in all tests in cache_test.go (dgraph-io/ristretto#127) 51e97ad Sets with TTL (dgraph-io/ristretto#122) d3e7c37 Add benchmarks for math.rand and fastrand (dgraph-io/ristretto#118) 593823e Integrate fixes from PR dgraph-io/ristretto#91. (dgraph-io/ristretto#126) 29b4dd7 Fix comments. (dgraph-io/ristretto#123) ddf345c Removed workflows directory. (dgraph-io/ristretto#124) eb104d0 Add martinmr to CODEOWNERS file. (dgraph-io/ristretto#125) ```
There are race conditions when Set or Del are called at the same time
as Clear. Instead of creating a new channel, Clear now processes all the
entries from the channel.
Fixes #132
This change is