{"push_id":765652839,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"299f38383c808bb8b180e00cca1d340f39f0dbe5","before":"dcea8835c79db253a5b12b06554d09b29801c7c6","commits":[{"sha":"299f38383c808bb8b180e00cca1d340f39f0dbe5","author":{"email":"2323051d1f3bf008858dd614cedc7ee5fde0a8cd@gmail.com","name":"Simon Baslé"},"message":"JCBC-829: Retry logic for prepared statements execution\n\nMotivation:\n-----------\nExecution of queries marked as no ad-hoc are implemented through\nprepared statements and a local cache of execution plans.\nHowever, such executions should be made more resilient to a few N1QL\nside errors by repreparing and re-executing once.\n\nModifications:\n--------------\nQueryExecutor's dispatchPrepared now has a retry logic in place. It will\npeek into the result of an EXECUTE (in the N1QL sense, corresponding to\nthe executePrepared method) and redo a PREPARE followed by EXECUTE if\nthere's a retry-warranting error.\n\nThis is only done once, but is active both if the statement is in cache\nor not.\n\nQueryExecutor has been reworked in order to allow unit testing. Unit\ntests have been added that verify various scenarios around prepared\nstatements, cache and retry.\n\nResults:\n--------\nNon ad-hoc queries are now retried once when the executed plan is\ndetermined to be outdated (errors 4050, 4070 and some 5000s).\nQueryExecutor unit tests pass.\n\nChange-Id: Iffe03bbbe3f760ff20964a71f44ff1b6d575d115\nReviewed-on: http://review.couchbase.org/54592\nTested-by: Simon Baslé <simon@couchbase.com>\nReviewed-by: Michael Nitschinger <michael.nitschinger@couchbase.com>","distinct":true,"url":"https://api.github.com/repos/couchbase/couchbase-java-client/commits/299f38383c808bb8b180e00cca1d340f39f0dbe5"}]}