>From looking at the 3.4.5 code, it seems like ZooKeeperServer.takeSnapshot() method does not have protection against being invoked twice by different threads. There is some protection against spawning two snapshot threads from SyncRequestProcessor.run() but this is just about it.
Is there any inherent danger in having two ZooKeeperServer.takeSnapshot() overlapping their execution in time? Is it a thread to data integrity or is it just a possible performance issue? I'm thinking of adding a new four-letter command to force a snapshot creation by a command from outside before snapCount threshold is reached. Is it safe to invoke ZooKeeperServer.takeSnapshot() from a four-word command handler or does it need to be submitted as a Request object into the pipeline of Request Processors? Regards, /Sergey
