apache / apache/rocketmq-dashboard
Consumer Group Push/Pop filter only filters the current page
- Dominant language
- Java
- Stars
- 1.4k
- Forks
- 683
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 58
Description
## Problem
The Consumer Group page has a Push/Pop filter, but the backend paged endpoint does not support it.
Current behavior:
- `/api/groups/page` accepts only `instanceId`, `clusterId`, `search`, `page`, and `pageSize`.
- `web/src/pages/instance/consumer.tsx` fetches one page and then filters that page in memory with `visibleConsumerGroups(groups, modeFilter)`.
- The repository query in `RocketMQMetadataProvider.listConsumerGroupsPage` also has no subscription-mode condition.
This makes the filter incorrect for real inventories:
- switching to `Push` or `Pop` filters only the rows on the current page, not the whole inventory;
- the returned `total` remains the unfiltered total;
- a page can render zero rows while the pagination still says there are many results;
- later pages are unreachable for the selected mode because they may contain no matching rows;
- CSV export uses the selected mode, so exported data and the visible page no longer describe the same query.
## Expected behavior
- `/api/groups/page` should accept an optional `subscriptionMode` filter.
- Apache-backed groups should filter in the database query, preserving correct totals and paging.
- Cloud providers that return provider-native pages should apply the same filter without breaking existing search/pagination behavior.
- The frontend should send the selected mode to the backend and stop filtering only the current page locally.
- CSV export should continue to use the same backend-visible mode filter.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at /api/groups/page and web/src/pages/instance/consumer.tsx, then trace RocketMQMetadataProvider.listConsumerGroupsPage and the existing visibleConsumerGroups(groups, modeFilter) call. Follow how Apache-backed and cloud-provider pages handle search and pagination. Done means subscriptionMode reaches the backend, totals and pages are mode-filtered consistently, local page-only filtering is removed, and CSV export matches the visible query.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, typescript
- Domain
- api, cloud, databases, full-stack
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100