Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated)
От | Robert Haas |
---|---|
Тема | Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) |
Дата | |
Msg-id | CA+TgmoY+kowO6FzVZ+-=BmkKz98du7bb4SedE-x-W0kLEgekCg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) (Alvaro Herrera <alvherre@2ndquadrant.com>) |
Ответы |
Re: Re: BUG #12990: Missing pg_multixact/members files
(appears to have wrapped, then truncated)
Re: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated) |
Список | pgsql-bugs |
On Tue, Apr 28, 2015 at 2:23 AM, Alvaro Herrera <alvherre@2ndquadrant.com> wrote: > Ah, yeah, we do want the full range; that's already built in the code > elsewhere. > > In this version, I used your WouldWrap function, but there was a bug in > your formulation of the call site: after the WARNING has been issued > once, it is never issued again for that wraparound cycle, because the > second time around the nextOffset has already crossed the boundary and > your routine returns false. IMO this is wrong and the warning should be > issued every time. To fix that problem I removed the offsetWarnLimit > altogether, and instead do WouldWrap() of the value against > offsetStopLimit minus the 20 segments. That way, the warning is issued > continuously until the offsetStopLimit is reached (once there, > obviously, only the error is thrown, not the warning, which is correct.) > > I also added a call to DetermineSafeOldestOffset() in TrimMultiXact: > as far as I can tell, this is necessary for the time when a standby > exits recovery, because when InRecovery we return early from > DetermineSafeOldestOffset() so the safe point would never get set. Putting the period inside the parentheses here looks weird? + "This command would create a multixact with %u members, which exceeds remaining space (%u members.)", Maybe rephrase as: "This command would create a multixact with %u members, but the remaining space is only enough for %u members." I don't think this should have a comma: + errhint("Execute a database-wide VACUUM in that database, with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."))); This looks like excess brace-ifiaction: + if (start < boundary) + { + return finish >= boundary || finish < start; + } + else + { + return finish >= boundary && finish < start; + } I think this is confusing: -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
В списке pgsql-bugs по дате отправления: