couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Hammond <>
Subject include_docs returning doc=null
Date Fri, 19 Feb 2010 03:29:50 GMT
I've struck a rare case where a view request with include_docs=true (but 
no stale=ok and no custom _id emitted from the view) is returning a row 
with doc=null.

I guess is might be possible for a document to be deleted between the 
view row being processed and the doc being opened for the view result 
but I don't think this is happening here - the view also emits the 
document _rev, and directly after getting doc=null I can open the 
specified document in futon and it has the same _rev as the view row. 
Unfortunately, couch is not offering any clues about what the problem is.

I tracked the code returning null to couch_httpd_view:doc_member - it does:

     case (catch couch_httpd_db:couch_doc_open(Db, DocId, Rev, [])) of
         #doc{} = Doc ->
             JsonDoc = couch_doc:to_json_obj(Doc, []),
             [{doc, JsonDoc}];
         _Else ->
             [{doc, null}]

So should the doc fail to open for any reason, you just get a null and 
the reason for the failure is discarded.  Is this by intent?  ISTM it 
would be better to instead, or also, provide an {error, Reason} element 
in the view row.

Does this sound desirable?  If so, should an error still leave a 
doc=null element, or only include the error element?  Let me know and 
I'll open a but and submit a patch...



View raw message