Debugging
How to debug Talon sync issues
Debugging
Techniques for debugging Talon sync issues.
Enable Logging
Add logging to your implementations:
@override
Future<bool> sendMessageToServer({required Message message}) async {
print('[Talon] Sending: ${message.table}.${message.column}');
try {
await server.insert(message);
print('[Talon] Sent successfully');
return true;
} catch (e) {
print('[Talon] Send failed: $e');
return false;
}
}
Check Sync Status
// Count unsynced messages
final unsynced = await offlineDb.getUnsyncedMessages();
print('Pending sync: ${unsynced.length}');
// Check last sync time
final lastSync = await offlineDb.readLastSyncedServerTimestamp();
print('Last sync: $lastSync');
Monitor Streams
talon.changes.listen((change) {
print('Change received:');
print(' Source: ${change.source}');
print(' Messages: ${change.messages.length}');
for (final m in change.messages) {
print(' ${m.table}.${m.row}.${m.column} = ${m.value}');
}
});
Inspect Messages
// Query messages table
final db = await openDatabase('app.db');
final messages = await db.query('talon_messages',
orderBy: 'local_timestamp DESC',
limit: 10,
);
for (final m in messages) {
print('ID: ${m['id']}');
print(' ${m['table_name']}.${m['column']} = ${m['value']}');
print(' Synced: ${m['hasBeenSynced']}');
print(' HLC: ${m['local_timestamp']}');
}