Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix flaky hardlinks test #737

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

elboulangero
Copy link

The test was added in dc34990, it turns out that it's flaky. It failed once on the Debian build infra, cf. 1.

The problem is that the command rsync -aH '$fromdir/sym' '$todir' updates the mod time of $todir, so there might be a diff between the output of rsync_ls_lR $fromdir and rsync_ls_lR $todir, if ever rsync runs 1 second (or more) after the directories were created.

To clarify: it's easy to make the test fails 100% of the times with this change:

 makepath "$fromdir/sym" "$todir"
+sleep 5
 checkit "$RSYNC -aH '$fromdir/sym' '$todir'" "$fromdir" "$todir"

With the fix proposed here, we don't use checkit anymore, instead we just run the rsync command, then a simple diff to compare the two directories. This is exactly what the other -H test just above does.

In case there's some doubts, diff fails if sym is missing:

$ mkdir -p foo/sym bar
$ diff foo bar || echo KO!
Only in foo: sym
KO!

I tested that, after this commit, the test still catches the -H regression in rsync 3.4.0.

Fixes: #735

The test was added in dc34990, it turns out that it's flaky. It failed
once on the Debian build infra, cf. [1].

The problem is that the command `rsync -aH '$fromdir/sym' '$todir'`
updates the mod time of `$todir`, so there might be a diff between the
output of `rsync_ls_lR $fromdir` and `rsync_ls_lR $todir`, if ever rsync
runs 1 second (or more) after the directories were created.

To clarify: it's easy to make the test fails 100% of the times with this
change:

```
 makepath "$fromdir/sym" "$todir"
+sleep 5
 checkit "$RSYNC -aH '$fromdir/sym' '$todir'" "$fromdir" "$todir"
```

With the fix proposed here, we don't use `checkit` anymore, instead we
just run the rsync command, then a simple `diff` to compare the two
directories. This is exactly what the other `-H` test just above does.

In case there's some doubts, `diff` fails if `sym` is missing:

```
$ mkdir -p foo/sym bar
$ diff foo bar || echo KO!
Only in foo: sym
KO!
```

I tested that, after this commit, the test still catches the `-H`
regression in rsync 3.4.0.

Fixes: RsyncProject#735

[1]: https://buildd.debian.org/status/fetch.php?pkg=rsync&arch=ppc64el&ver=3.4.1%2Bds1-1&stamp=1741147156&raw=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

New hardlinks test failed - false positive?
1 participant