Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Zookeeper >> mail # dev >> Taking two snapshots at the same time


Copy link to this message
-
Re: Taking two snapshots at the same time
Sergey proposed a few approaches. Could you tells me how you implement it, Thawan, please?

-Flavio

On Jul 8, 2013, at 10:39 PM, Thawan Kooburat <[EMAIL PROTECTED]> wrote:

> 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
>>>
>