fix(purge): clear packet_log when purging all nodes (#2637)#2807
fix(purge): clear packet_log when purging all nodes (#2637)#2807
Conversation
purgeAllNodes / purgeAllNodesAsync deleted nodes, messages, telemetry, traceroutes and neighbors but left packet_log intact, so the Packet Monitor kept showing entries from purged nodes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Builds a real DatabaseService against in-memory SQLite (real Drizzle, real repositories, real migrations) so the purge path is exercised end-to-end and a regression on the packet_log clear would fail here. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @Yeraze's task —— View job PR Review: Fix packet_log clearing in purgeAllNodesReviewing the changes for code quality, best practices, potential issues, and test coverage. Todo List:
Review SummaryThis is a well-implemented fix for issue #2637. The changes correctly address the ghost packet entries in the Packet Monitor after purging nodes. Here's my detailed analysis: ✅ Strengths1. Correct Problem Identification & Solution
2. Excellent Test Coverage
3. Proper Error Handling
4. Follows Project Conventions
🔍 Code Quality AssessmentDatabase Operation Order: ✅ Correctly places packet log clearing before node deletion to respect potential foreign key relationships Repository Usage: ✅ Uses Logging: ✅ Appropriate debug/error logging maintained 🛡️ Security & Performance ConsiderationsSecurity: ✅ No security concerns. Simple DELETE operation on packet_log table Performance: ✅
📋 Test QualityIntegration Test Excellence:
Unit Test Coverage:
|
System Test ResultsMeshMonitor System Test ResultsTest Run: 2026-04-26 21:42:08 EDT Test Summary
✅ Overall Result: PASSEDAll deployment configurations are working correctly! Test DetailsConfiguration Import:
Quick Start Test:
Security Test:
V1 API Test:
Reverse Proxy Test:
Reverse Proxy + OIDC Test:
Virtual Node CLI Test:
Backup & Restore Test:
Database Migration Test:
DB Backing Consistency Test:
|
deleteNodeAsync and the SQLite deleteNode path purged messages, traceroutes, telemetry, and neighbors but left packet_log entries behind, so the Packet Monitor kept showing a node after it was deleted (per-source delete in particular). Adds MiscRepository.deletePacketLogsForNode + Sync that scope the delete to (from_node = N OR to_node = N) AND sourceId = ?, and wires both deleteNode paths to call them. Extends the existing #2637 integration test to cover the per-node case with seeded rows on multiple sources. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @Yeraze's task —— View job PR Review: Fix packet_log clearing in purgeAllNodesReviewing the changes for code quality, best practices, potential issues, and test coverage. Todo List:
Review SummaryThis is a well-implemented fix for issue #2637. The changes correctly address the ghost packet entries in the Packet Monitor after purging nodes. Here's my detailed analysis: ✅ Strengths1. Correct Problem Identification & Solution
2. Excellent Test Coverage
3. Proper Error Handling
4. Follows Project Conventions
🔍 Code Quality AssessmentDatabase Operation Order: ✅ Correctly places packet log clearing before node deletion to respect potential foreign key relationships Repository Usage: ✅ Uses Logging: ✅ Appropriate debug/error logging maintained 🛡️ Security & Performance ConsiderationsSecurity: ✅ No security concerns. Simple DELETE operation on packet_log table Performance: ✅
📋 Test QualityIntegration Test Excellence:
Unit Test Coverage:
|
System Test ResultsMeshMonitor System Test ResultsTest Run: 2026-04-26 22:47:23 EDT Test Summary
✅ Overall Result: PASSEDAll deployment configurations are working correctly! Test DetailsConfiguration Import:
Quick Start Test:
Security Test:
V1 API Test:
Reverse Proxy Test:
Reverse Proxy + OIDC Test:
Virtual Node CLI Test:
Backup & Restore Test:
Database Migration Test:
DB Backing Consistency Test:
|
Summary
purgeAllNodes/purgeAllNodesAsyncnow also wipe thepacket_logtable, so the Packet Monitor no longer shows ghost rows from purged nodes./api/device/purge-nodedb(purge from device + database) and/api/purge/nodes.Why
Issue #2637: user purged nodes via "Actions → Purge Data → Purge from device and database" but the Packet Monitor kept showing them. Root cause: the purge cleared
nodes,messages,telemetry,traceroutes,route_segmentsandneighbor_infobut leftpacket_logintact, and Packet Monitor reads frompacket_log.Changes
src/services/database.tspurgeAllNodes()(SQLite sync path): callmiscRepo.clearPacketLogsSync()before deleting nodes.purgeAllNodesAsync()(PG/MySQL/SQLite async path):await miscRepo.clearPacketLogs()before deleting nodes.src/db/repositories/misc.packetlog.test.ts: pin the building-block clear methods (clearPacketLogsasync +clearPacketLogsSync) with [BUG] nodes not fully deleted #2637 references.src/services/database.purgeAllNodes.test.ts(new): end-to-end integration test against a realDatabaseService+ in-memory SQLite. Seeds nodes + packet_log rows, runspurgeAllNodesAsync, asserts packet_log is empty.Test plan
npx vitest run src/db/repositories/misc.packetlog.test.ts— 15/15 passnpx vitest run src/services/database.purgeAllNodes.test.ts— 1/1 passdist/services/database.js🤖 Generated with Claude Code