8ef34ec1

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Run persistent baseline phase in its own database

runSqitchPersistentChecks used to run the persistent baseline phase
(phase 1) and the sqitch deploy phase (phase 2) against the same
ConnectionPool, with a DROP/CREATE SCHEMA dance in between. Two
problems:

  * If phase 1 leaves anything outside public/sqitch (extensions,
    other schemas, dangling sequences) the wipe doesn't remove it and
    phase 2's snapshot sees the leftovers.
  * If phase 1 crashes partway, phase 2 inherits whatever state it
    left behind.

Allocate a fresh ConnectionPool for phase 1 via
connectionPoolSetupFunc against the same TemplateDB. The freshly-copied
database is empty when phase 1 starts and torn down (DROP DATABASE
WITH FORCE) the moment the snapshot is captured. Phase 2 stays on the
caller's pool, exactly as before.

sqitchPersistentExtraSetup haddock updated to note that the two runs
now happen on different databases.

Suite timing

Time to Start Worker time Duration Time to finish
Config 0s 2s 2s 2s
Eval 3s 46s 46s 50s
Build 10s 1m04s 35s 45s
Test - - - -
Deploy - - - -
Suite 0s 1m53s 50s 50s

Timeline

0s10s20s30s40s50s