Fix TOCTOU race in snapshot stub ETS operations #31
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.
The snapshot stub's
start/0andstop/0functions have a race window betweenets:info/1check andets:new/2/ets:delete/1operations. Concurrent calls can causebadargexceptions.Changes
Wrap ETS operations in try/catch: Both
ets:new/2andets:delete/1now catchbadargand returnok, treating the race as a success case (table already created/deleted)Add concurrent test coverage: New test module validates idempotent behavior under concurrent access (10-20 processes calling start/stop simultaneously)
The operations remain idempotent while handling the edge case gracefully.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
esm.ubuntu.com/usr/lib/apt/methods/https(dns block)repo.hex.pm/home/REDACTED/.asdf/installs/erlang/27.1.2/erts-15.1.2/bin/inet_gethost 4(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Note
Custom agent used: erlang_otp_developer
Erlang/OTP Developer with expertise in building fault-tolerant, distributed systems using Erlang and OTP principles in an event-sourced architecture.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.