Hi Keith,<div><br></div><div>The cache entry parameter name changed in 0.14 to "map_cache_size". Setting this parameter to 0 will disable the cache. </div><div><br></div><div>Regarding the empty MapReduce results, I'll try to reproduce the issue locally and narrow down the cause.</div>
<div><br></div><div>Thanks,</div><div>Dan</div><div><br clear="all">Daniel Reverri<br>Developer Advocate<br>Basho Technologies, Inc.<br><a href="mailto:dan@basho.com">dan@basho.com</a><br>
<br><br><div class="gmail_quote">On Tue, Mar 29, 2011 at 6:16 PM, Keith Dreibelbis <span dir="ltr"><<a href="mailto:kdreibel@gmail.com">kdreibel@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Followup to this (somewhat old) thread...<div><br></div><div>I had resolved my problem by putting the vnode_cache_entries=0 thing in app.config, doing what Grant said.  But sometime later it began failing again.  I was getting misses of 25%-50% on records that should have been found by map reduce but weren't.  At that point I tried Rohman's suggestion of using a random seed, and that worked around the problem successfully.  But this isn't a very satisfying fix.</div>

<div><br></div><div>So the vnode_cache_entries=0 thing doesn't really fix it after all?  Is there something else to put in the config that would make this work properly, without the random seed hack?  BTW since the original thread I have upgraded from 0.13 to 0.14, and the bug is still there.</div>

<div><br></div><font color="#888888"><div><br></div><div>Keith</div></font><div><div></div><div class="h5"><div><br><br><div class="gmail_quote">On Thu, Mar 10, 2011 at 6:56 PM, Antonio Rohman Fernandez <span dir="ltr"><<a href="mailto:rohman@mahalostudio.com" target="_blank">rohman@mahalostudio.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>if you want to avoid caching ( without configuration ), you can put some random variable in your map or reduce or both... that does the trick for me as the query will be always different:</p>


<p>$seed = randomStringHere;<br><br>{"map":{"language":"javascript","source":"function(v,k,a) { seed='.$seed.'; x=Riak.mapValuesJson(v)[0]; return [v.values[0].data]; }"}</p>


<p>Rohman</p><div><div></div><div>
<p>On Thu, 10 Mar 2011 17:47:49 -0800, Keith Dreibelbis <<a href="mailto:kdreibel@gmail.com" target="_blank">kdreibel@gmail.com</a>> wrote:</p>
<blockquote type="cite" style="padding-left:5px;border-left:#1010ff 2px solid;margin-left:5px;width:100%">
<p>Thanks for the prompt response, Grant.  I made the configuration change you suggested, and it fixed my problem.</p>
<div></div>
<div>Some followup questions:</div>
<div></div>
<div>- is it possible to configure this dynamically on a per-bucket basis, or just per-server like it is now?</div>
<div>- is this fixed in a newer version?<br><br>
<div class="gmail_quote">On Thu, Mar 10, 2011 at 2:56 PM, Grant Schofield <span><<a href="mailto:grant@basho.com" target="_blank">grant@basho.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">There are currently some bugs in the mapreduce caching system. The best thing to do would be to disable the feature, on 0.13 you can do this by editing or adding the <span style="font-family:sans-serif;font-size:12px;color:#4e4e4e;line-height:18px">vnode_cache_entries to the riak_kv section of your app.config. The entry would look like:</span>
<div><span style="color:#4e4e4e;font-family:sans-serif"><span style="line-height:18px">{<span style="font-size:12px">vnode_cache_entries, 0},</span></span></span></div>
<div><span style="color:#4e4e4e;font-family:sans-serif"><span style="line-height:18px"><br></span></span></div>
<div><span style="color:#4e4e4e;font-family:sans-serif"><span style="line-height:18px">
<div style="color:#000000;font-family:Helvetica;line-height:normal"><span style="color:#444444;font-family:sans-serif;font-size:small"><span style="font-size:13px;line-height:16px">Grant Schofield</span></span></div>
<div style="color:#000000;font-family:Helvetica;line-height:normal"><span style="color:#444444;font-family:sans-serif;font-size:small"><span style="font-size:13px;line-height:16px">Developer Advocate </span></span></div>


<div style="color:#000000;font-family:Helvetica;line-height:normal"><span style="color:#444444;font-family:sans-serif;font-size:small"><span style="font-size:13px;line-height:16px">Basho Technologies</span></span></div>
</span></span></div>
<div><span style="color:#4e4e4e;font-family:sans-serif"><span style="line-height:18px"><br></span></span>
<div>
<div>
<div>
<div>On Mar 10, 2011, at 4:16 PM, Keith Dreibelbis wrote:</div>
</div>
</div>
<blockquote type="cite" style="padding-left:5px;border-left:#1010ff 2px solid;margin-left:5px;width:100%">
<div>
<div>Hi riak-users,
<div></div>
<div>I'm trying to do a map/reduce query from java on a 0.13 server, and get inconsistent results.  What I'm doing should be pretty simple.  I'm hoping someone will notice an obvious error in here, or have some insight:</div>


<div></div>
<div>This is an automated test.  I'm doing a simple query where I'm trying to get the keys for records with a certain field value.  In SQL it would look like "SELECT id FROM table WHERE age = '32'".  In java I'm invoking it like this:</div>


<div></div>
<div>
<div>  MapReduceResponse r = riak.mapReduceOverBucket(getBucket())</div>
<div>        .map(JavascriptFunction.anon(func), true)</div>
<div>             .submit();</div>
</div>
<div></div>
<div>where riak is a RiakClient, getBucket() returns the name of the bucket, and func is a string that looks like:</div>
<div></div>
<div>
<div>function(value, keyData, arg) {</div>
<div>       var data = Riak.mapValuesJson(value)[0];</div>
<div>       if(data.age == "32")</div>
<div>         return [value.key];</div>
<div>      else</div>
<div>         return [];</div>
<div>   }</div>
</div>
<div></div>
<div>No reduce phase.  All entries in the example bucket are json and have an age field.  This initially works correctly, it gets back the matching records as expected.  It also works in curl.  It's an automated test, so each time I run this, it is using a different bucket.  After about a dozen queries, this starts to fail.  It returns an empty result, when it should have found records.  It fails in curl at the same time.</div>


<div></div>
<div>I initially suspected this might have something to do with doing map reduce too soon after writing, and the write not being available on all nodes.  However, I changed the bucket schema entries for w,r,rw,dw from "quorum" to "all", and this still happens (is there another bucket setting I missed?). In addition, I only have 3 nodes (I'm using the dev123 example), and am running curl long enough afterwards.</div>


<div></div>
<div>Here's the strange part that makes me suspicious.  If I make insignificant changes to the query, for example change the double quotes to single quotes, add whitespace or extra parentheses, etc, then it suddenly works again.  It will work on an existing bucket, and on subsequent tests, but again only about a dozen times before it starts failing again. Same behavior in curl.  This makes me suspect that the server is doing some incorrect caching around this js function, based on the function string.</div>


<div></div>
<div>Any explanation about what's going on?</div>
<div></div>
<div></div>
<div>Keith</div>
</div>
</div>
_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>

</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div></div><div>-- <br>
<pre><div><img alt="line" width="643" height="7"><table style="margin-bottom:7px" border="0" cellspacing="0" cellpadding="0" width="643"><tbody><tr><td width="190" valign="top"><a href="http://mahalostudio.com" target="_blank"><img style="margin-left:10px" border="0" alt="logo" width="162" height="44"></a></td>

<td width="10"> </td><td width="225" valign="top"><span style="color:#5f5f5f;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:small"><strong>Antonio Rohman Fernandez</strong></span><br><span style="color:#5f5f5f;font-family:Arial,Helvetica,sans-serif;font-size:xx-small"><span style="font-size:8.5pt;color:#5f5f5f">CEO, Founder & Lead Engineer</span><br>

<a style="text-decoration:none" href="mailto:rohman@mahalostudio.com" target="_blank"><span style="font-size:8.5pt;color:#519f3f">rohman@mahalostudio.com</span></a></span></td><td width="10"> </td><td width="225" valign="top">

<span style="color:#5f5f5f;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:small"><strong>Projects</strong></span><br><span style="color:#5f5f5f;font-family:Arial,Helvetica,sans-serif;font-size:xx-small"><a style="text-decoration:none" href="http://marubatsu.es" target="_blank"><span style="font-size:8.5pt;color:#2e974d">MaruBatsu.es</span></a><br>

<a style="text-decoration:none" href="http://pupcloud.com" target="_blank"><span style="font-size:8.5pt;color:#519f3f">PupCloud.com</span></a><br><a style="text-decoration:none" href="http://wedding.mahalostudio.com" target="_blank"><span style="font-size:8.5pt;color:#519f3f">Wedding Album</span></a></span></td>

</tr></tbody></table><img alt="line" width="643" height="7"></div></pre>
</div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
riak-users mailing list<br>
<a href="mailto:riak-users@lists.basho.com">riak-users@lists.basho.com</a><br>
<a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
<br></blockquote></div><br></div>