Young-Seok Kim created ASTERIXDB-1147:
-----------------------------------------
Summary: ConcurrentLockManager's performance bug when there are
many locks on a single resource, such as dataset level lock
Key: ASTERIXDB-1147
URL: https://issues.apache.org/jira/browse/ASTERIXDB-1147
Project: Apache AsterixDB
Issue Type: Bug
Reporter: Young-Seok Kim
If a query scan a dataset which includes 1M records, the scan operator acquires
1M instantTryLocks.
Internally, ConcurrentLockManager holds 1M tryLocks in dataset level and 1M
instantTryLocks in entity level. In other words, 1M dataset level locks are not
released until the job is over.
If this situation happens, ConcurrentLockManager allocates 1M lockRequestSlots
during lock acquiring phase and those slots are maintained in a linked list.
Thus, when the job is over, those slots for the dataset level locks are
released one at a time by searching each slot for each dataset level lock held
by scanning the linked list. Thus, 1M slots of linked list is scanned 1M times.
This is killing the scan performance.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)