I have this functionality in our internal branch. I can post the patch but it is likely to conflict with ZOOKEEPER-1346, so it will be good to know the timeline of that patch.
-- Thawan Kooburat On 7/8/13 11:48 AM, "Sergey Maslyakov" <[email protected]> wrote: >I think I'd answer my own question. Apparently, if lastZxid does not >change >between two takeSnapshot() calls, they both will try to write into the >same >file. This is likely to explode when you try to read this snapshot back... >So, the protection is needed. > > >/Sergey > > >On Mon, Jul 8, 2013 at 12:03 PM, Sergey Maslyakov <[email protected]> >wrote: > >> 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 >>
