Bug 10092 - Hang when remote dest's disk is full
Summary: Hang when remote dest's disk is full
Status: RESOLVED FIXED
Alias: None
Product: rsync
Classification: Unclassified
Component: core (show other bugs)
Version: 3.0.9
Hardware: All All
: P5 normal (vote)
Target Milestone: ---
Assignee: Wayne Davison
QA Contact: Rsync QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-17 03:35 UTC by Volker Kuhlmann (mail address dead)
Modified: 2020-07-27 23:01 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Volker Kuhlmann (mail address dead) 2013-08-17 03:35:40 UTC
rsync -aAH --numeric-ids --no-inc-recursive --delete /local/.. rhost:/...

hangs forever when the disk on the remote becomes full. When used with -vi, the output just stops.
On the remote, the rsync process exits but ssh does not; netstat shows connected on both sides for ssh and on local for rsync.

The local rsync is stuck in select(), the remote rsync has exited.

Redirecting the local rsync's stdin/out/err to /dev/null does not improve things.

openSUSE 12.3, openssh 6.1p1, rsync 3.0.9, kernel 3.7.10

Is there any workaround to make the local rsync quit with an error?
Comment 1 Wayne Davison 2013-08-20 05:37:05 UTC
If rsync exits and your ssh is still around, that's a bug in your ssh and you should be checking with that project about why they are not exiting properly.  One possible issue may be that you told ssh to do some port-forwarding (check your default ssh config) and someone opened a forwarded connection using rsync's ssh (in which case the ssh would stay open until all connections had closed).
Comment 2 Volker Kuhlmann (mail address dead) 2013-10-25 05:22:48 UTC
Thanks Wayne, that makes perfect sense, but all rsync-related processes came up to be non-existent so far and "that project I should be checking with" appears to be rsync.

I was able to narrow it down a little. It is necessary to have a large number of files (600k) and/or a large volume to transfer, like created by rsnapshot. The hang occurs for me with --link-dest but I did not check whether this is a necessary condition. The destination becomes full during transfer - naturally one will want an error, not a hang.

Shell configuration, locale, and user/root on local and remote host are not relevant.

The problem disappears with some rudimentory testing when using rsync 3.1.0. Perhaps it has to do with the "Improved the propagation of abnormal-exit error messages" item on the list of fixed bugs in 3.1.0? Or is it something else that's only temporarily hidden?
Comment 3 Kevin Korb 2013-10-25 05:26:55 UTC
What is this rhost:/... syntax?  Are you actually trying to make a directory named "..."?  If not then I think you have a typo.
Comment 4 Volker Kuhlmann (mail address dead) 2013-10-25 05:53:22 UTC
I gave the relevant parts of the command only, the full version spans 3 lines but the --exclude options and actual paths are hardly relevant. Read that as rhost:/whateverdir/ if you prefer. The destination directory does not exist, which is kind of required when using --link-dest.

If it really matters, the command is

rsync -aAH --numeric-ids --no-inc-recursive --delete --delete-during /snapshots/daily.0/ rhost:/newdir -vi

with some added --exclude options, some using shell globs. The hang occurs with and without --link-dest added in.
Comment 6 Wayne Davison 2020-07-27 23:01:11 UTC
The upcoming release has some improvements to get disk-full errors to the user more quickly.