couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Newson (JIRA)" <>
Subject [jira] [Commented] (COUCHDB-2050) don't throw errors in the core API modules like couch_db
Date Thu, 06 Feb 2014 11:22:09 GMT


Robert Newson commented on COUCHDB-2050:

Let's keep in mind how difficult deep changes like that are for hot code upgrades. Post-merge,
couchdb should be capable of zero-downtime upgrades (I grant it'll take a couple of iterations
to make that a reality). I don't want to use this as a stick to beat off any deep and sensible
changes, but it's not a factor to ignore.

We should have some guidelines on when to throw and when to return error tuples, as well as
guidelines on when to simply function_clause (the many {ok, Thing} = mod:fun(args) patterns,
making all of those test the result will be very burdensome and unidiomatic).

Erlang makes things a little more fun by having three ways to throw (there's exit, error and

> don't throw errors in the core API modules like couch_db
> --------------------------------------------------------
>                 Key: COUCHDB-2050
>                 URL:
>             Project: CouchDB
>          Issue Type: Improvement
>      Security Level: public(Regular issues) 
>          Components: Database Core
>            Reporter: Benoit Chesneau
> If we look at the code of {{couch_db:open/2}} for example, we are catching error in it
and rethrowing them. Where a more convenient pattern would be to return {ok, db} | {error,
Error} . 
> While throwing easier makes catching Error in the HTTP layer currently, it force us to
catch calls in other cases when you are working for example to an Erlang module.

This message was sent by Atlassian JIRA

View raw message