Skip to content

[refactor][CGS][application-manager] optimize smart queue selection to only execute during engine creation#989

Merged
casionone merged 18 commits intodev-1.18.2-webankfrom
dev-1.18.0-secondary-queue
Apr 16, 2026
Merged

[refactor][CGS][application-manager] optimize smart queue selection to only execute during engine creation#989
casionone merged 18 commits intodev-1.18.2-webankfrom
dev-1.18.0-secondary-queue

Conversation

@v-kkhuang
Copy link
Copy Markdown

What is the purpose of the change

Background/Problem:
The smart queue selection logic was being executed in all scenarios where generateResource was called, including resource querying operations. This caused unnecessary Yarn API calls and queue selection logic during non-creation scenarios, potentially impacting performance and causing unintended queue modifications.

Purpose of Change:
To address this problem, this PR adds an isCreateEngine parameter to both generateResource and performSmartQueueSelection methods. The smart queue selection logic now only executes when isCreateEngine is true, ensuring it runs only during actual engine creation processes.

Value/Impact:
After the change, smart queue selection is scoped to engine creation scenarios only, reducing unnecessary Yarn API calls and preventing unintended queue configuration changes during resource queries or other operations.

Related issues/PRs

Related issues: close apache#5415
Related pr:none

Brief change log

  • Add isCreateEngine parameter to generateResource method with default value false
  • Add isCreateEngine parameter to performSmartQueueSelection method with default value false
  • Wrap smart queue selection logic with if (isCreateEngine) condition check
  • Pass isCreateEngine=true from createEngineConn to generateResource
  • Ensure queue selection only runs during engine creation, not during resource queries

Checklist

  • I have read the Contributing Guidelines on pull requests.
  • I have explained the need for this PR and the problem it solves
  • I have explained the changes or the new features added to this PR
  • I have added tests corresponding to this change
  • I have updated the documentation to reflect this change
  • I have verified that this change is backward compatible
  • If this is a code change: I have written unit tests to fully verify the new behavior.

v-kkhuang and others added 18 commits March 31, 2026 09:32
…eption (#964)

* #AI commit# 开发阶段: 修复sr任务重试导致加载init_sql异常bug

* #AI commit# 开发阶段: 修复sr任务重试导致加载init_sql异常bug

* #AI commit# 开发阶段: 修复sr任务重试导致加载init_sql异常bug

* #AI commit# 修复: * 增加任务重试开关覆盖范围
…t queue selection

- Translate all Chinese log messages to English for consistency
- Update comments and documentation to English
- No functional changes, only log message translation
Add permission validation before using secondary queue to prevent task submission failures:

Features:
- Add configuration SECONDARY_QUEUE_PERMISSION_CHECK_ENABLED to enable/disable permission check
- Add configuration SECONDARY_QUEUE_ALLOWED_USERS to configure user whitelist
- Modify performSmartQueueSelection method to accept user parameter
- Add checkQueuePermission method to validate user access to secondary queue
- If user has no permission, log warning and fallback to primary queue
- Prevents task submission failures due to insufficient queue permissions

Configuration:
- wds.linkis.rm.secondary.yarnqueue.permission.check.enable (default: false)
- wds.linkis.rm.secondary.yarnqueue.allowed.users (default: empty)
…econdary queue

Replace configuration-based whitelist with actual Yarn permission verification:

Changes:
- Remove configuration items SECONDARY_QUEUE_PERMISSION_CHECK_ENABLED and SECONDARY_QUEUE_ALLOWED_USERS
- Rewrite checkQueuePermission method to use Yarn API for real permission validation
- Query Yarn app info via externalResourceService.getAppInfo to verify user access
- Detect permission errors (403/404/forbidden/unauthorized) and fallback to primary queue
- Handle transient errors gracefully to avoid blocking legitimate users

Permission Check Logic:
1. Try to get app info from target queue using Yarn REST API
2. If successful (even with empty app list) → user has permission
3. If permission error (403/404) → log warning and return false
4. If other error (network/timeout) → assume OK to avoid blocking
# Conflicts:
#	linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/am/service/engine/DefaultEngineCreateService.scala
Copy link
Copy Markdown

@casionone casionone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@casionone casionone merged commit f6a64d1 into dev-1.18.2-webank Apr 16, 2026
12 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants