From 4918594aa472010a8a112f5f4ed0a471a3351a91 Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Tue, 16 Jun 2020 10:27:04 +1000 Subject: [PATCH] rsync-mirrors: drop rsync -t and make flags consistent After investigating why every release seems to take hours, we noticed that even in zero-delta updates where nothing has changed upstream, we'd get a utimensat() call that updated the modified time nanoseconds portion; e.g. lstat("Everything/x86_64/Packages/a/arch-install-scripts-23-1.fc31.noarch.rpm", {st_mode=S_IFREG|0644, st_size=28004, ...}) = 0 utimensat(AT_FDCWD, "Everything/x86_64/Packages/a/arch-install-scripts-23-1.fc31.noarch.rpm", [UTIME_NOW, {tv_sec=1585676005, tv_nsec=6041000} /* 2020-03-31T17:33:25.006041000+0000 */], AT_SYMLINK_NOFOLLOW) = 0 This does not apply; in fact openafs uses the ns field as some sort of generation counter [1]. This update is enough to convince openafs the file has changed and it needs to be resynced, meaning that basically every rsync run results in a full release. This unnecessary update been fixed with [2] but is only in rsync 3.1.3+; our bionic host is currently 3.1.2. Dropping "-t" from the rsync commands avoids transferring modification times and should avoid this problem. While looking, "-D" turns on "--devices" and "--specials" to transfer block devices and named sockets/fifos. Turn this off. Also remove "-p" if it was present. We already did this for centos with Ib5db052cdd23e39aecbeead15cf08d4bd7fcab38 and Fedora with Id24196791f80cd99fe8a330fb2c7c6d893fc9995, where odd upstream permissions such as setgid on directories can't be synced to afs. Consistently remove it. Also switch back the fedora updates to just "-v"; we had it at "-i" for debugging. [1] http://eavesdrop.openstack.org/irclogs/%23opendev/%23opendev.2020-06-15.log.html#t2020-06-15T02:58:08-2 [2] https://git.samba.org/?p=rsync.git;a=patch;h=0f8e9e2d8638e47d646a6baba694b303ac84e695 Change-Id: I78f3d4990b168c71185eb1c4900ceeaca4b6a16f --- .../roles/mirror-update/files/centos-mirror-update | 4 ++-- playbooks/roles/mirror-update/files/epel-mirror-update | 4 ++-- .../roles/mirror-update/files/fedora-mirror-update | 6 +++--- .../roles/mirror-update/files/opensuse-mirror-update | 10 +++++----- .../roles/mirror-update/files/publish-mirror-logs | 2 +- .../mirror-update/files/yum-puppetlabs-mirror-update | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/playbooks/roles/mirror-update/files/centos-mirror-update b/playbooks/roles/mirror-update/files/centos-mirror-update index 1022b907f7..75614c5627 100755 --- a/playbooks/roles/mirror-update/files/centos-mirror-update +++ b/playbooks/roles/mirror-update/files/centos-mirror-update @@ -38,7 +38,7 @@ if ! [ -f $BASE/8 ]; then fi date --iso-8601=ns echo "Running Centos 8 rsync..." -$K5START rsync -rtDvz \ +$K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="isos" \ @@ -75,7 +75,7 @@ for REPO in $REPOS; do date --iso-8601=ns echo "Running rsync..." - $K5START rsync -rtDvz \ + $K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="atomic" \ diff --git a/playbooks/roles/mirror-update/files/epel-mirror-update b/playbooks/roles/mirror-update/files/epel-mirror-update index 3b808a6e86..7fab12056c 100755 --- a/playbooks/roles/mirror-update/files/epel-mirror-update +++ b/playbooks/roles/mirror-update/files/epel-mirror-update @@ -42,7 +42,7 @@ fi date --iso-8601=ns echo "Running rsync..." -$K5START rsync -rlptDvz \ +$K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="SRPMS" \ @@ -72,7 +72,7 @@ date --iso-8601=ns echo "Running rsync..." # --no-perms because some of the top-level directories are 02755 # (setgid) and we can't set that on AFS -$K5START rsync -rlptDvz --no-perms \ +$K5START rsync -rlvz --no-perms \ --delete \ --delete-excluded \ --exclude="Everything/SRPMS" \ diff --git a/playbooks/roles/mirror-update/files/fedora-mirror-update b/playbooks/roles/mirror-update/files/fedora-mirror-update index c1dd56a6d5..2c7b570c2c 100755 --- a/playbooks/roles/mirror-update/files/fedora-mirror-update +++ b/playbooks/roles/mirror-update/files/fedora-mirror-update @@ -52,7 +52,7 @@ for REPO in releases/30 releases/31; do fi echo_ts "Running rsync for $REPO..." - $K5START rsync -rltDiz \ + $K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="Cloud/x86_64/images/*.box" \ @@ -77,7 +77,7 @@ for REPO in updates/30 updates/31; do fi echo_ts "Running rsync for $REPO..." - $K5START rsync -rltDiz \ + $K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="aarch64/" \ @@ -98,7 +98,7 @@ if ! [ -f $BASE/atomic ]; then fi echo_ts "Running rsync atomic..." -$K5START rsync -rltDiz \ +$K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="testing/" \ diff --git a/playbooks/roles/mirror-update/files/opensuse-mirror-update b/playbooks/roles/mirror-update/files/opensuse-mirror-update index 9a1ae277fc..a82ec17ef2 100755 --- a/playbooks/roles/mirror-update/files/opensuse-mirror-update +++ b/playbooks/roles/mirror-update/files/opensuse-mirror-update @@ -62,7 +62,7 @@ for DISTVER in 15.1; do date --iso-8601=ns echo "Running rsync distribution $DISTVER ..." - $K5START rsync -rlptDvz \ + $K5START rsync -rlvz \ --delete --stats \ --delete-excluded \ --exclude="iso" \ @@ -76,7 +76,7 @@ for DISTVER in 15.1; do date --iso-8601=ns echo "Running rsync updates $DISTVER ..." - $K5START rsync -rlptDvz \ + $K5START rsync -rlvz \ --delete --stats \ --delete-excluded \ --exclude="src/" \ @@ -92,7 +92,7 @@ for obs_repo in ${OBS_REPOS[@]}; do $K5START mkdir -p $BASE/$REPO fi echo "Running rsync ${obs_repo} ..." - $K5START rsync -rlptDvz \ + $K5START rsync -rlvz \ --delete --stats \ --delete-excluded \ --exclude="src/" \ @@ -109,7 +109,7 @@ fi date --iso-8601=ns echo "Running rsync distribution $REPO ..." # TW is large and can have failures, be more resilient -$K5START rsync -rlptDvz \ +$K5START rsync -rlvz \ --delete --stats \ --delete-excluded \ --exclude="i586" \ @@ -123,7 +123,7 @@ fi date --iso-8601=ns echo "Running rsync distribution $REPO ..." -$K5START rsync -rlptDvz \ +$K5START rsync -rlvz \ --timeout=600 \ --delete --stats \ --delete-excluded \ diff --git a/playbooks/roles/mirror-update/files/publish-mirror-logs b/playbooks/roles/mirror-update/files/publish-mirror-logs index d25a1f8ac2..9afa1ed79c 100755 --- a/playbooks/roles/mirror-update/files/publish-mirror-logs +++ b/playbooks/roles/mirror-update/files/publish-mirror-logs @@ -16,7 +16,7 @@ DEST="/afs/.openstack.org/mirror/logs/" K5START="k5start -t -f /etc/logs.keytab service/logs-mirror --" -RSYNC="rsync -avz --no-perms --no-owner --no-group" +RSYNC="rsync -rliz" $K5START $RSYNC /var/log/rsync-mirrors $DEST $K5START $RSYNC /var/log/afs-release $DEST diff --git a/playbooks/roles/mirror-update/files/yum-puppetlabs-mirror-update b/playbooks/roles/mirror-update/files/yum-puppetlabs-mirror-update index 4f6214d7a2..30f5014f30 100755 --- a/playbooks/roles/mirror-update/files/yum-puppetlabs-mirror-update +++ b/playbooks/roles/mirror-update/files/yum-puppetlabs-mirror-update @@ -36,7 +36,7 @@ date --iso-8601=ns echo "Running rsync..." # We don't need cisco-wrlinux arch in OpenStack Infra. -$K5START rsync -rlptDvz \ +$K5START rsync -rlvz \ --delete \ --delete-excluded \ --exclude="cisco-wrlinux" \