Avoid folder naming conflicts with monotonic time and random padding #18
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.
👋. Briefly looks like a nice library to use for tempfiles in Elixir!
I wanted to ensure a better promise of not having conflicting folder names (per #16) and I think it's a common user experience to expect that the auto-generated folders will be unique.
To accomplish that end, I switched to using monotonic time (so each erlang vm will be unique in itself) and added cryptographically generated padding.
The switch to using monotonic time and random padding from crypto
to ensure that folders are created uniquely even if created in same moment
by different users or different instances of server.
By adding 20 chars of random padding along with monotonic time, the chance of
collisions is so small as to be negligible.
Further work could add a safety check that it retries folder creation if first one
fails.
Fixes: #16.
If this sounds good, I'm happy to contribute it to the main repo for Briefly 🎉 😸.