You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kylin.apache.org by "Zhong Yanghong (JIRA)" <ji...@apache.org> on 2017/07/10 10:16:00 UTC
[jira] [Created] (KYLIN-2716) WeakHashMap in ClassUtil leading to
server high cpu and some query doesn't respond
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)