You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by "Eric Avdey (JIRA)" <ji...@apache.org> on 2015/08/24 15:46:46 UTC

[jira] [Created] (COUCHDB-2785) Call to filtered _changes crashes on non-coordinator nodes

Eric Avdey created COUCHDB-2785:
-----------------------------------

             Summary: Call to filtered _changes crashes on non-coordinator nodes
                 Key: COUCHDB-2785
                 URL: https://issues.apache.org/jira/browse/COUCHDB-2785
             Project: CouchDB
          Issue Type: Bug
      Security Level: public (Regular issues)
            Reporter: Eric Avdey


A call to {{_changes}} end-point with {{filter}} parameter crashes on non-coordinator nodes with :

{code:title=node.log}
2015-08-24 10:21:48.051 [error] <0.16621.0>@couch_log:error:35 rexi_server error:{case_clause,{error,einval}} [{mochiweb_request,get,2},{couch_httpd_external,json_req_obj,3},{couch_changes,filter,3},{fabric_rpc,changes_enumerator,2},{couch_btree,stream_kv_node2,8},{couch_btree,stream_kp_node,8},{couch_btree,fold,4},{couch_db,changes_since,5}]
{code}

The root cause is that in a clustered environment the coordinator node, i.e. the node that received HTTP request, passes its {{mochi_req}} record to the secondary nodes. Filter parameter for {{_changes}} expects nodes to pull peer from the request's record and that crashing on the secondary nodes since a socket in the request is foreign for them. 

The case is not reliably reproducible, because in majority of the situations the coordinator node gets the changes response and cancels the fabric call before remote nodes start to execute it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)