Re: [HACKERS] WIP Patch: Pgbench Serialization and deadlock errors
От | Marina Polyakova |
---|---|
Тема | Re: [HACKERS] WIP Patch: Pgbench Serialization and deadlock errors |
Дата | |
Msg-id | f153ffd55f481d714ee44afc99ecc67e@postgrespro.ru обсуждение исходный текст |
Ответ на | Re: [HACKERS] WIP Patch: Pgbench Serialization and deadlock errors (Fabien COELHO <coelho@cri.ensmp.fr>) |
Ответы |
Re: [HACKERS] WIP Patch: Pgbench Serialization and deadlock errors
|
Список | pgsql-hackers |
On 11-07-2018 22:34, Fabien COELHO wrote: >> can we try something like this? >> >> PGBENCH_ERROR_START(DEBUG_FAIL) >> { >> PGBENCH_ERROR("client %d repeats the failed transaction (try %d", > > Argh, no? I was thinking of something much more trivial: > > pgbench_error(DEBUG, "message format %d %s...", 12, "hello world"); > > If you really need some complex dynamic buffer, and I would prefer > that you avoid that, then the fallback is: > > if (level >= DEBUG) > { > initPQstuff(&msg); > ... > pgbench_error(DEBUG, "fixed message... %s\n", msg); > freePQstuff(&msg); > } > > The point is to avoid building the message with dynamic allocation and > so > if in the end it is not used. Ok! About avoidance - I'm afraid there's one more piece of debugging code with the same problem: else if (command->type == META_COMMAND) { ... initPQExpBuffer(&errmsg_buf); printfPQExpBuffer(&errmsg_buf, "client %d executing \\%s", st->id, argv[0]); for (i = 1; i < argc; i++) appendPQExpBuffer(&errmsg_buf, " %s", argv[i]); appendPQExpBufferChar(&errmsg_buf, '\n'); ereport(ELEVEL_DEBUG, (errmsg("%s", errmsg_buf.data))); termPQExpBuffer(&errmsg_buf); -- Marina Polyakova Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
В списке pgsql-hackers по дате отправления: