[ 
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)

Reply via email to