couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Newson (JIRA)" <j...@apache.org>
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

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

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
throw).

> don't throw errors in the core API modules like couch_db
> --------------------------------------------------------
>
>                 Key: COUCHDB-2050
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-2050
>             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
(v6.1.5#6160)

Mime
View raw message