I forgot to cc the list. Sorry for the duplicate, Junior.<br><br>---------- Forwarded message ----------<br><span class="gmail_quote">From: <b class="gmail_sendername">Drop Box</b> <<a href="mailto:publicdropbox@gmail.com">
publicdropbox@gmail.com</a>><br>Date: Feb 16, 2006 1:13 PM<br>Subject: Re: buggy tracker behavior?<br>To: Mark Smith <<a href="mailto:junior@danga.com">junior@danga.com</a>><br><br></span>Junior,<br><br>That was helpful, thanks. The idea that the tracker will only verify one path (in the absence of noverify) but return two paths seems unintuitive/misleading. After all, the returned array is not an array full of verified paths. At the same time, I can see how you wouldn't want to take the time to verify two paths. I don't have a thought-out proposal for how I think it should be different, though, so I won't press the issue.
<br><br>I'm using the (mostly complete but then apparently dropped) PHP client written by the wikipedia folks, and the problem was that the first element in the (associative) array of paths was path2 (I assume because path2 is always returned first in the by the tracker, despite the fact that it hasn't been verified), and it just did a "foreach @paths" sort of thing. Alphabetizing the array puts path1 first and made things a little better. There's still a lot of slowness associated with having to verify the path about half the time (with 1 of 2 hosts down) on pages with 30+ pieces of content. Using "mogilefsd --node_timeout 1"
didn't seem to speed things up as I had expected, either, but my expectations could very well be off too.<br><br>If I recall correctly, there was talk of automatically marking systems or devices as down in the database. Has there been any progress on that? If not, is that something that should be done under job_monitor() in mogilefsd?
<br><br>Thanks.<div><span class="e" id="q_10974b5da1de3430_1"><br><br><div><span class="gmail_quote">On 2/13/06, <b class="gmail_sendername">Mark Smith</b> <<a href="mailto:junior@danga.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
junior@danga.com
</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The 'verify' option (or rather, the lack of the noverify option) only<br>looks for one valid path. Additionally, it randomizes based on the weights<br>of the devices. So you end up with one of two scenarios: it tries the good
<br>device first, or it tries the bad one first.<br><br>If it tries the good one, it says "hey, got a good device!" and it returns<br>both paths. (No need to check the other one -- we've already verified one<br>
of them!) If it hits the bad one, then it has to throw it out, and then<br>return the other one.<br><br>If you notice from your output, the ONLY time you see both is when the<br>"good" device is listed as "path1" -- the first device it checked, and the
<br>one that came out okay.<br><br>So no, not a bug. Hope that makes sense. :-)<br><br><br>-jr<br><br>On Thu, Feb 09, 2006, Drop Box wrote:<br>> Hi,<br>><br>> I'm testing out MogileFS and am getting some results from the tracker that I
<br>> didn't expect. I'm wondering whether it's a bug or a misunderstanding on my<br>> part. I have a file saved to two devices on two different systems. I<br>> unplugged one of the systems/devices (dev1 on .22) from the network and
<br>> noticed that the tracker will sometimes respond to GET_PATHS with 2 paths,<br>> for some reason:<br>><br>> $ telnet localhost 7001<br>> Trying 127.0.0.1...<br>> Connected to localhost (<a href="http://127.0.0.1" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
127.0.0.1</a>).<br>> Escape character is '^]'.<br>> GET_PATHS domain=test&key=thisismykey<br>> OK path2=<a href="http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path1= <a href="http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path2=<a href="http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path1= <a href="http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path2=<a href="http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path1= <a href="http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path1= <a href="http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1
</a><br>> GET_PATHS domain=test&key=thisismykey<br>> OK path1=<a href="http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=1</a><br>
> GET_PATHS domain=test&key=thisismykey<br>> OK path2=<a href="http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://192.168.0.22:7500/dev1/0/000/000/0000000054.fid&path1=http://192.168.0.23:7500/dev2/0/000/000/0000000054.fid&paths=2
</a><br>><br>><br>> I would have guessed that GET_PATHS would only return the 1 available path,<br>> given that I'm not setting noverify. Whether or not that's how it's<br>> supposed to work (could someone verify whether my guess is correct,
<br>> though?), my knee-jerk reaction to the sporadic behavior is to think there's<br>> something wrong. Thoughts?<br>><br>> I'm using the latest revision from CVS, btw.<br>><br>> Thanks.<br><br><br>--
<br>
Junior (aka Mark Smith)<br><a href="mailto:junior@danga.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">junior@danga.com</a><br><br>Software Engineer<br>Six Apart / Danga Interactive<br></blockquote>
</div><br>
</span></div>