Thanks a lot, glad that I asked this before pulling my hairs out coz for some reason It never occurred to me that it could be a bug in views. :)<div><br></div><div> It worked after applying the patch. </div><div><br></div>
<div> Thanks again!<br>
<br><br><div class="gmail_quote">On Sat, Jun 4, 2011 at 10:17 PM, Earl Miles <span dir="ltr">&lt;<a href="mailto:merlin@logrus.com">merlin@logrus.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
You&#39;re in a batch, and Views has a bug with batches. It&#39;s fixed in the<br>
-dev version: See <a href="http://drupal.org/node/829550" target="_blank">http://drupal.org/node/829550</a><br>
<div><div></div><div class="h5"><br>
On 6/4/2011 7:59 AM, Dipen wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I am badly stuck at this one, I am trying to convert a cron function<br>
&gt; to batched drush execution to overcome memory limits etc. I could<br>
&gt; have gone for queued cron execution but in my initial assessment I<br>
&gt; found batched drush execution simpler. Anyways, I am using<br>
&gt; views_savedsearches to allow my users to keep a tab on their exposed<br>
&gt; filters, since the data keeps coming in for their criteria I am also<br>
&gt; using notifications_views_savedsearches (which comes in the same<br>
&gt; package) to notify them if they have subscribed to their saved<br>
&gt; searches. So All is good except the amount of content is huge for<br>
&gt; hook_cron of notifications_views_savedsearches to process without<br>
&gt; memory errors which prompted me to convert it into batched drush<br>
&gt; execution.<br>
&gt;<br>
&gt; So I got to a good start and quickly deconstructed (almost) the<br>
&gt; notifications_views_savedsearches_cron implementation into batch<br>
&gt; process to be run by drush. Everything is fine, except that<br>
&gt; $view-&gt;execute() doesn&#39;t return any result for my implementation but<br>
&gt; does yield results in the original implementation. This is the place<br>
&gt; I am stuck, few things to note here:<br>
&gt;<br>
&gt; 1&gt; $view Object just before calling $view-&gt;execute() is exactly same<br>
&gt; for both implementations ( old cron and new batch worker process ), I<br>
&gt; ran a diff couple of times. Please note that both functions have<br>
&gt; practically same code except that I had to write couple of extra<br>
&gt; function to make batch work. 2&gt; On further investigation found out<br>
&gt; that query and count query are same too but args are different.<br>
&gt;<br>
&gt; Am I wrong to assume that calling execute() on two identical view<br>
&gt; objects can lead to different results? Atleast thats what I am<br>
&gt; experiencing? (There is no additional processing on the view object,<br>
&gt; they are exactly same before execute() is called on them)<br>
&gt;<br>
&gt; On further investigation found out that the view object of my batch<br>
&gt; worker process has $this-&gt;exposed_data empty and thats the reason<br>
&gt; for args to be malformed and for query to returning empty result. I<br>
&gt; haven&#39;t been able to find out much on why is exposed_data set in one<br>
&gt; view and not in other when they were identical before calling<br>
&gt; execute() on them, looking at call stack, I found out much of the<br>
&gt; query building and pre processing is done in $this-&gt;build and<br>
&gt; $this-&gt;_build($key) and thats where $this-&gt;exposed_data is bailing<br>
&gt; out on me.<br>
&gt;<br>
&gt; Some of the debugged Arrays:<br>
&gt;<br>
&gt; $args for the cron function (the one thats working) - Array ( [0] =&gt;<br>
&gt; drealty_property [1] =&gt; 0 [2] =&gt; 100000000 [3] =&gt; 0 [4] =&gt; 0 [5] =&gt;<br>
&gt; 39 )<br>
&gt;<br>
&gt; $this-&gt;exposed_data returns a healthy array<br>
&gt;<br>
&gt; One thats not working ( my batched execution $args) :<br>
&gt;<br>
&gt; Array ( [0] =&gt; drealty_property [1] =&gt; [2] =&gt; [3] =&gt; [4] =&gt; [5] =&gt;<br>
&gt; [6] =&gt; )<br>
&gt;<br>
&gt; $this-&gt;exposed_data doesn&#39;t return anything.<br>
&gt;<br>
&gt;<br>
&gt; Code of both functions is almost same and the $view object just prior<br>
&gt; to $view-&gt;execute() is exactly identical.<br>
&gt;<br>
&gt; Has anyone faced anything similar? Could it be due to the batch API?<br>
&gt; I am using drush_backend_batch_process() to process my batch.<br>
&gt; Everything else is working except that my batch process doesn&#39;t have<br>
&gt; anything in $view-&gt;result. I haven&#39;t been able to find where does<br>
&gt; $this-&gt;exposed_data get set.<br>
&gt;<br>
&gt; Crux of code for both function is:<br>
&gt;<br>
&gt; $vs = views_savedsearches_load($subscription[&#39;sid&#39;]);  // Retrieving<br>
&gt; exposed filter setting for the subscriber using helper function of<br>
&gt; views_savedsearches<br>
&gt;<br>
&gt; $view_name = db_result(db_query(&quot;SELECT name FROM {views_view} WHERE<br>
&gt; vid = %d&quot;, $vs-&gt;vid));<br>
&gt;<br>
&gt; $view = views_get_view($view_name);<br>
&gt;<br>
&gt; if (is_object($view) &amp;&amp; is_object($vs)) { if ($view instanceof view)<br>
&gt; {<br>
&gt;<br>
&gt; // Apply $vs-&gt;filters $view-&gt;set_exposed_input($vs-&gt;filters);<br>
&gt;<br>
&gt; // The original code limits this value to 10 which is not much useful<br>
&gt; as new data at any point of time is anytime more than 10<br>
&gt; $view-&gt;pager[&#39;items_per_page&#39;] = 0;<br>
&gt;<br>
&gt; // Run the query   // $view at this point in both functions is<br>
&gt; exactly same ( did a diff ) $view-&gt;execute(&#39;default&#39;);<br>
&gt;<br>
&gt; $view-&gt;result  is empty for my batch process but has values for the<br>
&gt; old cron function. I am pretty sure(?), that I am not making a silly<br>
&gt; variable in scope mistake.<br>
&gt;<br>
&gt;<br>
&gt; Thanks in Advance<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ---------------------------------- Dipen Chaudhary QED42 : We build<br>
&gt; beautiful and scalable web strategies ( <a href="http://www.qed42.com" target="_blank">www.qed42.com</a><br>
</div></div>&gt; &lt;<a href="http://www.qed42.com" target="_blank">http://www.qed42.com</a>&gt; ) Blog: <a href="http://dipenchaudhary.com" target="_blank">dipenchaudhary.com</a><br>
&gt; &lt;<a href="http://dipenchaudhary.com" target="_blank">http://dipenchaudhary.com</a>&gt; Twitter: <a href="http://twitter.com/dipench" target="_blank">http://twitter.com/dipench</a><br>
&gt;<br>
<br>
</blockquote></div><br></div>