Tor relay not updating cached consensus

Hello,
I have been running a new relay for nearly two days. I can see that it has been measured and has the Fast, Running, V2Dir, and Valid flags according to it’s tor metrics page.
The problem is that it has not updated it’s cached consensus since it was first launched two days ago. Below is the output from its notice.log file:

Jul 27 00:00:15.000 [notice] Tor 0.4.8.17 opening new log file.
Jul 27 02:47:16.000 [notice] Heartbeat: It seems like we are not in the cached consensus.
Jul 27 02:47:16.000 [notice] Heartbeat: Tor’s uptime is 1 day 12:00 hours, with 2 circuits open. I’ve sent 419.44 MB and received 387.88 MB. I’ve received 26622 connections on IPv4 and 0 on IPv6. I’ve made 10131 connections with IPv4 and 0 with IPv6.
Jul 27 02:47:16.000 [notice] While not bootstrapping, fetched this many bytes: 750456 (server descriptor fetch); 2816 (server descriptor upload)
Jul 27 02:47:16.000 [notice] Circuit handshake stats since last time: 0/0 TAP, 4142/4142 NTor.
Jul 27 02:47:16.000 [notice] Since startup we initiated 0 and received 0 v1 connections; initiated 0 and received 0 v2 connections; initiated 0 and received 0 v3 connections; initiated 0 and received 1 v4 connections; initiated 658 and received 25945 v5 connections.
Jul 27 02:47:16.000 [notice] Heartbeat: DoS mitigation since startup: 0 circuits killed with too many cells, 0 circuits rejected, 0 marked addresses, 0 marked addresses for max queue, 0 same address concurrent connections rejected, 0 connections rejected, 0 single hop clients refused, 0 INTRODUCE2 rejected.
Jul 27 04:57:59.000 [warn] Our microdesc consensus is too old, so we will not serve it to clients. It was valid until 2025-07-25 17:00:00 local time and we continued to serve it for up to 24 hours after it expired.
Jul 27 06:00:48.000 [warn] Our microdesc consensus is too old, so we will not serve it to clients. It was valid until 2025-07-25 17:00:00 local time and we continued to serve it for up to 24 hours after it expired. [7 similar message(s) suppressed in last 3060 seconds]
Jul 27 08:47:16.000 [notice] Heartbeat: It seems like we are not in the cached consensus.
Jul 27 08:47:16.000 [notice] Heartbeat: Tor’s uptime is 1 day 18:00 hours, with 2 circuits open. I’ve sent 606.57 MB and received 572.02 MB. I’ve received 31016 connections on IPv4 and 0 on IPv6. I’ve made 11728 connections with IPv4 and 0 with IPv6.
Jul 27 08:47:16.000 [notice] While not bootstrapping, fetched this many bytes: 750456 (server descriptor fetch); 3296 (server descriptor upload)
Jul 27 08:47:16.000 [notice] Circuit handshake stats since last time: 0/0 TAP, 4533/4533 NTor.
Jul 27 08:47:16.000 [notice] Since startup we initiated 0 and received 0 v1 connections; initiated 0 and received 0 v2 connections; initiated 0 and received 0 v3 connections; initiated 0 and received 2 v4 connections; initiated 985 and received 30247 v5 connections.
Jul 27 08:47:16.000 [notice] Heartbeat: DoS mitigation since startup: 0 circuits killed with too many cells, 0 circuits rejected, 0 marked addresses, 0 marked addresses for max queue, 0 same address concurrent connections rejected, 0 connections rejected, 0 single hop clients refused, 0 INTRODUCE2 rejected.
Jul 27 08:53:39.000 [warn] Our microdesc consensus is too old, so we will not serve it to clients. It was valid until 2025-07-25 17:00:00 local time and we continued to serve it for up to 24 hours after it expired. [3 similar message(s) suppressed in last 10320 seconds]
Jul 27 09:06:46.000 [notice] New control connection opened from 127.0.0.1.

When I check Nyx, it shows that my relay has no flags even tho the metrics page and consensus health show that my relay is running with updated flags. When I look in the data directory I can see that the consensus is not being updated:

drwx------. 5 toranon root 4096 Jul 27 01:18 .
drwxr-xr-x. 60 root root 4096 Jul 25 14:23 ..
-rw-------. 1 toranon toranon 20442 Jul 25 14:28 cached-certs
-rw-------. 1 toranon toranon 3692975 Jul 25 14:28 cached-consensus
-rw-------. 1 toranon toranon 49668660 Jul 25 14:47 cached-descriptors
-rw-------. 1 toranon toranon 2783513 Jul 25 14:47 cached-descriptors.new
-rw-------. 1 toranon toranon 3193241 Jul 25 14:28 cached-microdesc-consensus
-rw-------. 1 toranon toranon 35558432 Jul 25 14:47 cached-microdescs
-rw-------. 1 toranon toranon 0 Jul 25 14:47 cached-microdescs.new
-rw-------. 1 toranon toranon 32 Jul 25 14:47 control_auth_cookie
drwx------. 2 toranon toranon 4096 Jul 25 14:28 diff-cache
-rw-------. 1 toranon toranon 57 Jul 25 14:28 fingerprint
-rw-------. 1 toranon toranon 60 Jul 25 14:28 fingerprint-ed25519
drwx------. 2 toranon toranon 4096 Jul 25 14:28 keys
-rw-------. 1 toranon toranon 0 Jul 25 14:47 lock
-rw-------. 1 toranon toranon 7385 Jul 27 01:18 state
drwx------. 2 toranon toranon 4096 Jul 26 16:00 stats

I checked the debug.log file and see that it appears to be trying to download an updated consensus, but I’m not sure if it is successful:

Jul 27 08:50:19.000 [info] update_consensus_networkstatus_downloads(): Launching ns standard networkstatus consensus download.
Jul 27 08:50:19.000 [debug] directory_initiate_request(): anonymized 0, use_begindir 0.
Jul 27 08:50:19.000 [debug] directory_initiate_request(): Initiating consensus network-status fetch
Jul 27 08:50:19.000 [debug] connection_connect(): Connecting to [scrubbed]:80.
Jul 27 08:50:19.000 [debug] connection_connect_sockaddr(): Connection to socket in progress (sock 485).
Jul 27 08:50:19.000 [debug] connection_add_impl(): new conn type Directory, socket 485, address 193.23.244.244, n_conns 678.
Jul 27 08:50:19.000 [info] directory_send_command(): Downloading consensus from 193.23.244.244 using /tor/status-vote/current/consensus/0232AF+23D15D+27102B+2F3DF9+49015F+70849B+E8A9C4+ED03BB+F533C8.z
Jul 27 08:50:19.000 [debug] directory_send_command(): Sent request to directory server 193.23.244.244:80 (purpose: 14, request size: 342, payload size: 0)
Jul 27 08:50:19.000 [debug] conn_write_callback(): socket 485 wants to write.
Jul 27 08:50:19.000 [debug] connection_dir_finished_connecting(): Dir connection to 193.23.244.244:80 established.
Jul 27 08:50:19.000 [debug] connection_dir_finished_flushing(): client finished sending command.

Is there any issue that could potentially be causing my relay to not update its consensus? I checked and I am able to reach all directory authorities and there is no firewall issue.

Thank you!

It looks like this is still an issue for you.

(I tested by deleting my cached-* files in my Tor client’s DataDirectory, and then running my Tor client with “usebridges 1” and “bridge 46.18.104.28:9001” and sure enough, soon I get bootstrap warnings like “Jul 30 01:36:26.794 [warn] Received http status code 404 (“Consensus is too old”) from server 46.18.104.28:9001 while fetching consensus directory.”)

My first question would be if your Tor version is recent enough, but I see you are on 0.4.8.17 so yes it should be fine.

My second question would be: are you sure you can reach the Tor directory authorities? You should check not only whether you can reach their ORPorts but also whether you can reach their DirPorts, since relays use unencrypted http on the dirport to fetch new directory information from dir auths. You can test for example with:

$ curl http://128.31.0.39:9231/tor/status-vote/current/consensus-microdesc/0232AF+14C131+23D15D+49015F+D586D1+E8A9C4+ED03BB+EFCBE7

My third question is, how have you installed Tor? Is this a package like the tor deb on Debian, or is it something more esoteric? Maybe the Tor process is having trouble writing to the right place, or it thinks its DataDirectory is somewhere else, or etc.

Related, what lines do you have in your torrc file?

And lastly, you shouldn’t have to do this, but have you tried restarting the Tor process?