What is the best practice for coordinating access to files in node.js?
I’m trying to write an http based file uploader for very large files (10sGB) that is resumable. I’m trying to figure out what the best approach is to handle two people trying to upload the same file at the same time… I’m also trying to think ahead to the possibility where more than one copy of the node.js http server is running behind a load balancer, which means catching duplicate uploads can’t rely on just the code itself.
In python, for example, you can create a file by passing the correct flags to the open() call to force an atomic create. Not sure if the default node.js open new file is atomic.
Another option I thought of, but don’t really want to pursue, is using a database with an async driver that supports atomic transactions to track this state…
I found this on HackerNews under a response to someone complaining about some of the same things in node.js. I’ll put it here for completeness. This allows me to at least lock some file writes in node.js like I wanted to.