You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by GitBox <gi...@apache.org> on 2020/03/16 18:26:39 UTC

[GitHub] [couchdb] nickva opened a new pull request #2670: Handle transaction cancelled errors in list_dbs_info/3

nickva opened a new pull request #2670: Handle transaction cancelled errors in list_dbs_info/3
URL: https://github.com/apache/couchdb/pull/2670
 
 
   ### Overview 
   
   `list_dbs_info/3` maintains a queue of up to 100 futures which are used to
   concurrently fetch data. Previously, if the transaction was reset, and the
   accumulator inside the fold may have had futures from a previous transaction,
   which have gotten their results yet, they threw a transaction_canceled (1025)
   error.
   
   To fix this, if we're in a read-only transaction, we return the tx object in
   the opaque db info record. Then, if `erlfdb:wait/1` throws a transaction
   canceled error, we re-fetch the future from the now restarted transaction.
   
   Potentially, the transaction may also time-out while the futures queues is
   drained after the main range fold has finished already. Handle that case by
   reseting the transaction and then re-fetching the futures. To avoid an infinite
   loop we allow up to 2 retries only.
   
   This approach is not the most optimal but simpler as it hides the complexity
   inside the fabric2_fdb module where we already handle these conditions. It
   means that every 5 or so seconds we might have to refetch less than 100 extra
   futures from the queue (as some or all may have gotten their results back
   already).
   
   ### Testing recommendations
   
   ```
   make check-fdb
   ```
   
   Then check coverage in fabric2_fdb with `open src/fabric/.eunit/index.html`

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [couchdb] nickva merged pull request #2670: Handle transaction cancelled errors in list_dbs_info/3

Posted by GitBox <gi...@apache.org>.
nickva merged pull request #2670: Handle transaction cancelled errors in list_dbs_info/3
URL: https://github.com/apache/couchdb/pull/2670
 
 
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services