unsigned int id;
string_t *queries;
+ bool can_retry;
};
struct dict_proxy_settings {
ctx->ctx.dict = _dict;
ctx->id = ++dict->transaction_id_counter;
ctx->queries = str_new(default_pool, 256);
+ ctx->can_retry = TRUE;
DLLIST_PREPEND(&dict->transactions, ctx);
return &ctx->ctx;
ctx->id);
cmd = client_dict_cmd_init(dict, str_c(ctx->queries));
cmd->trans = ctx;
+ cmd->retry_errors = ctx->can_retry;
cmd->callback = client_dict_transaction_commit_callback;
cmd->api_callback.commit = callback;
(struct client_dict_transaction_context *)_ctx;
const char *query;
+ /* Retrying may cause it to increment too many times */
+ ctx->can_retry = FALSE;
+
query = t_strdup_printf("%c%u\t%s\t%lld\n",
DICT_PROTOCOL_CMD_ATOMIC_INC,
ctx->id, str_tabescape(key), diff);