On 6 March 2018 at 16:07, Craig Ringer <cr...@2ndquadrant.com> wrote:
> On 6 March 2018 at 09:58, Craig Ringer <cr...@2ndquadrant.com> wrote: > >> On 5 March 2018 at 23:25, David Steele <da...@pgmasters.net> wrote: >> >>> Hi Craig, >>> >>> On 1/21/18 5:45 PM, Craig Ringer wrote: >>> > On 6 January 2018 at 08:28, Alvaro Herrera <alvhe...@alvh.no-ip.org >>> > <mailto:alvhe...@alvh.no-ip.org>> wrote: >>> > >>> > I think this should use ReadDirExtended with an elevel less than >>> ERROR, >>> > and do nothing. >>> > >>> > Why have strcmp(.) and strcmp(..)? These are going to be skipped >>> by the >>> > comparison to "xid" prefix anyway. Looks like strcmp processing >>> > power waste. >>> > >>> > Please don't use bare sprintf() -- upgrade to snprintf. >>> > >>> > With this coding, if I put a root-owned file "xidfoo" in a replslot >>> > directory, it will PANIC the server. Is that okay? Why not read >>> the >>> > file name with sscanf(), since we know the precise format it has? >>> Then >>> > we don't need to bother with random crap left around. Maybe a >>> good time >>> > to put the "xid-%u-lsn-%X-%X.snap" literal in a macro? I guess >>> the >>> > rationale is that if you let random people put "xidfoo" files in >>> your >>> > replication slot dirs, you deserve a PANIC anyway, but I'm not >>> sure. >>> > >>> > I'm happy to address those comments. >>> > >>> > The PANIC probably made sense when it was only done on startup, but not >>> > now it's at runtime. >>> > >>> > The rest is mainly retained from the prior code, but it's a good chance >>> > to make those changes. >>> This patch was marked Waiting on Author last December. Do you know when >>> you'll have a chance to provide an updated patch? >>> >>> Given that it's a bug fix it would be good to see a patch for this CF, >>> or very soon after. >>> >>> >> Thanks for the reminder. I'll address it today if I can. >> >> > Revised patch attached. > > I have _not_ rewritten to use sscanf yet. I'll do that next, so you can > choose the fewer-changes patch for backpatching if desired. > > ... and I'm not convinced it's really an improvement. uint32 xid, lsn_high, lsn_low; if (sscanf(spill_de->d_name, REORDERBUFFER_TXN_FILENAME_FORMAT, xid, lsn_high, lsn_low) == 3) { since we don't use the scanned-out information. I guess my answer to causing problems if you create a file named "xidfoo" in a slot directory is yeah, don't do that. Note that this patch changes the PANIC to ERROR. This will promote to FATAL during the startup process, which I think is fine. Objections? -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services