diff --git a/doc/xml/release.xml b/doc/xml/release.xml index e7b498238..4d6e4111b 100644 --- a/doc/xml/release.xml +++ b/doc/xml/release.xml @@ -100,9 +100,10 @@ + -

Fixed an issue where keep-alives could be starved out by lots of small files during multi-threaded operation and were completely absent during single-threaded operation when resuming from a previous incomplete backup.

+

Fixed an issue where keep-alives could be starved out by lots of small files during multi-threaded operation and were completely absent during single/multi-threaded operation when resuming from a previous incomplete backup and checksumming during a delta restore.

diff --git a/lib/pgBackRest/Protocol/ThreadGroup.pm b/lib/pgBackRest/Protocol/ThreadGroup.pm index e158c8db0..df8f82bf6 100644 --- a/lib/pgBackRest/Protocol/ThreadGroup.pm +++ b/lib/pgBackRest/Protocol/ThreadGroup.pm @@ -136,6 +136,9 @@ sub threadGroupThread } } + # Keep the protocol layer from timing out while checksumming + protocolGet()->keepAlive(); + # Even numbered threads move up when they have finished a queue, odd numbered threads move down $iQueueIdx += $iDirection; diff --git a/lib/pgBackRest/Restore.pm b/lib/pgBackRest/Restore.pm index 251f02fd7..f781bdf2d 100644 --- a/lib/pgBackRest/Restore.pm +++ b/lib/pgBackRest/Restore.pm @@ -1310,6 +1310,9 @@ sub process $lSizeCurrent = restoreFile($oRestoreHash{$strQueueKey}{$strFileKey}, $lCopyTimeBegin, optionGet(OPTION_DELTA), optionGet(OPTION_FORCE), $self->{strBackupSet}, $bSourceCompression, $strCurrentUser, $strCurrentGroup, $self->{oFile}, $lSizeTotal, $lSizeCurrent); + + # Keep the protocol layer from timing out while checksumming + protocolGet()->keepAlive(); } } }