[ 
https://issues.apache.org/jira/browse/COUCHDB-3046?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15945441#comment-15945441
 ] 

ASF GitHub Bot commented on COUCHDB-3046:
-----------------------------------------

Github user nickva commented on the issue:

    https://github.com/apache/couchdb/pull/425
  
    Thanks for taking a look @wohali  and @kxepal 
    
    There is a JIRA issue already: 
https://issues.apache.org/jira/browse/COUCHDB-3046.
    
    Also rebased on master.


> Improve reduce function overflow protection 
> --------------------------------------------
>
>                 Key: COUCHDB-3046
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-3046
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Database Core
>            Reporter: Nick Vatamaniuc
>
> The protection algorithm:
> https://github.com/apache/couchdb/blob/master/share/server/views.js#L36-L41
> When enabled, looks at couchjs' reduce command input and output line lengths 
> (as stringy-fied json). If 2*len(output) > len(input) and len(output) > 200 
> then an error is triggered.
> There a few issues in that scheme:
>  * No mode to first log failures only. This way user can handle bad reduce 
> functions as a warning rather than as a failed query result.
>  * Input line contains the length of the reduce function code itself. A large 
> reduce function body (say 100KB) might skew the result and allow allow 
> through reduce function with larger than needed output (without tripping the 
> error). 
>  * On the other hand, output size checking threshold is too small = 200. It 
> prevents functions using single large accumulator object (say with fields 
> like .sum, .count, .stddev, and so on) from working. The size of output will 
> be > 200 but, even though it won't be growing it will still be prevented from 
> running.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to