Improve performance of audit events CSV export
For search UI, the audit events scope is limit by pagination. This does
not exhibit the same problem with CSV export where scope does not
have set limit (we use file size limit as the stopping mechanism).
Preloading associated records, hence, requires to be performed in
batches to avoid overloading memory. BatchLoader cache was designed to
hold data for one web request, which in our case might yield significant
amount of user records. To keep the memory growth under control, we're
clearing up the cached data after each iteration (i.e. after 1K
records).
A fix for `MissingAttribute` error when calling `select` without
`details` field is also introduced. This is caused by the call back
method to initialize `details` after AR model loaded from database. This
change allows the following usage: `AuditEvent.select(:id).first`.
Co-authored-by: Tan Le <tle@gitlab.com>
Showing
Please register or sign in to comment