Re: Add the replication origin name and commit-LSN to logical replication worker errcontext - Mailing list pgsql-hackers
From | Masahiko Sawada |
---|---|
Subject | Re: Add the replication origin name and commit-LSN to logical replication worker errcontext |
Date | |
Msg-id | CAD21AoCfwhAWWE47NCOQ7R6nXEBNidq2_bBJf_ETpbDXbbtQCA@mail.gmail.com Whole thread Raw |
In response to | Re: Add the replication origin name and commit-LSN to logical replication worker errcontext (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
List | pgsql-hackers |
On Wed, Mar 2, 2022 at 4:07 PM Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote: > > At Wed, 2 Mar 2022 14:39:54 +0900, Masahiko Sawada <sawada.mshk@gmail.com> wrote in > > On Wed, Mar 2, 2022 at 11:55 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > On Mon, Feb 28, 2022 at 5:46 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > > > > > > > I've attached two patches: the first one changes > > > > apply_error_callback() so that it uses complete sentences with if-else > > > > blocks in order to have a translation work, > > > > > > > > > > This is an improvement over what we have now but I think this is still > > > not completely correct as per message translation rules: > > > + else > > > + errcontext("processing remote data during \"%s\" in transaction %u at %s", > > > + logicalrep_message_type(errarg->command), > > > + errarg->remote_xid, > > > + (errarg->ts != 0) ? timestamptz_to_str(errarg->ts) : "(not-set)"); > > > > > > As per guidelines [1][2], we don't prefer to construct messages at > > > run-time aka we can do better for the following part: + (errarg->ts > > > != 0) ? timestamptz_to_str(errarg->ts) : "(not-set)". I think we need > > > to use if-else here to split it further. If you agree, then the same > > > needs to be dealt with in other parts of the patch as well. > > > > I intended to use "(not-set)" as a value rather than a word in the > > sentence so I think it doesn't violate the guidelines. We can split it > > further as you suggested but we will end up having more if-else > > branches. > > It seems to me exactly our way. In the first place I doubt > "(not-set)" fits the place for timestamp even in English. > > Moreover, if we (I?) translated the message into Japanese, it would > look like; > > CONTEXT: (not-set)にトランザクション 2352314 内で "TRUNCATE" でのリモートデータの処理中 > > I don't think that looks fine. Translating "(not-set)" makes things > even worse. > > CONTEXT: (非設定)にトランザクション 2352314 内で "TRUNCATE" でのリモートデータの処理中 > > Yes, I can alleviate that strangeness a bit by modulating it, but it > still looks odd. Indeed. But the timestamp is removed in the latest version patch. > > CONTEXT: 時刻(非設定)、トランザクション 2352314 内で "TRUNCATE" でのリモートデータの処理中 > > Rather, I'd prefer simply to list the attributes. > > CONTEXT: processing remote data during "MESSAGE". Transaction (unknown). Time (unknown), replication target relation (unknown),column (unknown) > CONTEXT: "MESSAGE"でのリモートデータの処理中. トランザクション (不明). 時刻 (不明), レプリケーション対象リレーション (不明), column (不明) Peter Smith also seems to prefer this style. Looking at existing error context messages, we use this list style in logical.c: static void output_plugin_error_callback(void *arg) { LogicalErrorCallbackState *state = (LogicalErrorCallbackState *) arg; /* not all callbacks have an associated LSN */ if (state->report_location != InvalidXLogRecPtr) errcontext("slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X", NameStr(state->ctx->slot->data.name), NameStr(state->ctx->slot->data.plugin), state->callback_name, LSN_FORMAT_ARGS(state->report_location)); else errcontext("slot \"%s\", output plugin \"%s\", in the %s callback", NameStr(state->ctx->slot->data.name), NameStr(state->ctx->slot->data.plugin), state->callback_name); } Regards, -- Masahiko Sawada EDB: https://www.enterprisedb.com/
pgsql-hackers by date: