Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
None
-
None
-
None
-
{"couchdb":"Welcome","version":"0.10.0a776990"}
-
Regular Contributors Level (Easy to Medium)
Description
If a typo in a view definition causes it to return a function instead of a normal value:
- the view server crashes
- you get a huge Erlang barf in the log with worrying messages like "OS process timed out" and "brutal kill"
I got all this just by accidentally writing "vs.shift" instead of "vs.shift()"
The fundamental problem is that a function cannot be serialised in toJSON, but the error message is not helpful:
OS Process Log Message: Error converting object to JSON: TypeError: {Array:function (v) {var ... snip loads ... "Object"] is not a function
When actually the problem is that the object I was trying to convert was a function
I will attach some code which replicates this, and the barf generated.
Of course this is entirely down to user error in an invalid map/reduce function. However there's already a clean error for 'undefined', maybe this could be done for 'function' too (or indeed any non-serialisable entity)