couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kiril Stankov <ki...@open-net.biz>
Subject Re: Issue with Reduce - SOLVED.
Date Wed, 28 Sep 2016 22:17:31 GMT
Hi all,

Please excuse my panic and numerous emails.
Issue is solved.
I didn't include in my code if(rereduce) {...}
Because the output of the first reduce is an object, in needs to be
processed differently than values passed initially to the reduce.
And it's all in the manual:
http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Reduce_Functions
(Promise to RTM in the future, and think a bit more before starting to
panic).

Hope this may be of use for others.

Sorry again, cheers and thanks!


On 29.9.2016 г. 0:35, Kiril Stankov wrote:
> Ok, sorry to bother with this issue, but it becomes a real mystery..
>
> So, this code for the reduce:
>
> function(keys, vals, rereduce) {
>  /*
>     some commented out for loop
>  */
>   return vals.length;
> }
>
> returns different values for these view code variations:
>
>   emit(doc._id, [doc.enabled, doc.trialEnabled]);  // returns 2
>   emit(doc, [doc.enabled, doc.trialEnabled]);  // returns 7
>   emit(null, [doc.enabled, doc.trialEnabled]);  // returns 31 - THE
> CORRECT count.
>
> How can the key affect the reduce?
>
> The view itself, without the reduce returns the correct docs always!
>
> On 28.9.2016 г. 23:37, Kiril Stankov wrote:
>> Well,
>>
>> actually, it got from bad to worst.
>> Compact view doesn't fix the problem anymore.
>> Now I always get wrong output.
>> Modifying the reduce to return just vals.length returns always 2.
>>
>> I found that the issue appears after each insertion of new doc to the DB.
>>
>> Any help will be highly appreciated, this is a production environment... :(
>>
>> ------------------------------------------------------------------------
>> *With best regards,*
>> Kiril Stankov,
>>
>> On 28.9.2016 г. 22:15, Jan Lehnardt wrote:
>>> Thanks!
>>>
>>> Do you have any more info on the type of operating system this runs on, the file
system situation, etc?
>>>
>>> Best
>>> Jan
>>> --
>>>
>>>> On 28 Sep 2016, at 17:47, Kiril Stankov <kiril@open-net.biz> wrote:
>>>>
>>>> Sure. See below.
>>>>
>>>> The view filters documents from all docs, the reduce gives statistics
>>>> depending on values.
>>>> Very simple.
>>>>
>>>> An interesting thing is that when it breaks vals.length always equals 2.
>>>>
>>>> BTW - just happened again, second time today. Compact of the view always
>>>> fixes this.
>>>>
>>>> View:
>>>>
>>>> function(doc) {
>>>>    if(doc.status!='deleted' && (!doc.endUser || doc.forwarded) &&
>>>> !doc.pID) {
>>>>      emit(null, [(doc.status=='new'),(doc.status=='forwarded')]);
>>>>    }
>>>> }
>>>>
>>>> Reduce:
>>>>
>>>> function(keys, vals, rereduce) {
>>>>  // reduce function
>>>>
>>>>  var result = {'new':0, 'total':vals.length,forwarded:0};   
>>>>  for(var i = 0; i < vals.length; i++) {
>>>>    result.new += vals[i][0]?1:0;
>>>>    result.forwarded+= vals[i][1]?1:0;
>>>>  }
>>>>  return result;
>>>> }
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> On 28.9.2016 г. 18:16, Jan Lehnardt wrote:
>>>>> Heya,
>>>>>
>>>>> Can you share the view code?
>>>>>
>>>>> Best
>>>>> Jan
>>>>> --
>>>>>
>>>>>> On 28 Sep 2016, at 15:38, Kiril Stankov <kiril@open-net.biz>
wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I just saw this again.
>>>>>> Reduce didn't work until compacting the View.
>>>>>>
>>>>>> This starts to be a serious problem.
>>>>>> Any help or suggestion how to debug this will be appreciated.
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> ------------------------------------------------------------------------
>>>>>> *With best regards,*
>>>>>> Kiril Stankov,
>>>>>>
>>>>>> On 24.9.2016 г. 20:43, Kiril Stankov wrote:
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I use CouchDb 1.6 and have a view with reduce (same on all databases),
>>>>>>> which returns some statistics.
>>>>>>>
>>>>>>> Suddenly, today, it started returning strange things, and I think
that
>>>>>>> the problem was that vals.length was returning 0. There are only
few
>>>>>>> dozens docs in this DB.
>>>>>>> I have a replication DB where everything worked fine, checked
that the
>>>>>>> code is exactly the same.
>>>>>>>
>>>>>>> After compacting the views on the first DB, it also started showing
the
>>>>>>> correct values.
>>>>>>>
>>>>>>> Any idea what could cause this? View corruption? There are plenty
of
>>>>>>> resources (disk, memory) on the host machine.
>>>>>>>
>



Mime
View raw message