Conception of max-retry option seems strange for me. if number of retries reaches max-retry option, then we just increment counter of failed transaction and try again (possibly, with different random numbers). At the end we should distinguish number of error transaction and failed transaction, to found this difference documentation suggests to rerun pgbench with debugging on.

May be I didn't catch an idea, but it seems to me max-tries should be removed. On transaction searialization or deadlock error pgbench should increment counter of failed transaction, resets conditional stack, variables, etc but not a random generator and then start new transaction for the first line of script.

ISTM that there is the idea is that the client application should give up at some point are report an error to the end user, kind of a "timeout" on trying, and that max-retry would implement this logic of giving up: the transaction which was intented, represented by a given initial random generator state, could not be committed as if after some iterations.

Maybe the max retry should rather be expressed in time rather than number of attempts, or both approach could be implemented? But there is a logic of retrying the same (try again what the client wanted) vs retrying something different (another client need is served).

--
Fabien.

Reply via email to