Pull Request #4821
Move report generation to background job processor
Migrates synchronous report generation to an async background job queue to eliminate 30–60s customer-facing timeouts.
Ready to merge
jobs/ReportJobProcessor.java+34 additions-6 deletions
Viewed1
@Component
2
public class ReportJobProcessor implements JobHandler {
3
4
@Autowired
5
private ReportGenerator reportGenerator;
6
7
@Autowired
8
private ReportRepository reportRepository;
9
10
@Override
11
public void process(ReportJob job) {
...
@@ -12,6 +12,18 @@ public void process(ReportJob job) {
12-
- generateReport(job);
12
+ try {
13
+ generateReport(job);
14
+ } catch (Exception e) {
15
+ log.warn("job {} failed: {}", job.getId(), e.getMessage());
16
+ }
17
}
...
@@ -19,0 +19,16 @@ private void generateReport(ReportJob job)
19
+ private void generateReport(ReportJob job) {
20
+ log.info("Generating report {} for user {}",
21
+ job.getReportId(), job.getUserId());
22
+
23
+ byte[] data = reportGenerator.generate(
24
+ job.getReportId(),
25
+ job.getUserId()
26
+ );
27
+
28
+ reportRepository.saveReportData(
29
+ job.getReportId(), data
30
+ );
31
+
32
+ log.info("Report {} generated successfully", job.getReportId());
33
+ }
34
+
35
+}
PL
priya_lead
Approved review
Good defensive coding — warning is logged so we'll catch issues in Datadog. Looks solid.