Skip to content
Commit 4f987f2e authored by Alexandru Vasile's avatar Alexandru Vasile Committed by github-actions[bot]
Browse files

litep2p/discovery: Fix memory leak in `litep2p.public_addresses()` (#5998)

This PR ensures that the `litep2p.public_addresses()` never grows
indefinitely.
- effectively fixes subtle memory leaks
- fixes authority DHT records being dropped due to size limits being
exceeded
- provides a healthier subset of public addresses to the `/identify`
protocol

This PR adds a new `ExternalAddressExpired` event to the
litep2p/discovery process.

Substrate uses an LRU `address_confirmations` bounded to 32 address
entries.
The oldest entry is propagated via the `ExternalAddressExpired` event
when a new address is added to the list (if capacity is exceeded).

The expired address is then removed from the
`litep2p.public_addresses()`, effectively limiting its size to 32
entries (the size of `address_confirmations` LRU).

cc @paritytech/networking @alexggh



---------

Signed-off-by: default avatarAlexandru Vasile <[email protected]>
Co-authored-by: default avatarBastian Köcher <[email protected]>
Co-authored-by: default avatarDmitry Markin <[email protected]>
(cherry picked from commit 38aa4b75)
parent 2bb2b7df
Pipeline #501518 waiting for manual action with stages
in 32 minutes and 17 seconds