<div><div style="line-height: 21px;"><span style="line-height: 1.5;">Thank you for the advice.</span></div><div style="line-height: 21px;"><span style="line-height: 1.5;">default_init() of sheep/store.c</span><span style="line-height: 1.5;">  has </span><span style="line-height: 1.5;">already </span><span style="line-height: 1.5;">had the logic of unlinking </span><span style="line-height: 1.5;">oid.tmp files. I'm not sure the reason why oid.tmp file still exists </span><span style="line-height: 1.5;">in the system.</span></div></div><div><span style="line-height: 1.5;"><br></span></div><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "Hitoshi Mitake";<mitake.hitoshi@lab.ntt.co.jp>;</div><div><b>Date: </b> Sep 18, 2014</div><div><b>To: </b> "Ruoyu"<liangry@ucweb.com>; <wbr></div><div><b>Cc: </b> "Bingpeng Zhu"<nkuzbp@foxmail.com>; "sheepdog"<sheepdog@lists.wpkg.org>; <wbr></div><div><b>Subject: </b> Re: [sheepdog] question about replica recovery failure caused by oid.tmp file</div></div><div><br></div>At Tue, 16 Sep 2014 10:10:32 +0800,<br>Ruoyu wrote:<br>> <br>> [1  <multipart/alternative (7bit)>]<br>> [1.1  <text/plain; ISO-8859-1 (7bit)>]<br>> Thanks Bingpeng.<br>> I also encountered this problem.<br>> I suggest sheep should scan oid.tmp files and remove them when it is <br>> being started.<br><br>I agree with Ruoyu's opinion. .tmp files should be deleted at<br>initialization time. e.g. default_init() of sheep/store.c would be a<br>good place for it.<br><br>Thanks,<br>Hitoshi<br><br>> <br>> On 2014?09?15? 00:14, Bingpeng Zhu wrote:<br>> > Hi, all:<br>> >      I have a problem in using sheepdog. I create a erasure coded VDI <br>> > and write<br>> >   some data to it. Then, I unplug disk and stop/restart one sheep in a <br>> > short<br>> >   time. After recovery is completed in the latest epoch, I find some <br>> > replica is<br>> >   lost and only the corresponding oid.tmp file exists in the data <br>> > directory. I tried<br>> >   to rebuild the replica using "dog vdi check", but it didn't work. I <br>> > think it is<br>> >   caused by oid.tmp file. I have to delete the oid.tmp file manually <br>> > and then<br>> >   "dog vdi check" successfully recoverd the lost replica.<br>> >       In function default_create_and_write() of sheep/plain_store.c, <br>> > it returns<br>> >   success directly if oid.tmp file exists. I have read the comment in <br>> > this function carefully,<br>> >   it says gateway and recovery thread may try to write the SAME data, <br>> > so it is okay<br>> >   to simply return success here. To solve this problem, I want to <br>> > change the code of<br>> > default_create_and_write() so that replica data will be written even <br>> > oid.tmp file exists.<br>> >   If oid.tmp exists, the function should overwrite it.<br>> > I am not sure if this change will work good for all scenario. <br>> > Especially, I doubt whether<br>> >   this change will lead to old data overwriting new data. But I <br>> > haven't thought out any scenario<br>> >   that will lead to old data overwriting new data. Can someone give me <br>> > some advice to solve this problem?<br>> ><br>> ><br>> ><br>> <br>> [1.2  <text/html; ISO-8859-1 (7bit)>]<br>> <br>> [2  <text/plain; us-ascii (7bit)>]<br>> -- <br>> sheepdog mailing list<br>> sheepdog@lists.wpkg.org<br>> http://lists.wpkg.org/mailman/listinfo/sheepdog<br></div>