On Sun, Dec 30, 2018 at 10:32:31AM -0500, Andrew Dunstan wrote: > On 12/30/18 12:53 AM, Noah Misch wrote: > > stats_temp_directory = '/cygdrive/w/lorikeet/HEAD'
> > 2. stats_temp_directory is incompatible with TAP suites that start more than > > one node simultaneously. > > It's already a problem for "make -j check-world". > lorikeet is putting the stats_temp directory on a ramdisk. This is worth > testing in any case, but in lorikeet's case was done to help speed up > the tests. When I had a Raspberry Pi instance I did something similar, > for the same reason. I, too, value the ability to override stats_temp_directory for test runs. (I get stats.sql failures at high load, even on a high-performance machine. Using stats_temp_directory may fix that.) > The obvious quick fix would be to have PostgresNode.pm set this to the > default after inserting the TEMP_CONFIG file. True. > There are a couple of problems here that bear further consideration. > First, that the stats_temp_directory has to exist, and second that there > is no convenient way to make it unique. It would be nice if a) the > directory could be created if it didn't exist and b) some place-holder > in the name could be replaced by a unique identifier such as the node > id. If there is interest I'll work on these. One problem I foresee is > that it might lead to a plethora of stats temp directories being left > around. Still thinking about how we should deal with that. In the > buildfarm client I'd be tempted to create a directory to hold all the > run's stats_temp_directories and then clean it up at the end of the run. I'm thinking the server should manage this; during startup, create $stats_temp_directory/PostgreSQL.$postmaster_pid and store each stats file therein. Just before creating that directory, scan $stats_temp_directory and delete subdirectories that no longer correspond to live PIDs. Subdirectories would not build up over time, even if one deletes a test data directory while its subdirectory of stats_temp_directory still exists. For non-test applications, this makes stats_temp_directory safer to use. Today, we don't detect two clusters using the same stats_temp_directory. We don't even document that it's unacceptable. This makes it acceptable. Thanks, nm