server descriptor query results are wrong and/or duplicated
Here is an interesting issue. :) I was looking up data for Hobbit18 (fingerprint 2720C39019EDD2037599B0D7F06C83570F92FB17). Nothing too fancy: published server descs, nickname, fingerprint, OR address, contact info, exit policy, bw and burst rate.
Given that the fields are in different tables I had to use some JOINs like so:
SELECT DISTINCT sc.published, nickname, sc.fingerprint, address, contact,
exit_policy, bandwidth_avg, bandwidth_burst
FROM server_descriptor_core AS sc
INNER JOIN server_descriptor_details AS sd ON sc.fingerprint = sd.fingerprint
INNER JOIN server_descriptor_bw AS sb ON sc.fingerprint = sb.fingerprint
WHERE sc.fingerprint = '2720C39019EDD2037599B0D7F06C83570F92FB17' AND
sc.published >= %(start)s AND sc.published <= %(end)s AND is_bridge = False
ORDER BY sc.published ASC
The result I get when quering from 2025-05-27 to 2025-12-05 look like:
| sc.published | nickname | sc.fingerprint | address | contact | exit_policy | bandwidth_avg | bandwidth_burst |
|---|---|---|---|---|---|---|---|
| 2025-05-27 10:20:18 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject *:*'] | 41943040 | 62914560 |
| 2025-05-27 10:20:18 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject 0.0.0.0/8:*', 'reject 169.254.0.0/16:*', 'reject 127.0.0.0/8:*', 'reject 192.168.0.0/16:*', 'reject 10.0.0.0/8:*', 'reject 172.16.0.0/12:*', 'reject 179.43.134.19:*', 'reject *:25', 'reject *:119', 'reject *:135-139', 'reject *:445', 'reject *:465', 'reject *:563', 'reject *:587', 'reject *:1214', 'reject *:4661-4666', 'reject *:6346-6429', 'reject *:6699', 'reject *:6881-6999', 'accept *:*'] | 41943040 | 62914560 |
| 2025-05-28 04:20:22 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject *:*'] | 41943040 | 62914560 |
| 2025-05-28 04:20:22 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject 0.0.0.0/8:*', 'reject 169.254.0.0/16:*', 'reject 127.0.0.0/8:*', 'reject 192.168.0.0/16:*', 'reject 10.0.0.0/8:*', 'reject 172.16.0.0/12:*', 'reject 179.43.134.19:*', 'reject *:25', 'reject *:119', 'reject *:135-139', 'reject *:445', 'reject *:465', 'reject *:563', 'reject *:587', 'reject *:1214', 'reject *:4661-4666', 'reject *:6346-6429', 'reject *:6699', 'reject *:6881-6999', 'accept *:*'] | 41943040 | |
| 2025-09-17 22:20:23 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject *:*'] | 41943040 | 62914560 |
| 2025-09-17 22:20:23 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject 0.0.0.0/8:*', 'reject 169.254.0.0/16:*', 'reject 127.0.0.0/8:*', 'reject 192.168.0.0/16:*', 'reject 10.0.0.0/8:*', 'reject 172.16.0.0/12:*', 'reject 179.43.134.19:*', 'reject *:25', 'reject *:119', 'reject *:135-139', 'reject *:445', 'reject *:465', 'reject *:563', 'reject *:587', 'reject *:1214', 'reject *:4661-4666', 'reject *:6346-6429', 'reject *:6699', 'reject *:6881-6999', 'accept *:*'] | 41943040 | 62914560 |
| 2025-09-18 16:20:27 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject *:*'] | 41943040 | 62914560 |
| 2025-09-18 16:20:27 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject 0.0.0.0/8:*', 'reject 169.254.0.0/16:*', 'reject 127.0.0.0/8:*', 'reject 192.168.0.0/16:*', 'reject 10.0.0.0/8:*', 'reject 172.16.0.0/12:*', 'reject 179.43.134.19:*', 'reject *:25', 'reject *:119', 'reject *:135-139', 'reject *:445', 'reject *:465', 'reject *:563', 'reject *:587', 'reject *:1214', 'reject *:4661-4666', 'reject *:6346-6429', 'reject *:6699', 'reject *:6881-6999', 'accept *:*'] | 41943040 | 62914560 |
| 2025-09-19 09:45:56 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject *:*'] | 41943040 | 62914560 |
| 2025-09-19 09:45:56 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject 0.0.0.0/8:*', 'reject 169.254.0.0/16:*', 'reject 127.0.0.0/8:*', 'reject 192.168.0.0/16:*', 'reject 10.0.0.0/8:*', 'reject 172.16.0.0/12:*', 'reject 179.43.134.19:*', 'reject *:25', 'reject *:119', 'reject *:135-139', 'reject *:445', 'reject *:465', 'reject *:563', 'reject *:587', 'reject *:1214', 'reject *:4661-4666', 'reject *:6346-6429', 'reject *:6699', 'reject *:6881-6999', 'accept *:*'] | 41943040 | 62914560 |
| 2025-09-20 03:46:00 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject *:*'] | 41943040 | 62914560 |
| 2025-09-20 03:46:00 | Hobbit18 | 2720C39019EDD2037599B0D7F06C83570F92FB17 | 179.43.134.19 | Hobbit hobbit18@proton.me | ['reject 0.0.0.0/8:*', 'reject 169.254.0.0/16:*', 'reject 127.0.0.0/8:*', 'reject 192.168.0.0/16:*', 'reject 10.0.0.0/8:*', 'reject 172.16.0.0/12:*', 'reject 179.43.134.19:*', 'reject *:25', 'reject *:119', 'reject *:135-139', 'reject *:445', 'reject *:465', 'reject *:563', 'reject *:587', 'reject *:1214', 'reject *:4661-4666', 'reject *:6346-6429', 'reject *:6699', 'reject *:6881-6999', 'accept *:*'] | 41943040 | 62914560 |
I omitted a lot of lines and added only the ones important for my point. So, duplicated entries started right from the beginning when the relay showed up, what's going on here? Moreover looking on relay-search one can easily see that the relay changed from a non-exit to an exit node between 2025-09-17 and 2025-09-20, yet there is no such change visible in the DB results above. However, it is visible in the respective server descriptors: before there is no exit policy visible, after is.