i wouldn't do it that way. when deploying your app just do a pre-start script, that ensures the existence of your desired data. If you have periodical tasks, it's best to use a lib for it, that triggers jobs appart of your main application. i.E http://stackoverflow.com/questions/3785736/is-there-a-job-scheduler-library-for-node-js , so you just avoid the concurrency problems.
Am Freitag, 5. Oktober 2012 14:04:58 UTC+2 schrieb Tom: > > I've setup a cluster of physical servers. Each server runs exactly the > same code. Moreover, each server runs multiple node processes using > the build in cluster functionality. > > I use MongoDB (native) to share information between processes and servers. > However, I am having some difficulty with running a special task that needs > to be executed only once during initialization: > > if a special `admin` account does not yet exist in the database, it > should be created > > Originally I figured that I could read from the MongoDB master server on > each node and check if the admin account already exists. If it does not > then another node has not yet created it, so this node should do so. > However this is problematic because creating an admin password hash is > asynchronous and takes time. Therefore there is a delay between when a node > decides to create the account and when the account is being found by other > nodes when querying the database. > > The code snippet that reads from the Mongo master only and creates the > account is available here: https://gist.github.com/3839429 > > In the future I would also like a special task to be executed every 5 > minutes. This task must then only be executed by a running server, and not > by all servers. > > In short: when running a cluster of servers, how do you coordinate between > these servers which of them is going to execute a sole task such as the one > described above? > > Tom > -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
