Zhong Yanghong created KYLIN-2716:
-------------------------------------
Summary: WeakHashMap in ClassUtil leading to server high cpu and
some query doesn't respond
Key: KYLIN-2716
URL: https://issues.apache.org/jira/browse/KYLIN-2716
Project: Kylin
Issue Type: Bug
Components: Query Engine
Affects Versions: all
Reporter: Zhong Yanghong
Assignee: Zhong Yanghong
WeakHashMap is not thread safe, which is used in the method
*ClassUtil.forName*. It's a high possibility that multiple threads invoke the
method *ClassUtil.forName* simultaneously leading to a dead loop in
*WeakHashMap.get() -> getTable() -> expungeStaleEntries()*, which finally
resulting in server high cpu and some query doesn't respond.
We made an inner test by invoking the method *ClassUtil.forName* 1M times, the
result is as follows:
* With cache: 20ms;
* Without cache: less than 2s.
By invoking the method *ClassUtil.forName* with *newInstance* 1M times, the
result is as follows:
* With cache: around 2s
* Without cache: around 3s.
Considering *ClassUtil.forName* is always invoked with *newInstance*, there's
no much downgrade without cache. Thus the fix is just to remove the cache.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)