[ https://issues.apache.org/jira/browse/YARN-11641?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17805574#comment-17805574 ]
ASF GitHub Bot commented on YARN-11641: --------------------------------------- hadoop-yetus commented on PR #6435: URL: https://github.com/apache/hadoop/pull/6435#issuecomment-1887138976 :broken_heart: **-1 overall** | Vote | Subsystem | Runtime | Logfile | Comment | |:----:|----------:|--------:|:--------:|:-------:| | +0 :ok: | reexec | 0m 21s | | Docker mode activated. | |||| _ Prechecks _ | | +1 :green_heart: | dupname | 0m 1s | | No case conflicting files found. | | +0 :ok: | codespell | 0m 0s | | codespell was not available. | | +0 :ok: | detsecrets | 0m 0s | | detect-secrets was not available. | | +0 :ok: | jsonlint | 0m 0s | | jsonlint was not available. | | +1 :green_heart: | @author | 0m 0s | | The patch does not contain any @author tags. | | +1 :green_heart: | test4tests | 0m 0s | | The patch appears to include 44 new or modified test files. | |||| _ trunk Compile Tests _ | | +1 :green_heart: | mvninstall | 32m 24s | | trunk passed | | +1 :green_heart: | compile | 0m 34s | | trunk passed with JDK Ubuntu-11.0.21+9-post-Ubuntu-0ubuntu120.04 | | +1 :green_heart: | compile | 0m 29s | | trunk passed with JDK Private Build-1.8.0_392-8u392-ga-1~20.04-b08 | | +1 :green_heart: | checkstyle | 0m 30s | | trunk passed | | +1 :green_heart: | mvnsite | 0m 33s | | trunk passed | | +1 :green_heart: | javadoc | 0m 36s | | trunk passed with JDK Ubuntu-11.0.21+9-post-Ubuntu-0ubuntu120.04 | | +1 :green_heart: | javadoc | 0m 31s | | trunk passed with JDK Private Build-1.8.0_392-8u392-ga-1~20.04-b08 | | +1 :green_heart: | spotbugs | 1m 11s | | trunk passed | | +1 :green_heart: | shadedclient | 21m 0s | | branch has no errors when building and testing our client artifacts. | |||| _ Patch Compile Tests _ | | +1 :green_heart: | mvninstall | 0m 24s | | the patch passed | | +1 :green_heart: | compile | 0m 30s | | the patch passed with JDK Ubuntu-11.0.21+9-post-Ubuntu-0ubuntu120.04 | | +1 :green_heart: | javac | 0m 30s | | the patch passed | | +1 :green_heart: | compile | 0m 29s | | the patch passed with JDK Private Build-1.8.0_392-8u392-ga-1~20.04-b08 | | +1 :green_heart: | javac | 0m 29s | | the patch passed | | +1 :green_heart: | blanks | 0m 0s | | The patch has no blanks issues. | | -0 :warning: | checkstyle | 0m 26s | [/results-checkstyle-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-resourcemanager.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6435/2/artifact/out/results-checkstyle-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-resourcemanager.txt) | hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager: The patch generated 1 new + 34 unchanged - 0 fixed = 35 total (was 34) | | +1 :green_heart: | mvnsite | 0m 30s | | the patch passed | | +1 :green_heart: | javadoc | 0m 27s | | the patch passed with JDK Ubuntu-11.0.21+9-post-Ubuntu-0ubuntu120.04 | | +1 :green_heart: | javadoc | 0m 26s | | the patch passed with JDK Private Build-1.8.0_392-8u392-ga-1~20.04-b08 | | +1 :green_heart: | spotbugs | 1m 10s | | the patch passed | | +1 :green_heart: | shadedclient | 21m 6s | | patch has no errors when building and testing our client artifacts. | |||| _ Other Tests _ | | -1 :x: | unit | 74m 38s | [/patch-unit-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-resourcemanager.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6435/2/artifact/out/patch-unit-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-resourcemanager.txt) | hadoop-yarn-server-resourcemanager in the patch passed. | | +1 :green_heart: | asflicense | 0m 22s | | The patch does not generate ASF License warnings. | | | | 160m 15s | | | | Reason | Tests | |-------:|:------| | Failed junit tests | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestSchedulingRequestContainerAllocation | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerWithMultiResourceTypes | | | hadoop.yarn.server.resourcemanager.scheduler.constraint.algorithm.TestLocalAllocationTagsManager | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestContainerResizing | | | hadoop.yarn.server.resourcemanager.scheduler.fair.converter.TestFSConfigToCSConfigConverterMain | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerMultiNodes | | | hadoop.yarn.server.resourcemanager.ahs.TestRMApplicationHistoryWriter | | | hadoop.yarn.server.resourcemanager.TestCapacitySchedulerMetrics | | | hadoop.yarn.server.resourcemanager.scheduler.constraint.TestAllocationTagsManager | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestLeafQueue | | | hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesApps | | | hadoop.yarn.server.resourcemanager.scheduler.fair.converter.weightconversion.TestWeightToWeightConverter | | | hadoop.yarn.server.resourcemanager.scheduler.constraint.TestPlacementProcessor | | | hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySchedulerMixedMode | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerAsyncScheduling | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerAmbiguousLeafs | | | hadoop.yarn.server.resourcemanager.scheduler.TestAbstractYarnScheduler | | | hadoop.yarn.server.resourcemanager.TestRMHAForNodeLabels | | | hadoop.yarn.server.resourcemanager.TestApplicationCleanup | | | hadoop.yarn.server.resourcemanager.TestLeaderElectorService | | | hadoop.yarn.server.resourcemanager.TestRMHAMetrics | | | hadoop.yarn.server.resourcemanager.TestRMProxyUsersConf | | | hadoop.yarn.server.resourcemanager.TestResourceManagerMXBean | | | hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesNodeLabels | | | hadoop.yarn.server.resourcemanager.TestRMHAForAsyncScheduler | | | hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesAppsModification | | | hadoop.yarn.server.resourcemanager.TestRMEmbeddedElector | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacityScheduler | | | hadoop.yarn.server.resourcemanager.scheduler.policy.TestFairOrderingPolicy | | | hadoop.yarn.server.resourcemanager.scheduler.TestSchedulerHealth | | | hadoop.yarn.server.resourcemanager.TestRMTimelineService | | | hadoop.yarn.server.resourcemanager.TestRMHA | | | hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySchedLegacyQueueCreation | | | hadoop.yarn.server.resourcemanager.TestApplicationACLs | | | hadoop.yarn.server.resourcemanager.scheduler.fair.converter.weightconversion.TestWeightToPercentageConverter | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestIncreaseAllocationExpirer | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestQueueConfigurationAutoRefreshPolicy | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerOvercommit | | | hadoop.yarn.server.resourcemanager.scheduler.constraint.TestPlacementConstraintsUtil | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerMaxParallelApps | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestContainerAllocation | | | hadoop.yarn.server.resourcemanager.TestWorkPreservingRMRestart | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCSQueueStore | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.TestZKConfigurationStore | | | hadoop.yarn.server.resourcemanager.TestClientRMService | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.TestLeveldbConfigurationStore | | | hadoop.yarn.server.resourcemanager.rmcontainer.TestRMContainerImpl | | | hadoop.yarn.server.resourcemanager.scheduler.TestSchedulerUtils | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerNodes | | | hadoop.yarn.server.resourcemanager.scheduler.TestSchedulingWithAllocationRequestId | | | hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySchedDynamicConfig | | | hadoop.yarn.server.resourcemanager.TestApplicationMasterLauncher | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerApps | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestApplicationPriority | | | hadoop.yarn.server.resourcemanager.TestAppManager | | | hadoop.yarn.server.resourcemanager.scheduler.capacity.TestCapacitySchedulerWeightMode | | | hadoop.yarn.server.resourcemanager.resourcetracker.TestNMReconnect | | Subsystem | Report/Notes | |----------:|:-------------| | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6435/2/artifact/out/Dockerfile | | GITHUB PR | https://github.com/apache/hadoop/pull/6435 | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets jsonlint | | uname | Linux 0682cdea5768 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | dev-support/bin/hadoop.sh | | git revision | trunk / e85c9f289f43869f65f856772967a098361e3762 | | Default Java | Private Build-1.8.0_392-8u392-ga-1~20.04-b08 | | Multi-JDK versions | /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.21+9-post-Ubuntu-0ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_392-8u392-ga-1~20.04-b08 | | Test Results | https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6435/2/testReport/ | | Max. process+thread count | 5411 (vs. ulimit of 5500) | | modules | C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager | | Console output | https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6435/2/console | | versions | git=2.25.1 maven=3.6.3 spotbugs=4.2.2 | | Powered by | Apache Yetus 0.14.0 https://yetus.apache.org | This message was automatically generated. > Can't update a queue hierarchy in absolute mode when the configured > capacities are zero > --------------------------------------------------------------------------------------- > > Key: YARN-11641 > URL: https://issues.apache.org/jira/browse/YARN-11641 > Project: Hadoop YARN > Issue Type: Bug > Components: capacityscheduler > Affects Versions: 3.4.0 > Reporter: Tamas Domok > Assignee: Tamas Domok > Priority: Major > Labels: pull-request-available > Attachments: hierarchy.png > > > h2. Error symptoms > It is not possible to modify a queue hierarchy in absolute mode when the > parent or every child queue of the parent has 0 min resource configured. > {noformat} > 2024-01-05 15:38:59,016 INFO > org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerQueueManager: > Initialized queue: root.a.c > 2024-01-05 15:38:59,016 ERROR > org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWebServices: Exception > thrown when modifying configuration. > java.io.IOException: Failed to re-init queues : Parent=root.a: When absolute > minResource is used, we must make sure both parent and child all use absolute > minResource > {noformat} > h2. Reproduction > capacity-scheduler.xml > {code:xml} > <?xml version="1.0"?> > <configuration> > <property> > <name>yarn.scheduler.capacity.root.queues</name> > <value>default,a</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.capacity</name> > <value>[memory=40960, vcores=16]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.default.capacity</name> > <value>[memory=1024, vcores=1]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.default.maximum-capacity</name> > <value>[memory=1024, vcores=1]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.capacity</name> > <value>[memory=0, vcores=0]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.maximum-capacity</name> > <value>[memory=39936, vcores=15]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.queues</name> > <value>b,c</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.b.capacity</name> > <value>[memory=0, vcores=0]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.b.maximum-capacity</name> > <value>[memory=39936, vcores=15]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.c.capacity</name> > <value>[memory=0, vcores=0]</value> > </property> > <property> > <name>yarn.scheduler.capacity.root.a.c.maximum-capacity</name> > <value>[memory=39936, vcores=15]</value> > </property> > </configuration> > {code} > !hierarchy.png! > updatequeue.xml > {code:xml} > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <sched-conf> > <update-queue> > <queue-name>root.a</queue-name> > <params> > <entry> > <key>capacity</key> > <value>[memory=1024,vcores=1]</value> > </entry> > <entry> > <key>maximum-capacity</key> > <value>[memory=39936,vcores=15]</value> > </entry> > </params> > </update-queue> > </sched-conf> > {code} > {code} > $ curl -X PUT -H 'Content-Type: application/xml' -d @updatequeue.xml > http://localhost:8088/ws/v1/cluster/scheduler-conf\?user.name\=yarn > Failed to re-init queues : Parent=root.a: When absolute minResource is used, > we must make sure both parent and child all use absolute minResource > {code} > h2. Root cause > setChildQueues is called during reinit, where: > {code:java} > void setChildQueues(Collection<CSQueue> childQueues) throws IOException { > writeLock.lock(); > try { > boolean isLegacyQueueMode = > queueContext.getConfiguration().isLegacyQueueMode(); > if (isLegacyQueueMode) { > QueueCapacityType childrenCapacityType = > getCapacityConfigurationTypeForQueues(childQueues); > QueueCapacityType parentCapacityType = > getCapacityConfigurationTypeForQueues(ImmutableList.of(this)); > if (childrenCapacityType == QueueCapacityType.ABSOLUTE_RESOURCE > || parentCapacityType == QueueCapacityType.ABSOLUTE_RESOURCE) { > // We don't allow any mixed absolute + {weight, percentage} between > // children and parent > if (childrenCapacityType != parentCapacityType && > !this.getQueuePath() > .equals(CapacitySchedulerConfiguration.ROOT)) { > throw new IOException("Parent=" + this.getQueuePath() > + ": When absolute minResource is used, we must make sure > both " > + "parent and child all use absolute minResource"); > } > {code} > The parent or childrenCapacityType will be considered as PERCENTAGE, because > getCapacityConfigurationTypeForQueues fails to detect the absolute mode, here: > {code:java} > if > (!queue.getQueueResourceQuotas().getConfiguredMinResource(nodeLabel) > .equals(Resources.none())) { > absoluteMinResSet = true; > {code} > (It only happens in legacy queue mode.) > h2. Possible fixes > Possible fix in AbstractParentQueue.getCapacityConfigurationTypeForQueues > using the capacityVector: > {code:java} > for (CSQueue queue : queues) { > for (String nodeLabel : queueCapacities.getExistingNodeLabels()) { > Set<QueueCapacityVector.ResourceUnitCapacityType> > definedCapacityTypes = > > queue.getConfiguredCapacityVector(nodeLabel).getDefinedCapacityTypes(); > if (definedCapacityTypes.size() == 1) { > QueueCapacityVector.ResourceUnitCapacityType next = > definedCapacityTypes.iterator().next(); > if (Objects.requireNonNull(next) == PERCENTAGE) { > percentageIsSet = true; > diagMsg.append("{Queue=").append(queue.getQueuePath()).append(", > label=").append(nodeLabel) > .append(" uses percentage mode}. "); > } else if (next == > QueueCapacityVector.ResourceUnitCapacityType.ABSOLUTE) { > absoluteMinResSet = true; > diagMsg.append("{Queue=").append(queue.getQueuePath()).append(", > label=").append(nodeLabel) > .append(" uses absolute mode}. "); > } else if (next == > QueueCapacityVector.ResourceUnitCapacityType.WEIGHT) { > weightIsSet = true; > diagMsg.append("{Queue=").append(queue.getQueuePath()).append(", > label=").append(nodeLabel) > .append(" uses weight mode}. "); > } > } else if (definedCapacityTypes.size() > 1) { > mixedIsSet = true; > diagMsg.append("{Queue=").append(queue.getQueuePath()).append(", > label=").append(nodeLabel) > .append(" uses mixed mode}. "); > } > } > } > {code} > Pre capacityVector, we could utilise checkConfigTypeIsAbsoluteResource, e.g.: > {code:java} > - if > (!queue.getQueueResourceQuotas().getConfiguredMinResource(nodeLabel) > - .equals(Resources.none())) { > + if (checkConfigTypeIsAbsoluteResource(queue.getQueuePath(), > nodeLabel)) { > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org