Re: Refactor StartupXLOG?
| От | Heikki Linnakangas |
|---|---|
| Тема | Re: Refactor StartupXLOG? |
| Дата | |
| Msg-id | b96bf148-a2c4-f27f-af53-5292ff6961d2@iki.fi обсуждение исходный текст |
| Ответ на | Refactor StartupXLOG? (Thomas Munro <thomas.munro@enterprisedb.com>) |
| Ответы |
Re: Refactor StartupXLOG?
|
| Список | pgsql-hackers |
On 09/24/2016 05:01 AM, Thomas Munro wrote:
> What would the appetite be for that kind of refactoring work,
> considering the increased burden on committers who have to backpatch
> bug fixes? Is it a project goal to reduce the size of large
> complicated functions like StartupXLOG and heap_update? It seems like
> a good way for new players to learn how they work.
+1. Yes, it does increase the burden of backpatching, but I think it'd
still be very much worth it.
A couple of little details that caught my eye at a quick read:
> /* Try to find a backup label. */
> if (read_backup_label(&checkPointLoc, &backupEndRequired,
> &backupFromStandby))
> {
> wasShutdown = ProcessBackupLabel(xlogreader, &checkPoint, checkPointLoc,
> &haveTblspcMap);
>
> /* set flag to delete it later */
> haveBackupLabel = true;
> }
> else
> {
> /* Clean up any orphaned tablespace map files with no backup label. */
> CleanUpTablespaceMap();
> ...
This is a bit asymmetric: In the true-branch, ProcessBackupLabel() reads
the tablespace map, and sets InArchiveRecovery and StandbyMode, but in
the false-branch, StartupXLog() calls CleanupTablespaceMap() and sets
those variables directly.
For functions like BeginRedo, BeginHotStandby, ReplayRedo, etc., I think
it'd be better to have the "if (InRecovery)" checks in the caller,
rather than in the functions.
- Heikki
В списке pgsql-hackers по дате отправления: