How does the provider/reprovider system work with GC/block-delete?

Provider system basically advertises to the network “hey, I have this CID”. If someone asks for this CID, point them to me. I can see that it is executed on Adding and Pinning.

If I delete a block (either by running GC, or by individually deleting blocks using the ipfs block rm command), then does the Provider advertise to the network that the block is no longer available?

Or, does it do nothing, and basically if someone requests for that block, they have to search the DHT and send bitswap want requests, wait until the requests timeout, and decide that no ipfs node in the network has the block…?

It does nothing, but DHT records expire after 24h.

Thanks a ton. Do you know if this is documented anywhere?

Also, does this mean that a node has to publish provider records for all the blocks that it has every 24 hours?
For example, if a node has a million blocks, it has to publish a million provider records every 24 hours…?
This seems to be a lot of network data consumption for IPFS nodes with large no. of files/blocks.

Actually things are re-provided every 12h (go-ipfs/config.md at master · ipfs/go-ipfs · GitHub).

Yes, it is a lot of work to the point it becomes a bottleneck for very large nodes. The AcceleratedDHTClient tries to fix some of these issues: go-ipfs/experimental-features.md at master · ipfs/go-ipfs · GitHub