Hi, On windows cfbot currently regularly hangs / times out. Presumably this is due to the issues discussed in https://postgr.es/m/CA%2BhUKG%2BG5DUNJfdE-qusq5pcj6omYTuWmmFuxCvs%3Dq1jNjkKKA%40mail.gmail.com which lead to reverting [1] some networking related changes everywhere but master.
But it's hard to tell - because the entire test task times out, we don't get to see debugging information. In earlier versions of the CI script I had tests run under a timeout command, that killed the entire test run. I found that to be helpful when working on AIO. But I removed that, in an attempt to simplify things, before submitting. Turns out it was needed complexity. The attached test adds a timeout (using git's timeout binary) to all vcregress invocations. I've not re-added it to the other OSs, but I'm on the fence about doing so. The diff is a bit larger than one might think necessary: Yaml doesn't like % - from the windows command variable syntax - at the start of an unquoted string... Separately, we should probably make Cluster.pm::psql() etc always use a "fallback" timeout (rather than just when the test writer thought it's necessary). Or perhaps Utils.pm's INIT should set up a timer after which an individual test is terminated? Greetings, Andres Freund [1] commit 75674c7ec1b1607e7013b5cebcb22d9c8b4b2cb6 Author: Tom Lane <t...@sss.pgh.pa.us> Date: 2022-01-25 12:17:40 -0500 Revert "graceful shutdown" changes for Windows, in back branches only. This reverts commits 6051857fc and ed52c3707, but only in the back branches. Further testing has shown that while those changes do fix some things, they also break others; in particular, it looks like walreceivers fail to detect walsender-initiated connection close reliably if the walsender shuts down this way. We'll keep trying to improve matters in HEAD, but it now seems unwise to push these changes into stable releases. Discussion: https://postgr.es/m/CA+hUKG+OeoETZQ=Qw5Ub5h3tmwQhBmDA=nuNO3KG=zwfuyp...@mail.gmail.com
>From e9795000729f649a861523c65376b978cea4a94c Mon Sep 17 00:00:00 2001 From: Andres Freund <and...@anarazel.de> Date: Tue, 1 Feb 2022 15:25:54 -0800 Subject: [PATCH] wip: time out tests on windows ci-os-only: windows --- .cirrus.yml | 81 +++++++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 677bdf0e65e..8e0ae69beea 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -366,6 +366,14 @@ task: # build MSBFLAGS: -m -verbosity:minimal "-consoleLoggerParameters:Summary;ForceNoAlign" /p:TrackFileAccess=false -nologo + # If tests hang forever, cirrus eventually times out. In that case log + # output etc is not uploaded, making the problem hard to debug. Of course + # tests internally should have shorter timeouts, but that's proven to not + # be sufficient. 15min currently is fast enough to finish individual test + # "suites". + T_C: "\"C:/Program Files/Git/usr/bin/timeout.exe\" -v -k60s 15m" + + only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*' windows_container: @@ -391,42 +399,43 @@ task: # Installation on windows currently only completely works from src/tools/msvc - cd src/tools/msvc && perl install.pl %CIRRUS_WORKING_DIR%/tmp_install - test_regress_parallel_script: - - perl src/tools/msvc/vcregress.pl check parallel - startcreate_script: - # paths to binaries need backslashes - - tmp_install\bin\pg_ctl.exe initdb -D tmp_check/db -l tmp_check/initdb.log --options=--no-sync - - echo include '%TEMP_CONFIG%' >> tmp_check/db/postgresql.conf - - tmp_install\bin\pg_ctl.exe start -D tmp_check/db -l tmp_check/postmaster.log - test_pl_script: - - perl src/tools/msvc/vcregress.pl plcheck - test_isolation_script: - - perl src/tools/msvc/vcregress.pl isolationcheck - test_modules_script: - - perl src/tools/msvc/vcregress.pl modulescheck - test_contrib_script: - - perl src/tools/msvc/vcregress.pl contribcheck - stop_script: - - tmp_install\bin\pg_ctl.exe stop -D tmp_check/db -l tmp_check/postmaster.log - test_ssl_script: - - set with_ssl=openssl - - perl src/tools/msvc/vcregress.pl taptest ./src/test/ssl/ - test_subscription_script: - - perl src/tools/msvc/vcregress.pl taptest ./src/test/subscription/ - test_authentication_script: - - perl src/tools/msvc/vcregress.pl taptest ./src/test/authentication/ - test_recovery_script: - - perl src/tools/msvc/vcregress.pl recoverycheck - test_bin_script: - - perl src/tools/msvc/vcregress.pl bincheck - test_pg_upgrade_script: - - perl src/tools/msvc/vcregress.pl upgradecheck - test_ecpg_script: - # tries to build additional stuff - - vcvarsall x64 - # References ecpg_regression.proj in the current dir - - cd src/tools/msvc - - perl vcregress.pl ecpgcheck + test_regress_parallel_script: | + %T_C% perl src/tools/msvc/vcregress.pl check parallel + startcreate_script: | + rem paths to binaries need backslashes + tmp_install\bin\pg_ctl.exe initdb -D tmp_check/db -l tmp_check/initdb.log --options=--no-sync + echo include '%TEMP_CONFIG%' >> tmp_check/db/postgresql.conf + tmp_install\bin\pg_ctl.exe start -D tmp_check/db -l tmp_check/postmaster.log + + test_pl_script: | + %T_C% perl src/tools/msvc/vcregress.pl plcheck + test_isolation_script: | + %T_C% perl src/tools/msvc/vcregress.pl isolationcheck + test_modules_script: | + %T_C% perl src/tools/msvc/vcregress.pl modulescheck + test_contrib_script: | + %T_C% perl src/tools/msvc/vcregress.pl contribcheck + stop_script: | + tmp_install\bin\pg_ctl.exe stop -D tmp_check/db -l tmp_check/postmaster.log + test_ssl_script: | + set with_ssl=openssl + %T_C% perl src/tools/msvc/vcregress.pl taptest ./src/test/ssl/ + test_subscription_script: | + %T_C% perl src/tools/msvc/vcregress.pl taptest ./src/test/subscription/ + test_authentication_script: | + %T_C% perl src/tools/msvc/vcregress.pl taptest ./src/test/authentication/ + test_recovery_script: | + %T_C% perl src/tools/msvc/vcregress.pl recoverycheck + test_bin_script: | + %T_C% perl src/tools/msvc/vcregress.pl bincheck + test_pg_upgrade_script: | + %T_C% perl src/tools/msvc/vcregress.pl upgradecheck + test_ecpg_script: | + rem tries to build additional stuff + vcvarsall x64 + rem References ecpg_regression.proj in the current dir + cd src/tools/msvc + %T_C% perl vcregress.pl ecpgcheck on_failure: *on_failure -- 2.34.0