On 2022-Nov-23, Alvaro Herrera wrote: > I suggest that we could improve that elog() so that it includes the > members of the multixact in question, which could help us better > understand what is going on.
Something like the attached. It would result in output like this: WARNING: new multixact has more than one updating member: 0 2[17378 (keysh), 17381 (nokeyupd)] Then it should be possible to trace (in pg_waldump output) the operations of each of the transactions that have any status in the multixact that includes some form of "upd". -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/ "Just treat us the way you want to be treated + some extra allowance for ignorance." (Michael Brusser)
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index 204aa95045..e1191a7564 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -799,7 +799,8 @@ MultiXactIdCreateFromMembers(int nmembers, MultiXactMember *members) if (ISUPDATE_from_mxstatus(members[i].status)) { if (has_update) - elog(ERROR, "new multixact has more than one updating member"); + elog(ERROR, "new multixact has more than one updating member: %s", + mxid_to_string(InvalidMultiXactId, nmembers, members)); has_update = true; } }