[ 
https://issues.apache.org/jira/browse/PHOENIX-2289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14906224#comment-14906224
 ] 

Hudson commented on PHOENIX-2289:
---------------------------------

SUCCESS: Integrated in Phoenix-master #904 (See 
[https://builds.apache.org/job/Phoenix-master/904/])
PHOENIX-2289 Avoid Class.getClassLoader calls (gabrielr: rev 
5ecd4967f6f9ee8ae90ea1ea7421b43fcba67d14)
* phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixContextExecutor.java


> PhoenixContextExecutor spends a lot of time in getClassLoader
> -------------------------------------------------------------
>
>                 Key: PHOENIX-2289
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2289
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.3.0
>            Reporter: Todd Lipcon
>            Assignee: Gabriel Reid
>             Fix For: 4.6.0
>
>         Attachments: PHOENIX-2289.patch
>
>
> Doing some "poor man's profiling" of a CSV bulk import job, I noticed a lot 
> of time spent in this stack:
> {code}
> "main" prio=10 tid=0x00007f3410018000 nid=0x6f3f runnable [0x00007f3414b4e000]
>    java.lang.Thread.State: RUNNABLE
>       at java.lang.Class.getClassLoader0(Native Method)
>       at java.lang.Class.getClassLoader(Class.java:609)
>       at 
> org.apache.phoenix.util.PhoenixContextExecutor$CurrentContextWrapper.before(PhoenixContextExecutor.java:45)
>       at org.apache.phoenix.call.CallRunner.run(CallRunner.java:51)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:270)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:211)
>       at 
> org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:174)
>       at 
> org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:179)
>       at 
> org.apache.phoenix.util.csv.CsvUpsertExecutor.execute(CsvUpsertExecutor.java:155)
>       at 
> org.apache.phoenix.util.csv.CsvUpsertExecutor.execute(CsvUpsertExecutor.java:136)
>       at 
> org.apache.phoenix.mapreduce.CsvToKeyValueMapper.map(CsvToKeyValueMapper.java:163)
>       at 
> org.apache.phoenix.mapreduce.CsvToKeyValueMapper.map(CsvToKeyValueMapper.java:69)
> {code}
> Class.getClassLoader is relatively expensive (see 
> http://bugs.java.com/view_bug.do?bug_id=6642881 ) so it may make sense to 
> cache this classloader as a static final member of the class.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to