nickva opened a new pull request #3552:
URL: https://github.com/apache/couchdb/pull/3552


   Add `buggify-elixir-suite` target to run Elixir integration tests under 
FoundationDB's client buggify mode [1]. In this mode, the FDB C client in the 
`erlfdb` application will periodically throw mostly retryable errors (`1009`, 
`1007`, etc). Transaction closures should properly handle retryable errors 
without side-effects such as re-sending response data to the user more than 
once or, attempt to re-read data from the socket after it was already read once.
   
   In order to avoid false positives, provide a custom .ini settings file which 
disables transaction timeouts (`1031` errors). Those are not retryable by 
default, as far as the `on_error` callback is concerned. Ff we do have timeouts 
set ( = 60000), it signals the FoundationDB client that we expect to handle 
timeouts in buggify mode, so it starts throwing them [2]. Since we don't handle 
those everywhere we get quite a few false positive errors.
   
   Buggify settings I believe are the default -- 25% chance to activate an 
error, and 25% chance of firing the error when the code passes over that 
section. In most test runs this should result in a pass, but sometimes, due to 
lingering bugs, there will be timeouts, 409 conflicts and other failures so we 
cannot yet turn this into a reliable integration test step.
   
   [1] https://apple.github.io/foundationdb/client-testing.html
   
   [2] 
https://github.com/apple/foundationdb/blob/master/fdbclient/ReadYourWrites.actor.cpp#L1191-L1194
   


-- 
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:
[email protected]


Reply via email to