[
https://issues.apache.org/jira/browse/YARN-3241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14364693#comment-14364693
]
zhihai xu commented on YARN-3241:
---------------------------------
I uploaded a patch YARN-3241.000.patch for review. Without the patch, the test
will fail with MetricsException: Metrics source QueueMetrics,q0=root,q1=A
already exists!
{code}
------------------------------------------------------
T E S T S
-------------------------------------------------------
Running
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.TestFairScheduler
Tests run: 87, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 8.887 sec <<<
FAILURE! - in
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.TestFairScheduler
testQueueNameWithTrailingSpace(org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.TestFairScheduler)
Time elapsed: 0.036 sec <<< ERROR!
org.apache.hadoop.metrics2.MetricsException: Metrics source
QueueMetrics,q0=root,q1=A already exists!
at
org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.newSourceName(DefaultMetricsSystem.java:143)
at
org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.sourceName(DefaultMetricsSystem.java:120)
at
org.apache.hadoop.metrics2.impl.MetricsSystemImpl.register(MetricsSystemImpl.java:229)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSQueueMetrics.forQueue(FSQueueMetrics.java:111)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSQueue.<init>(FSQueue.java:63)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSLeafQueue.<init>(FSLeafQueue.java:75)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueueManager.createQueue(QueueManager.java:185)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueueManager.getQueue(QueueManager.java:131)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueueManager.getLeafQueue(QueueManager.java:88)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.assignToQueue(FairScheduler.java:699)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.addApplication(FairScheduler.java:601)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.handle(FairScheduler.java:1182)
at
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.TestFairScheduler.testQueueNameWithTrailingSpace(TestFairScheduler.java:4466)
Results :
Tests in error:
TestFairScheduler.testQueueNameWithTrailingSpace:4466 ยป Metrics Metrics
source...
Tests run: 87, Failures: 0, Errors: 1, Skipped: 0
{code}
> Leading space, trailing space and empty sub queue name may cause
> MetricsException for fair scheduler
> ----------------------------------------------------------------------------------------------------
>
> Key: YARN-3241
> URL: https://issues.apache.org/jira/browse/YARN-3241
> Project: Hadoop YARN
> Issue Type: Bug
> Components: scheduler
> Reporter: zhihai xu
> Assignee: zhihai xu
> Attachments: YARN-3241.000.patch
>
>
> Leading space, trailing space and empty sub queue name may cause
> MetricsException(Metrics source XXX already exists! ) when add application to
> FairScheduler.
> The reason is because QueueMetrics parse the queue name different from the
> QueueManager.
> QueueMetrics use Q_SPLITTER to parse queue name, it will remove Leading space
> and trailing space in the sub queue name, It will also remove empty sub queue
> name.
> {code}
> static final Splitter Q_SPLITTER =
> Splitter.on('.').omitEmptyStrings().trimResults();
> {code}
> But QueueManager won't remove Leading space, trailing space and empty sub
> queue name.
> This will cause out of sync between FSQueue and FSQueueMetrics.
> QueueManager will think two queue names are different so it will try to
> create a new queue.
> But FSQueueMetrics will treat these two queue names as same queue which will
> create "Metrics source XXX already exists!" MetricsException.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)