erase from persistent_term without blocking registry #4545
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note: this is a draft. I talked to @josevalim and we're not 100% sure how to handle this yet. Another idea was to just not erase entries from persistent_term.
This was an interesting problem. It started with me updating the dependencies in phoenix_live_dashboard and noticing test failures related to our test of the Ecto Stats page. The stats page calls
Ecto.Repo.all_running
to get a list of repos.The problem was that the test case still got an old repo as running, even though the previous test already stopped it (using start_supervised). It turns out that the :persistent_term.erase was slowing the registry GenServer down too much, therefore it wasn't processing the DOWN messages fast enough and not deleting the old repo entries from ets before the new test was already running.