agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH v1] Replace min_safe_lsn with "distance" in pg_replication_slots 7+ messages / 2 participants [nested] [flat]
* [PATCH v1] Replace min_safe_lsn with "distance" in pg_replication_slots @ 2020-06-30 12:09 Kyotaro Horiguchi <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Kyotaro Horiguchi @ 2020-06-30 12:09 UTC (permalink / raw) pg_replication_slot.min_safe_lsn, which shows the oldest LSN kept in pg_wal, is doubtful in usability for monitoring. Change it to distance, which shows how many bytes the server can advance before the slot loses required segments. --- src/backend/access/transam/xlog.c | 39 +++++++++++++++++++++++ src/backend/catalog/system_views.sql | 2 +- src/backend/replication/slotfuncs.c | 19 +++++------ src/include/access/xlog.h | 1 + src/include/catalog/pg_proc.dat | 4 +-- src/test/recovery/t/019_replslot_limit.pl | 20 ++++++------ src/test/regress/expected/rules.out | 4 +-- 7 files changed, 62 insertions(+), 27 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index fd93bcfaeb..1f27639912 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -9570,6 +9570,45 @@ GetWALAvailability(XLogRecPtr targetLSN) return WALAVAIL_REMOVED; } +/* + * Calculate how many bytes we can advance from currptr until the targetLSN is + * removed. + * + * Returns 0 if the distance is invalid. + */ +uint64 +DistanceToWALHorizon(XLogRecPtr targetLSN, XLogRecPtr currptr) +{ + XLogSegNo targetSeg; + XLogSegNo keepSegs; + XLogSegNo failSeg; + XLogRecPtr horizon; + + XLByteToSeg(targetLSN, targetSeg, wal_segment_size); + keepSegs = 0; + + /* no limit if max_slot_wal_keep_size is invalid */ + if (max_slot_wal_keep_size_mb < 0) + return 0; + + /* How many segments slots can keep? */ + keepSegs = ConvertToXSegs(max_slot_wal_keep_size_mb, wal_segment_size); + + /* override by wal_keep_segments if needed */ + if (wal_keep_segments > keepSegs) + keepSegs = wal_keep_segments; + + /* calculate the LSN where targetLSN is lost when currpos reaches */ + failSeg = targetSeg + keepSegs + 1; + XLogSegNoOffsetToRecPtr(failSeg, 0, wal_segment_size, horizon); + + /* If currptr already beyond the horizon, return zero. */ + if (currptr > horizon) + return 0; + + /* return the distance from currptr to the horizon */ + return horizon - currptr; +} /* * Retreat *logSegNo to the last segment that we need to retain because of diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 5314e9348f..b9847a9f92 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -879,7 +879,7 @@ CREATE VIEW pg_replication_slots AS L.restart_lsn, L.confirmed_flush_lsn, L.wal_status, - L.min_safe_lsn + L.distance FROM pg_get_replication_slots() AS L LEFT JOIN pg_database D ON (L.datoid = D.oid); diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c index 88033a79b2..532b3c5826 100644 --- a/src/backend/replication/slotfuncs.c +++ b/src/backend/replication/slotfuncs.c @@ -242,6 +242,7 @@ pg_get_replication_slots(PG_FUNCTION_ARGS) Tuplestorestate *tupstore; MemoryContext per_query_ctx; MemoryContext oldcontext; + XLogRecPtr currlsn; int slotno; /* check to see if caller supports us returning a tuplestore */ @@ -274,6 +275,8 @@ pg_get_replication_slots(PG_FUNCTION_ARGS) MemoryContextSwitchTo(oldcontext); + currlsn = GetXLogWriteRecPtr(); + LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); for (slotno = 0; slotno < max_replication_slots; slotno++) { @@ -282,7 +285,7 @@ pg_get_replication_slots(PG_FUNCTION_ARGS) Datum values[PG_GET_REPLICATION_SLOTS_COLS]; bool nulls[PG_GET_REPLICATION_SLOTS_COLS]; WALAvailability walstate; - XLogSegNo last_removed_seg; + uint32 distance; int i; if (!slot->in_use) @@ -398,16 +401,10 @@ pg_get_replication_slots(PG_FUNCTION_ARGS) break; } - if (max_slot_wal_keep_size_mb >= 0 && - (walstate == WALAVAIL_RESERVED || walstate == WALAVAIL_EXTENDED) && - ((last_removed_seg = XLogGetLastRemovedSegno()) != 0)) - { - XLogRecPtr min_safe_lsn; - - XLogSegNoOffsetToRecPtr(last_removed_seg + 1, 0, - wal_segment_size, min_safe_lsn); - values[i++] = Int64GetDatum(min_safe_lsn); - } + distance = + DistanceToWALHorizon(slot_contents.data.restart_lsn, currlsn); + if (distance > 0) + values[i++] = Int64GetDatum(distance); else nulls[i++] = true; diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 77ac4e785f..1ec448c5d5 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -329,6 +329,7 @@ extern void InitXLOGAccess(void); extern void CreateCheckPoint(int flags); extern bool CreateRestartPoint(int flags); extern WALAvailability GetWALAvailability(XLogRecPtr targetLSN); +extern uint64 DistanceToWALHorizon(XLogRecPtr targetLSN, XLogRecPtr currptr); extern XLogRecPtr CalculateMaxmumSafeLSN(void); extern void XLogPutNextOid(Oid nextOid); extern XLogRecPtr XLogRestorePoint(const char *rpName); diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 61f2c2f5b4..199fd994bd 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -10063,9 +10063,9 @@ proname => 'pg_get_replication_slots', prorows => '10', proisstrict => 'f', proretset => 't', provolatile => 's', prorettype => 'record', proargtypes => '', - proallargtypes => '{name,name,text,oid,bool,bool,int4,xid,xid,pg_lsn,pg_lsn,text,pg_lsn}', + proallargtypes => '{name,name,text,oid,bool,bool,int4,xid,xid,pg_lsn,pg_lsn,text,int8}', proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o}', - proargnames => '{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn,wal_status,min_safe_lsn}', + proargnames => '{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn,wal_status,distance}', prosrc => 'pg_get_replication_slots' }, { oid => '3786', descr => 'set up a logical replication slot', proname => 'pg_create_logical_replication_slot', provolatile => 'v', diff --git a/src/test/recovery/t/019_replslot_limit.pl b/src/test/recovery/t/019_replslot_limit.pl index 7d22ae5720..1c76d2d9e9 100644 --- a/src/test/recovery/t/019_replslot_limit.pl +++ b/src/test/recovery/t/019_replslot_limit.pl @@ -28,7 +28,7 @@ $node_master->safe_psql('postgres', # The slot state and remain should be null before the first connection my $result = $node_master->safe_psql('postgres', - "SELECT restart_lsn IS NULL, wal_status is NULL, min_safe_lsn is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" + "SELECT restart_lsn IS NULL, wal_status is NULL, distance is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" ); is($result, "t|t|t", 'check the state of non-reserved slot is "unknown"'); @@ -52,9 +52,9 @@ $node_master->wait_for_catchup($node_standby, 'replay', $start_lsn); # Stop standby $node_standby->stop; -# Preparation done, the slot is the state "normal" now +# Preparation done, the slot is the state "reserved" now $result = $node_master->safe_psql('postgres', - "SELECT wal_status, min_safe_lsn is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" + "SELECT wal_status, distance is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" ); is($result, "reserved|t", 'check the catching-up state'); @@ -64,7 +64,7 @@ $node_master->safe_psql('postgres', "CHECKPOINT;"); # The slot is always "safe" when fitting max_wal_size $result = $node_master->safe_psql('postgres', - "SELECT wal_status, min_safe_lsn is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" + "SELECT wal_status, distance is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" ); is($result, "reserved|t", 'check that it is safe if WAL fits in max_wal_size'); @@ -74,7 +74,7 @@ $node_master->safe_psql('postgres', "CHECKPOINT;"); # The slot is always "safe" when max_slot_wal_keep_size is not set $result = $node_master->safe_psql('postgres', - "SELECT wal_status, min_safe_lsn is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" + "SELECT wal_status, distance is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" ); is($result, "reserved|t", 'check that slot is working'); @@ -94,9 +94,7 @@ max_slot_wal_keep_size = ${max_slot_wal_keep_size_mb}MB )); $node_master->reload; -# The slot is in safe state. The distance from the min_safe_lsn should -# be as almost (max_slot_wal_keep_size - 1) times large as the segment -# size +# The slot is in safe state. $result = $node_master->safe_psql('postgres', "SELECT wal_status FROM pg_replication_slots WHERE slot_name = 'rep1'"); @@ -110,7 +108,7 @@ $node_master->safe_psql('postgres', "CHECKPOINT;"); $result = $node_master->safe_psql('postgres', "SELECT wal_status FROM pg_replication_slots WHERE slot_name = 'rep1'"); is($result, "reserved", - 'check that min_safe_lsn gets close to the current LSN'); + 'check that distance gets close to the current LSN'); # The standby can reconnect to master $node_standby->start; @@ -154,7 +152,7 @@ advance_wal($node_master, 1); # Slot gets into 'unreserved' state $result = $node_master->safe_psql('postgres', - "SELECT wal_status, min_safe_lsn is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" + "SELECT wal_status, distance is NULL FROM pg_replication_slots WHERE slot_name = 'rep1'" ); is($result, "unreserved|t", 'check that the slot state changes to "unreserved"'); @@ -186,7 +184,7 @@ ok( find_in_log( # This slot should be broken $result = $node_master->safe_psql('postgres', - "SELECT slot_name, active, restart_lsn IS NULL, wal_status, min_safe_lsn FROM pg_replication_slots WHERE slot_name = 'rep1'" + "SELECT slot_name, active, restart_lsn IS NULL, wal_status, distance FROM pg_replication_slots WHERE slot_name = 'rep1'" ); is($result, "rep1|f|t|lost|", 'check that the slot became inactive and the state "lost" persists'); diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index b813e32215..392eab12dd 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -1464,8 +1464,8 @@ pg_replication_slots| SELECT l.slot_name, l.restart_lsn, l.confirmed_flush_lsn, l.wal_status, - l.min_safe_lsn - FROM (pg_get_replication_slots() l(slot_name, plugin, slot_type, datoid, temporary, active, active_pid, xmin, catalog_xmin, restart_lsn, confirmed_flush_lsn, wal_status, min_safe_lsn) + l.distance + FROM (pg_get_replication_slots() l(slot_name, plugin, slot_type, datoid, temporary, active, active_pid, xmin, catalog_xmin, restart_lsn, confirmed_flush_lsn, wal_status, distance) LEFT JOIN pg_database d ON ((l.datoid = d.oid))); pg_roles| SELECT pg_authid.rolname, pg_authid.rolsuper, -- 2.18.4 ----Next_Part(Wed_Jul__1_10_32_59_2020_161)---- ^ permalink raw reply [nested|flat] 7+ messages in thread
* [PATCH] cirrus/windows: ccache @ 2022-05-22 16:55 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Justin Pryzby @ 2022-05-22 16:55 UTC (permalink / raw) https://community.chocolatey.org/packages/ccache https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com [email protected] 20211012083721.hvixq4pnh2pixr3j%40alap3.anarazel.de CA%2BhUKGLs6ENKL4w1o%2B1RpcS4VLyLXSUMWRYJVaiLBOJtarW25g%40mail.gmail.com https://cirrus-ci.com/task/5456827583299584 https://cirrus-ci.com/task/6019777536720896 ci-os-only: xindows, windows-meson-ninja, xindows-meson-msbuild --- .cirrus.yml | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index bf20f85f8ce..ed9e86557d7 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -814,6 +814,9 @@ windows_template: &windows_template # currently have a tool for that... CIRRUS_ESCAPING_PROCESSES: 1 + CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache + CCACHE_LOGFILE: ccache.log + only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*' windows_container: @@ -828,12 +831,14 @@ windows_template: &windows_template set setup_additional_packages_script: | - REM choco install -y --no-progress ... - + choco install -y --no-progress ccache --version 4.6.1 + cp c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.6.1-windows-x86_64\ccache.exe \BuildTools\VC\Auxiliary\Build + cp c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.6.1-windows-x86_64\ccache.exe \ProgramData\chocolatey\bin\cl.exe task: <<: *windows_template name: Windows - Server 2019, VS 2019 - Homegrown + only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows-mkvcbuild' configure_script: # copy errors out when using forward slashes @@ -901,14 +906,22 @@ task: - mkdir subprojects - meson wrap install lz4 - meson wrap install zlib - - meson setup --buildtype debug --backend ninja -Dcassert=true -Db_pch=true -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe build + - set CC=ccache.exe cl.exe + - meson setup --buildtype plain --backend ninja -Dcassert=true -Db_pch=false -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -Dc_args="/Z7 /MDd" build + + ccache_cache: + folder: $CCACHE_DIR build_script: + - ccache.exe --zero-stats - vcvarsall x64 - ninja -C build + - ccache.exe --show-stats + + always: + upload_caches: ccache check_world_script: - - vcvarsall x64 - meson test --no-rebuild -C build on_failure: @@ -934,14 +947,21 @@ task: - mkdir subprojects - meson wrap install lz4 - meson wrap install zlib - - meson setup --buildtype debug --backend vs -Dcassert=true -Db_pch=true -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe build + - meson setup --buildtype plain --backend vs -Dcassert=true -Db_pch=false -Dssl=openssl -Dlz4=enabled -Dzlib=enabled -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -Dc_args=/Z7 build + + ccache_cache: + folder: $CCACHE_DIR build_script: + - ccache.exe --zero-stats - vcvarsall x64 - - msbuild /p:UseMultiToolTask=true %MSBFLAGS% build\postgresql.sln + - msbuild /p:UseMultiToolTask=true /p:CLToolPath=c:\ProgramData\chocolatey\bin %MSBFLAGS% build\postgresql.sln + - ccache.exe --show-stats + + always: + upload_caches: ccache check_world_script: - - vcvarsall x64 - meson test --no-rebuild -C build always: -- 2.17.1 --CblX+4bnyfN0pR09-- ^ permalink raw reply [nested|flat] 7+ messages in thread
* [PATCH 12/19] cirrus/windows: ccache @ 2022-05-26 03:05 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Justin Pryzby @ 2022-05-26 03:05 UTC (permalink / raw) https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com ci-os-only: windows --- .cirrus.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 02f04aa98bb..35e51453dfd 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -372,7 +372,15 @@ task: # disable file tracker, we're never going to rebuild, and it slows down the # build # -fileLoggerParameters1: write warnings to msbuild.warn.log. - MSBFLAGS: -m -verbosity:minimal "-consoleLoggerParameters:Summary;ForceNoAlign" /p:TrackFileAccess=false -nologo -fileLoggerParameters1:warningsonly;logfile=msbuild.warn.log + MSBFLAGS: -m -verbosity:minimal "-consoleLoggerParameters:Summary;ForceNoAlign" /p:TrackFileAccess=false -nologo -fileLoggerParameters1:warningsonly;logfile=msbuild.warn.log /p:UseMultiToolTask=true /p:CLToolExe=pgccache.exe +#c:\ProgramData\chocolatey\bin\ccache.exe + + CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache + CCACHE_LOGFILE: ccache.log + #CCACHE_PREFIX: cl.exe + #CCACHE_PREFIX_CPP: cl.exe + CCACHE_COMPILERTYPE: msvc + CCACHE_COMPILER: cl.exe DebugInformationFormat: OldStyle @@ -403,8 +411,12 @@ task: powershell -Command get-psdrive -psprovider filesystem set - setup_additional_packages_script: | - REM choco install -y --no-progress ... + setup_additional_packages_script: + - choco install -y --no-progress ccache --version 4.6.1 + - cp c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.6.1-windows-x86_64\ccache.exe \ProgramData\chocolatey\bin\pgccache.exe + + ccache_cache: + folder: $CCACHE_DIR configure_script: # copy errors out when using forward slashes @@ -413,7 +425,13 @@ task: - perl src/tools/msvc/mkvcbuild.pl build_script: - vcvarsall x64 + - ccache --zero-stats - msbuild %MSBFLAGS% pgsql.sln + - ccache.exe --show-stats + + always: + upload_caches: ccache + tempinstall_script: # Installation on windows currently only completely works from src/tools/msvc - cd src/tools/msvc && perl install.pl %CIRRUS_WORKING_DIR%/tmp_install -- 2.17.1 --Sw7tCqrGA+HQ0/zt Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0013-another-way-to-install-uri-regress-uri_regress.patch" ^ permalink raw reply [nested|flat] 7+ messages in thread
* [PATCH 12/21] cirrus/windows: ccache @ 2022-05-26 03:05 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Justin Pryzby @ 2022-05-26 03:05 UTC (permalink / raw) https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com ci-os-only: windows, windows-msvc --- .cirrus.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 02f04aa98bb..e5654bd5589 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -372,7 +372,11 @@ task: # disable file tracker, we're never going to rebuild, and it slows down the # build # -fileLoggerParameters1: write warnings to msbuild.warn.log. - MSBFLAGS: -m -verbosity:minimal "-consoleLoggerParameters:Summary;ForceNoAlign" /p:TrackFileAccess=false -nologo -fileLoggerParameters1:warningsonly;logfile=msbuild.warn.log + MSBFLAGS: -m -verbosity:minimal "-consoleLoggerParameters:Summary;ForceNoAlign" /p:TrackFileAccess=false -nologo -fileLoggerParameters1:warningsonly;logfile=msbuild.warn.log /p:UseMultiToolTask=true /p:CLToolPath=c:\ProgramData\chocolatey\bin +#c:\ProgramData\chocolatey\bin\ccache.exe + + CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache + CCACHE_LOGFILE: ccache.log DebugInformationFormat: OldStyle @@ -403,8 +407,12 @@ task: powershell -Command get-psdrive -psprovider filesystem set - setup_additional_packages_script: | - REM choco install -y --no-progress ... + setup_additional_packages_script: + - choco install -y --no-progress ccache --version 4.6.1 + - cp c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.6.1-windows-x86_64\ccache.exe \ProgramData\chocolatey\bin\cl.exe + + ccache_cache: + folder: $CCACHE_DIR configure_script: # copy errors out when using forward slashes @@ -414,6 +422,10 @@ task: build_script: - vcvarsall x64 - msbuild %MSBFLAGS% pgsql.sln + + always: + upload_caches: ccache + tempinstall_script: # Installation on windows currently only completely works from src/tools/msvc - cd src/tools/msvc && perl install.pl %CIRRUS_WORKING_DIR%/tmp_install -- 2.17.1 --STPqjqpCrtky8aYs Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0013-cirrus-ccache-disable-compression-and-show-stats.patch" ^ permalink raw reply [nested|flat] 7+ messages in thread
* [PATCH 2/7] cirrus/windows: ccache @ 2022-05-26 03:05 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Justin Pryzby @ 2022-05-26 03:05 UTC (permalink / raw) ccache 4.7 added support for depend mode with MSVC, and ccache v4.10 supports PCH, so this is now viable. https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com https://cirrus-ci.com/task/5213936495099904 build 29sec --- .cirrus.tasks.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index 5a2b64f64c2..6ebbc1ccd81 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -536,6 +536,12 @@ task: env: TEST_JOBS: 8 # wild guess, data based value welcome + CC: c:\msys64\ucrt64\bin\ccache.exe cl.exe + CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache + CCACHE_MAXSIZE: "500M" + CCACHE_SLOPPINESS: pch_defines,time_macros + CCACHE_DEPEND: 1 + # Cirrus defaults to SetErrorMode(SEM_NOGPFAULTERRORBOX | ...). That # prevents crash reporting from working unless binaries do SetErrorMode() # themselves. Furthermore, it appears that either python or, more likely, @@ -553,6 +559,9 @@ task: setup_additional_packages_script: | REM choco install -y --no-progress ... + ccache_cache: + folder: $CCACHE_DIR + setup_hosts_file_script: | echo 127.0.0.1 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts echo 127.0.0.2 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts @@ -562,7 +571,7 @@ task: # Use /DEBUG:FASTLINK to avoid high memory usage during linking configure_script: | vcvarsall x64 - meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build + meson setup build --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" -Dc_args="/Z7" build_script: | vcvarsall x64 @@ -571,6 +580,9 @@ task: REM without the pipe, exiting now if it fails, to avoid trying to run checks ninja -C build > nul + always: + upload_caches: [ccache] + check_world_script: | vcvarsall x64 meson test %MTEST_ARGS% --num-processes %TEST_JOBS% -- 2.42.0 --jviKHM0HgsS9J3Sv Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0003-WIP-ci-meson-allow-showing-only-failed-tests.patch" ^ permalink raw reply [nested|flat] 7+ messages in thread
* [PATCH 2/6] cirrus/windows: ccache @ 2022-05-26 03:05 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Justin Pryzby @ 2022-05-26 03:05 UTC (permalink / raw) ccache 4.7 added support for depend mode with MSVC, and ccache v4.10 supports PCH, so this is now viable. https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com https://cirrus-ci.com/task/5213936495099904 build 29sec --- .cirrus.tasks.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index 5dd37e07aae..fb4ea3d666a 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -546,6 +546,12 @@ task: env: TEST_JOBS: 8 # wild guess, data based value welcome + CC: c:\msys64\ucrt64\bin\ccache.exe cl.exe + CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache + CCACHE_MAXSIZE: "500M" + CCACHE_SLOPPINESS: pch_defines,time_macros + CCACHE_DEPEND: 1 + # Cirrus defaults to SetErrorMode(SEM_NOGPFAULTERRORBOX | ...). That # prevents crash reporting from working unless binaries do SetErrorMode() # themselves. Furthermore, it appears that either python or, more likely, @@ -563,6 +569,9 @@ task: setup_additional_packages_script: | REM choco install -y --no-progress ... + ccache_cache: + folder: $CCACHE_DIR + setup_hosts_file_script: | echo 127.0.0.1 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts echo 127.0.0.2 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts @@ -570,9 +579,10 @@ task: type c:\Windows\System32\Drivers\etc\hosts # Use /DEBUG:FASTLINK to avoid high memory usage during linking + # Use /Z7 to write separate debug files, to allow ccache to work configure_script: | vcvarsall x64 - meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build + meson setup build --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" -Dc_args="/Z7" build_script: | vcvarsall x64 @@ -581,6 +591,9 @@ task: REM without the pipe, exiting now if it fails, to avoid trying to run checks ninja -C build > nul + always: + upload_caches: [ccache] + check_world_script: | vcvarsall x64 meson test %MTEST_ARGS% --num-processes %TEST_JOBS% -- 2.42.0 --ndI8Dx/wEX5btThR Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0003-WIP-ci-meson-allow-showing-only-failed-tests.patch" ^ permalink raw reply [nested|flat] 7+ messages in thread
* [PATCH 2/6] cirrus/windows: ccache @ 2022-05-26 03:05 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 7+ messages in thread From: Justin Pryzby @ 2022-05-26 03:05 UTC (permalink / raw) https://www.postgresql.org/message-id/flat/20220522232606.GZ19626%40telsasoft.com https://cirrus-ci.com/task/5213936495099904 build 29sec , linux linux-meson ci-os-only: windows, windows-msvc --- .cirrus.tasks.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index 5a2b64f64c2..7a3fcc36fae 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -536,6 +536,11 @@ task: env: TEST_JOBS: 8 # wild guess, data based value welcome + CCACHE_DIR: $CIRRUS_WORKING_DIR/.ccache + CCACHE_MAXSIZE: "500M" + CCACHE_SLOPPINESS: pch_defines,time_macros + CCACHE_DEPEND: 1 + # Cirrus defaults to SetErrorMode(SEM_NOGPFAULTERRORBOX | ...). That # prevents crash reporting from working unless binaries do SetErrorMode() # themselves. Furthermore, it appears that either python or, more likely, @@ -550,8 +555,11 @@ task: depends_on: SanityCheck only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*' - setup_additional_packages_script: | - REM choco install -y --no-progress ... + setup_additional_packages_script: + - choco install -y --no-progress ccache --version 4.10.0 + + ccache_cache: + folder: $CCACHE_DIR setup_hosts_file_script: | echo 127.0.0.1 pg-loadbalancetest >> c:\Windows\System32\Drivers\etc\hosts @@ -562,7 +570,8 @@ task: # Use /DEBUG:FASTLINK to avoid high memory usage during linking configure_script: | vcvarsall x64 - meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build + set CC=c:\ProgramData\chocolatey\lib\ccache\tools\ccache-4.10-windows-x86_64\ccache.exe cl.exe + meson setup build --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Dinjection_points=true -Db_pch=true -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" -Dc_args="/Z7" build_script: | vcvarsall x64 @@ -571,6 +580,12 @@ task: REM without the pipe, exiting now if it fails, to avoid trying to run checks ninja -C build > nul + ccache --show-log-stats -v + ccache --show-stats -v + + always: + upload_caches: [ccache] + check_world_script: | vcvarsall x64 meson test %MTEST_ARGS% --num-processes %TEST_JOBS% -- 2.42.0 --Rvs4meNCoh6yKfx/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0003-WIP-ci-meson-allow-showing-only-failed-tests.patch" ^ permalink raw reply [nested|flat] 7+ messages in thread
end of thread, other threads:[~2022-05-26 03:05 UTC | newest] Thread overview: 7+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2020-06-30 12:09 [PATCH v1] Replace min_safe_lsn with "distance" in pg_replication_slots Kyotaro Horiguchi <[email protected]> 2022-05-22 16:55 [PATCH] cirrus/windows: ccache Justin Pryzby <[email protected]> 2022-05-26 03:05 [PATCH 12/19] cirrus/windows: ccache Justin Pryzby <[email protected]> 2022-05-26 03:05 [PATCH 12/21] cirrus/windows: ccache Justin Pryzby <[email protected]> 2022-05-26 03:05 [PATCH 2/7] cirrus/windows: ccache Justin Pryzby <[email protected]> 2022-05-26 03:05 [PATCH 2/6] cirrus/windows: ccache Justin Pryzby <[email protected]> 2022-05-26 03:05 [PATCH 2/6] cirrus/windows: ccache Justin Pryzby <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox