Thread: Refactor xlog.c #1 - startup.c

Refactor xlog.c #1 - startup.c

From
Simon Riggs
Date:
Patch removes stuff related to "startup process" and creates files
under src/$DIR/postmaster for this code.

This makes startup process look more like bgwriter, walwriter etc..

Other refactoring patches to follow, chipping away at xlog.c.

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Attachment

Re: Refactor xlog.c #1 - startup.c

From
Robert Haas
Date:
On Wed, Nov 2, 2011 at 4:44 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
> Patch removes stuff related to "startup process" and creates files
> under src/$DIR/postmaster for this code.
>
> This makes startup process look more like bgwriter, walwriter etc..

In general, +1.

But I don't think we want duplicate function prototypes for the same
functions, so -1 for this hunk:

+ /* in xlog.c */
+ extern void WakeupRecovery(void);
+ extern void StartupXLOG(void);

The existing prototypes in xlog.h seem like they should be just fine.

IsPromoteTriggered could be simplified to just "return
promote_triggered;"; you don't need to branch.

I think one thing that would be worth considering in terms of future
refactoring is to split up the gigantic StartupXLOG() function in some
fashion.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: Refactor xlog.c #1 - startup.c

From
Simon Riggs
Date:
On Wed, Nov 2, 2011 at 1:14 PM, Robert Haas <robertmhaas@gmail.com> wrote:
> On Wed, Nov 2, 2011 at 4:44 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
>> Patch removes stuff related to "startup process" and creates files
>> under src/$DIR/postmaster for this code.
>>
>> This makes startup process look more like bgwriter, walwriter etc..
>
> In general, +1.

Thanks for the review.

> But I don't think we want duplicate function prototypes for the same
> functions, so -1 for this hunk:
>
> + /* in xlog.c */
> + extern void WakeupRecovery(void);
> + extern void StartupXLOG(void);
>
> The existing prototypes in xlog.h seem like they should be just fine.

That was to avoid having startup.c include xlog.h, which it doesn't
really need to see.

Not worried either way, so I'll do as you suggest.

> IsPromoteTriggered could be simplified to just "return
> promote_triggered;"; you don't need to branch.

Happy to do that.

> I think one thing that would be worth considering in terms of future
> refactoring is to split up the gigantic StartupXLOG() function in some
> fashion.

There are a great many other long functions in Postgres, and few of
them as critical as that one.

I don't see a reason to touch it, and would do so last of all of any
code in xlog.c

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


Re: Refactor xlog.c #1 - startup.c

From
Magnus Hagander
Date:
On Wed, Nov 2, 2011 at 14:33, Simon Riggs <simon@2ndquadrant.com> wrote:
> On Wed, Nov 2, 2011 at 1:14 PM, Robert Haas <robertmhaas@gmail.com> wrote:
>> On Wed, Nov 2, 2011 at 4:44 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
>>> Patch removes stuff related to "startup process" and creates files
>>> under src/$DIR/postmaster for this code.
>>>
>>> This makes startup process look more like bgwriter, walwriter etc..
>>
>> In general, +1.
>
> Thanks for the review.
>
>> But I don't think we want duplicate function prototypes for the same
>> functions, so -1 for this hunk:
>>
>> + /* in xlog.c */
>> + extern void WakeupRecovery(void);
>> + extern void StartupXLOG(void);
>>
>> The existing prototypes in xlog.h seem like they should be just fine.
>
> That was to avoid having startup.c include xlog.h, which it doesn't
> really need to see.

Double prototypes seems to me like it's a cure worse than the disease to me...

> Not worried either way, so I'll do as you suggest.

+1.

--
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/


Re: Refactor xlog.c #1 - startup.c

From
Simon Riggs
Date:
On Wed, Nov 2, 2011 at 1:44 PM, Magnus Hagander <magnus@hagander.net> wrote:

> Double prototypes seems to me like it's a cure worse than the disease to me...

Doubling them was just a mistake. Anyway, thats gone now.

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services