Fix locking in runtime and hashmap storage

This commit is contained in:
Patrick Pacher 2020-09-18 12:11:05 +02:00
parent 75ab99d681
commit 19f75bb6ca
No known key found for this signature in database
GPG key ID: E8CD2DA160925A6D
2 changed files with 14 additions and 22 deletions

View file

@ -104,17 +104,16 @@ func (hm *HashMap) queryExecutor(queryIter *iterator.Iterator, q *query.Query, l
mapLoop:
for key, record := range hm.db {
record.Lock()
if !q.MatchesKey(key) ||
!q.MatchesRecord(record) ||
!record.Meta().CheckValidity() ||
!record.Meta().CheckPermission(local, internal) {
switch {
case !q.MatchesKey(key):
continue
case !q.MatchesRecord(record):
continue
case !record.Meta().CheckValidity():
continue
case !record.Meta().CheckPermission(local, internal):
record.Unlock()
continue
}
record.Unlock()
select {
case <-queryIter.Done: