You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Ismael Juma (JIRA)" <ji...@apache.org> on 2018/02/16 21:00:00 UTC

[jira] [Commented] (KAFKA-6569) Reflection in OffsetIndex and TimeIndex construction

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

Ismael Juma commented on KAFKA-6569:
------------------------------------

Yes, we should definitely do this. Personally, I think the logging trait should generally only be used by scala objects (not classes).

> Reflection in OffsetIndex and TimeIndex construction
> ----------------------------------------------------
>
>                 Key: KAFKA-6569
>                 URL: https://issues.apache.org/jira/browse/KAFKA-6569
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>            Reporter: Kyle Ambroff-Kao
>            Assignee: Kyle Ambroff-Kao
>            Priority: Major
>         Attachments: after.png, before.png
>
>
> kafka.log.AbstractIndex uses the Logging mixin to lazily initialize loggers for any concrete type that inherits from it. This works great, except that the LazyLogging trait uses reflection to compute the logger name.
> When you have hundreds of thousands of log segments to load on startup the extra cost adds up.
> I've attached flame graphs from broker startup on a broker that has about 12TB of log segments to load, and a second flame graph after changing AbstractIndex to statically initialize a logger.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)