Re: REVIEW proposal: a validator for configuration files - Mailing list pgsql-hackers

From Alexey Klyukin
Subject Re: REVIEW proposal: a validator for configuration files
Date
Msg-id 4E6CD53D-E6FC-4F59-951A-876BD0D31F1B@commandprompt.com
Whole thread Raw
In response to REVIEW proposal: a validator for configuration files  (Andy Colson <andy@squeakycode.net>)
Responses Re: REVIEW proposal: a validator for configuration files
Re: REVIEW proposal: a validator for configuration files
List pgsql-hackers
Hi Andy,

On Sep 7, 2011, at 6:40 AM, Andy Colson wrote:

> Hi Alexey, I was taking a quick look at this patch, and have a question for ya.
>
...

> Where did the other warnings go?  Its right though, line 570 is bad.  It also seems to have killed the server.  I
havenot gotten through the history of messages regarding this patch, but is it supposed to kill the server if there is
asyntax error in the config file? 


Thank you for looking at this patch. v4 was more a "what if" concept that took a lot of time for somebody to look at.
Therewere a lot of problems with it, but I think I've nailed down most of them. 

Attached is v5. It should fix both problems you've experienced with v4. As with the current code, the startup process
getsinterrupted on any error detected in the configuration file. Unlike the current code, the patch tries to report all
ofthem before bailing out. The behavior during configuration reload has changed significantly. Instead of ignoring all
changesafter the first error, the code  reports the problematic value and continues. It only skips applying new values
completelyon syntax errors and invalid configuration option names. In no cases  should it bring the server down during
reload.

One problem I'm not sure how to address is the fact that we require 2 calls of set_config_option for each option, one
toverify the new value and another to actually apply it. Normally, this function returns true for a valid value and
falseif it is unable to set the new value for whatever reason (either the value is invalid, or the value cannot be
changedin the context of the caller). However, calling it once per value in the 'apply' mode during reload produces
falsefor every unchanged value that can only be changed during startup (i.e. shared_buffers, or max_connections). If we
ignoreits return value, we'll lose the ability to detect whether invalid values were encountered during the reload and
reportthis fact at the end of the function. I think the function should be changed, as described in my previous email
(http://archives.postgresql.org/message-id/97A66029-9D3E-43AF-95AA-46FE1B447447@commandprompt.com)and I'd like to hear
otheropinions on that. Meanwhile, due to 2 calls to set_config_option, it currently reports all invalid values twice.
Ifothers will be opposed to changing the set_config_option, I'll fix this by removing the first, verification call and
final'errors were detected' warning to avoid 'false positives' on that (i.e. the WARNING you saw with the previous
versionfor the valid .conf). 

I'd appreciate your further comments and suggestions.

Thank you.

--
Alexey Klyukin        http://www.commandprompt.com
The PostgreSQL Company – Command Prompt, Inc.


Attachment

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: new createuser option for replication role
Next
From: Andy Colson
Date:
Subject: WARNING: pgstat waiting