1. Jan 25, 2020
  2. Jan 24, 2020
  3. Jan 23, 2020
    • Szymon Romik's avatar
      Merge pull request #613 from igchor/stable-1.8-hash_map_erase_fix · 6ab2d17d
      Szymon Romik authored
      Backport hash map erase fix to stable 1.8
      6ab2d17d
    • Igor Chorazewicz's avatar
      d630ba85
    • Igor Chorazewicz's avatar
      concurrent_hash_map: fix possible deadlock in erase · 5b7527b0
      Igor Chorazewicz authored
      Consider the following scenario (where A and B are in the same bucket):
      thread 1:		thread 2:
      find(acc1, A)
      			erase(A)
      find(acc2, B)
      
      First, thread 1 takes lock on the bucket and then on element A.
      Then, thread 2 takes a lock on the bucket and tries to lock element A
      but it can't because thread 1 already locked it - this way thread 2 is blocked.
      Next, thread 1 tries to lock the bucket but it can't because thread 2 holds it.
      Neither thread can progress.
      
      This patch fixes that by introducing the same algorithm as in lookup/insert.
      When trying to lock element in erase we now spin in a loop doing try_acquire and
      if we do not succeed after specified amount of time we drop bucket lock and try
      whole operation again.
      5b7527b0
  4. Jan 14, 2020
  5. Jan 10, 2020
  6. Jan 03, 2020
  7. Dec 31, 2019
  8. Dec 24, 2019
  9. Dec 13, 2019
  10. Dec 12, 2019
  11. Dec 04, 2019
  12. Dec 03, 2019
  13. Dec 02, 2019
  14. Nov 29, 2019
  15. Nov 19, 2019
  16. Nov 14, 2019