Browse Source

auto_connect: add DB dump diagnostics (node_addresses state, node existence, db path+status)

- chat_core.c: dump node_addresses total, per-node counts, nodes lookup before addr query
- topo_group.c: log db path, rc, and db pointer after sqlite3_open
topo_upd
Evgeny 3 months ago
parent
commit
a510cb0018
  1. 2
      src/topo_group.c
  2. 25
      tools/chatgui/transport/chat_core.c

2
src/topo_group.c

@ -261,7 +261,7 @@ struct TOPO_GROUPS* topo_groups_init(struct UTUN_INSTANCE* instance) {
sqlite3_exec(instance->topo_sqlite_db, "PRAGMA journal_mode=WAL", NULL, NULL, NULL); sqlite3_exec(instance->topo_sqlite_db, "PRAGMA journal_mode=WAL", NULL, NULL, NULL);
sqlite3_exec(instance->topo_sqlite_db, "PRAGMA foreign_keys=ON", NULL, NULL, NULL); sqlite3_exec(instance->topo_sqlite_db, "PRAGMA foreign_keys=ON", NULL, NULL, NULL);
topo_node_sqlite_init(instance->topo_sqlite_db); topo_node_sqlite_init(instance->topo_sqlite_db);
DEBUG_INFO(DEBUG_CATEGORY_BGP, "SQLite opened: %s", db_file); DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "SQLite opened: %s rc=%d db=%p", db_file, rc, (void*)instance->topo_sqlite_db);
} else { } else {
DEBUG_ERROR(DEBUG_CATEGORY_BGP, "sqlite3_open(%s) failed: %s", DEBUG_ERROR(DEBUG_CATEGORY_BGP, "sqlite3_open(%s) failed: %s",
db_file, instance->topo_sqlite_db ? sqlite3_errmsg(instance->topo_sqlite_db) : "null db"); db_file, instance->topo_sqlite_db ? sqlite3_errmsg(instance->topo_sqlite_db) : "null db");

25
tools/chatgui/transport/chat_core.c

@ -762,6 +762,31 @@ void chat_core_connect_auto(uint64_t node_id,
return; return;
} }
/* ── DB state diagnostics ── */
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: looking for node=0x%016llx", CC_ID, (unsigned long long)node_id);
{
sqlite3_stmt* diag = NULL;
if (sqlite3_prepare_v2(g_cc.db, "SELECT COUNT(*) FROM node_addresses", -1, &diag, NULL) == SQLITE_OK) {
if (sqlite3_step(diag) == SQLITE_ROW)
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node_addresses total=%d", CC_ID, sqlite3_column_int(diag, 0));
sqlite3_finalize(diag);
}
if (sqlite3_prepare_v2(g_cc.db, "SELECT node_id, COUNT(*) FROM node_addresses GROUP BY node_id", -1, &diag, NULL) == SQLITE_OK) {
while (sqlite3_step(diag) == SQLITE_ROW)
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node_addresses node=0x%016llx cnt=%d",
CC_ID, (unsigned long long)sqlite3_column_int64(diag, 0), sqlite3_column_int(diag, 1));
sqlite3_finalize(diag);
}
if (sqlite3_prepare_v2(g_cc.db, "SELECT node_id, name FROM nodes WHERE node_id=?", -1, &diag, NULL) == SQLITE_OK) {
sqlite3_bind_int64(diag, 1, (sqlite3_int64)node_id);
if (sqlite3_step(diag) == SQLITE_ROW)
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node found in nodes table name=%s",
CC_ID, sqlite3_column_text(diag, 1));
else
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node NOT found in nodes table", CC_ID);
sqlite3_finalize(diag);
}
}
/* collect IPv4 addresses */ /* collect IPv4 addresses */
struct { uint8_t addr[4]; uint16_t port; } addrs[16]; struct { uint8_t addr[4]; uint16_t port; } addrs[16];
int addr_count = 0; int addr_count = 0;

Loading…
Cancel
Save