Aias00 opened a new issue, #963:
URL: https://github.com/apache/rocketmq-dashboard/issues/963

   ## Problem
   
   The audit-log endpoint paginates after loading every matching row into 
application memory. `MybatisPlusAuditRepository.findAll` uses `selectList`, 
while `AuditService.queryLogs` computes pagination with `subList`. The CSV 
export follows the same full-materialization path and returns one large string. 
`pageSize` only has a positive-value check, with no upper bound.
   
   The audit read model also drops context already stored in 
`rmq_operation_audit`: `resource_type`, `cluster_id`, and `error_message` are 
written by `OperationAuditService` but are absent from `AuditRecordVO` and 
`MybatisPlusAuditRepository.toVO`. The API/UI additionally expose an 
`ipAddress` column although the schema and write path do not persist it.
   
   ## Impact
   
   As audit history grows, a normal paged request scans and materializes every 
matched row. The API response also cannot present key resource and failure 
context that is already persisted.
   
   ## Proposed fix
   
   - Add a paged audit repository contract returning rows and total count.
   - Use MyBatis-Plus SQL pagination for the list endpoint and cap page sizes.
   - Bound the export query to prevent unbounded in-memory CSV construction.
   - Extend the audit read model/API with resource type, cluster ID, and error 
message.
   - Remove the unsupported IP column from the API/UI export contract rather 
than emitting permanently empty values.
   
   ## Non-goals
   
   This does not change audit ordering (#835) or the existing 
pagination/cleanup input validation from #441.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to