Task 2-2: Warn khi macIp Không Tìm Thấy
Phase: 2 - Observability Priority: Low Depends on: Không có Reference: docs/BountyHunter-Backend/details/feature-receiver-service/SPEC.md
Background
Trong JMSReceiverLogMachineListener.getBoothIdFromMacIp(), nếu macIp không tìm thấy, trả về "UNKNOWN" mà không có warning log. Ops team không biết có machine gửi messages mà chưa được register.
Tasks
DI Note:
JMSReceiverLogMachineListenerđã injectCraneMachineService(hoặc tương đương) qua constructor. Phương thứcfindByMac(macIp)trảOptional<CraneMachine>— xác nhận return type bằng grep. MethodgetGroupLabel()vàgetGroupNumber()— xác nhận field names trên entityCraneMachine.
File: receiver-service/jms/JMSReceiverLogMachineListener.java
-
[ ] Thêm warning khi macIp không tìm thấy:
private String getBoothIdFromMacIp(String macIp) { var craneMachine = craneMachineService.findByMac(macIp); return craneMachine .map(m -> m.getGroupLabel() + "-" + m.getGroupNumber()) .orElseGet(() -> { LOGGER.warn("[RECEIVER] Unknown macIp={} - machine not registered in DB", macIp); return "UNKNOWN"; }); } -
[ ] Audit các listeners khác nếu cùng có macIp lookup:
grep -rn "findByMac\|getBoothIdFromMacIp" receiver-service/ - [ ] Tương tự trong
JMSReceiverHealthCheckMachineListenervàJMSReceiverGameplayMachineListenernếu cũng có lookup pattern này
Verification / Acceptance Criteria
- [ ] Message với unregistered macIp → log WARN
[RECEIVER] Unknown macIp=... - [ ] Log được phân biệt rõ với ERROR logs (chỉ WARN, không block processing)
- [ ]
boothId = "UNKNOWN"vẫn được save trong DB record (không throw exception) - [ ] Registered macIp: không log WARN, boothId =
{groupLabel}-{groupNumber}đúng - [ ] Tất cả listeners với macIp lookup đều có warning behavior nhất quán
Files to Modify
receiver-service/src/main/java/com/figpop/jms/JMSReceiverLogMachineListener.javareceiver-service/src/main/java/com/figpop/jms/JMSReceiverHealthCheckMachineListener.java(nếu applicable)receiver-service/src/main/java/com/figpop/jms/JMSReceiverGameplayMachineListener.java(nếu applicable)