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

Eric Yang edited comment on YARN-9328 at 3/4/19 6:35 PM:
---------------------------------------------------------

[~Prabhu Joseph] {quote}For too frequent operation like commits or assignment 
of container its better to log out of write lock rt ??{quote}

The bug happens when multi-threaded programs are trying to write log 
concurrently.  Log4j 1.x internally uses locking to initialize logging 
appenders, it is unlikely to help if logging statement is moved outside of the 
write lock.  I think the workaround is to apply [the 
patch|https://bz.apache.org/bugzilla/attachment.cgi?id=31193&action=diff] that 
I generated for Log4J 1.2.x to avoid multithread initialization race conditions 
of logging appenders to deadlock.


was (Author: eyang):
[~Prabhu Joseph] {quote}For too frequent operation like commits or assignment 
of container its better to log out of write lock rt ??{quote}

The bug happens when multi-threaded programs are trying to write log 
concurrently.  Log4j 1.x internally uses locking to initialize logging 
appenders, it is unlikely to help if logging statement is moved outside of the 
write lock.  I think the workaround is to apply the patch that I generated for 
Log4J 1.2.x to avoid initialization of logging appenders to deadlock.

> ParentQueue#apply move log outside writelock
> --------------------------------------------
>
>                 Key: YARN-9328
>                 URL: https://issues.apache.org/jira/browse/YARN-9328
>             Project: Hadoop YARN
>          Issue Type: Bug
>            Reporter: Bibin A Chundatt
>            Assignee: Prabhu Joseph
>            Priority: Major
>         Attachments: YARN-9328-001.patch, YARN-9328-002.patch, 
> YARN-9328-003.patch
>
>
> {code}
>           LOG.info("assignedContainer" + " queue=" + getQueueName()
>               + " usedCapacity=" + getUsedCapacity() + " 
> absoluteUsedCapacity="
>               + getAbsoluteUsedCapacity() + " used=" + queueUsage.getUsed()
>               + " cluster=" + cluster);
> {code}
> Logging can be done after log.. Logging could reduce performance ..
> {code}
> "Thread-16" #40 daemon prio=5 os_prio=0 tid=0x00007f181f9bb800 nid=0x125 
> waiting for monitor entry [0x00007ef163bab000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
>       at org.apache.log4j.Category.callAppenders(Category.java:204)
>       - locked <0x00007ef2d803e2b8> (a org.apache.log4j.spi.RootLogger)
>       at org.apache.log4j.Category.forcedLog(Category.java:391)
>       at org.apache.log4j.Category.log(Category.java:856)
>       at 
> org.apache.commons.logging.impl.Log4JLogger.info(Log4JLogger.java:176)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue.apply(ParentQueue.java:1336)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue.apply(LeafQueue.java:1371)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica.FiCaSchedulerApp.apply(FiCaSchedulerApp.java:665)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.tryCommit(CapacityScheduler.java:2946)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler$ResourceCommitterService.run(CapacityScheduler.java:644)
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to