On Thu, Mar 05, 2020 at 02:39:36PM -0800, Kevin Fenzi wrote:
> -CMD="aws s3 sync \
> +# first run do not delete anything or copy the repodata.
> +CMD1="aws s3 sync \
> + --exclude */repodata/* \
> + --exclude *.snapshot/* \
> + --exclude *source/* \
> + --exclude *SRPMS/* \
> + --exclude *debug/* \
> + --exclude *beta/* \
> + --exclude *ppc/* \
> + --exclude *ppc64/* \
> + --exclude *repoview/* \
> + --exclude *Fedora/* \
> + --exclude *EFI/* \
> + --exclude *core/* \
> + --exclude *extras/* \
> + --exclude *LiveOS/* \
> + --exclude *development/rawhide/* \
> + --no-follow-symlinks \
> + --only-show-errors \
> + "
> + #--dryrun \
> +
> +# second we delete old content and also copy the repodata
> +CMD2="aws s3 sync \
> --delete \
> --exclude *.snapshot/* \
> --exclude *source/* \
> @@ -32,19 +55,12 @@ CMD="aws s3 sync \
>
> #echo "$CMD /srv$1 s3://s3-mirror-us-west-1-02.fedoraproject.org$1"
> echo "Starting $1 sync at $(date)" >> /var/log/s3-mirror/timestamps
> -$CMD /srv$1 s3://s3-mirror-us-west-1-02.fedoraproject.org$1
> -echo "Ending $1 sync at $(date)" >> /var/log/s3-mirror/timestamps
> -
> +$CMD1 /srv$1 s3://s3-mirror-us-west-1-02.fedoraproject.org$1
> +$CMD1 /srv$1/repodata/
> s3://s3-mirror-us-west-1-02.fedoraproject.org$1/repodata/
> # Always do the invalidations because they are quick and prevent issues
> # depending on which path is synced.
> -for file in $(echo /srv/pub/epel/6/*/repodata/repomd.xml | sed 's#/srv##g');
> do
> - aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
> --paths "$file" > /dev/null
> -done
> -
> -for file in $(echo /srv/pub/epel/7/*/repodata/repomd.xml | sed 's#/srv##g');
> do
> - aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
> --paths "$file" > /dev/null
> -done
> -
> -for file in $(echo /srv/pub/fedora/linux/updates/*/*/*/repodata/repomd.xml |
> sed 's#/srv##g'); do
> +for file in $(echo $1/repodata/* ); do
> aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
> --paths "$file" > /dev/null
> done
> +$CMD2 /srv$1 s3://s3-mirror-us-west-1-02.fedoraproject.org$1
> +echo "Ending $1 sync at $(date)" >> /var/log/s3-mirror/timestamps
> diff --git a/roles/s3-mirror/files/s3.sh b/roles/s3-mirror/files/s3.sh
> index 55c1940..97abc59 100644
> --- a/roles/s3-mirror/files/s3.sh
> +++ b/roles/s3-mirror/files/s3.sh
> @@ -3,8 +3,10 @@
> # LGPL
> # Author: Rick Elrod <[email protected]>
>
> -CMD="aws s3 sync \
> - --delete \
> +# first run this command that syncs, but does not delete.
> +# It also excludes repodata.
> +CMD1="aws s3 sync \
> + --exclude */repodata/* \
> --exclude */.snapshot/* \
> --exclude */source/* \
> --exclude */SRPMS/* \
> @@ -38,6 +40,9 @@ CMD="aws s3 sync \
> --exclude */releases/24/* \
> --exclude */releases/25/* \
> --exclude */releases/26/* \
> + --exclude */releases/27/* \
> + --exclude */releases/28/* \
> + --exclude */releases/29/* \
> --exclude */updates/8/* \
> --exclude */updates/9/* \
> --exclude */updates/10/* \
> @@ -57,6 +62,9 @@ CMD="aws s3 sync \
> --exclude */updates/24/* \
> --exclude */updates/25/* \
> --exclude */updates/26/* \
> + --exclude */updates/27/* \
> + --exclude */updates/28/* \
> + --exclude */updates/29/* \
> --exclude */updates/testing/8/* \
> --exclude */updates/testing/9/* \
> --exclude */updates/testing/10/* \
> @@ -76,6 +84,95 @@ CMD="aws s3 sync \
> --exclude */updates/testing/24/* \
> --exclude */updates/testing/25/* \
> --exclude */updates/testing/26/* \
> + --exclude */updates/testing/27/* \
> + --exclude */updates/testing/28/* \
> + --exclude */updates/testing/29/* \
> + --no-follow-symlinks \
> + "
> + #--dryrun \
> +
> +# Next we run this command which also includes repodata.
> +CMD2="aws s3 sync \
> + --exclude */.snapshot/* \
> + --exclude */source/* \
> + --exclude */SRPMS/* \
> + --exclude */debug/* \
> + --exclude */beta/* \
> + --exclude */ppc/* \
> + --exclude */ppc64/* \
> + --exclude */repoview/* \
> + --exclude */Fedora/* \
> + --exclude */EFI/* \
> + --exclude */core/* \
> + --exclude */extras/* \
> + --exclude */LiveOS/* \
> + --exclude */development/rawhide/* \
> + --exclude */releases/8/* \
> + --exclude */releases/9/* \
> + --exclude */releases/10/* \
> + --exclude */releases/11/* \
> + --exclude */releases/12/* \
> + --exclude */releases/13/* \
> + --exclude */releases/14/* \
> + --exclude */releases/15/* \
> + --exclude */releases/16/* \
> + --exclude */releases/17/* \
> + --exclude */releases/18/* \
> + --exclude */releases/19/* \
> + --exclude */releases/20/* \
> + --exclude */releases/21/* \
> + --exclude */releases/22/* \
> + --exclude */releases/23/* \
> + --exclude */releases/24/* \
> + --exclude */releases/25/* \
> + --exclude */releases/26/* \
> + --exclude */releases/27/* \
> + --exclude */releases/28/* \
> + --exclude */releases/29/* \
> + --exclude */updates/8/* \
> + --exclude */updates/9/* \
> + --exclude */updates/10/* \
> + --exclude */updates/11/* \
> + --exclude */updates/12/* \
> + --exclude */updates/13/* \
> + --exclude */updates/14/* \
> + --exclude */updates/15/* \
> + --exclude */updates/16/* \
> + --exclude */updates/17/* \
> + --exclude */updates/18/* \
> + --exclude */updates/19/* \
> + --exclude */updates/20/* \
> + --exclude */updates/21/* \
> + --exclude */updates/22/* \
> + --exclude */updates/23/* \
> + --exclude */updates/24/* \
> + --exclude */updates/25/* \
> + --exclude */updates/26/* \
> + --exclude */updates/27/* \
> + --exclude */updates/28/* \
> + --exclude */updates/29/* \
> + --exclude */updates/testing/8/* \
> + --exclude */updates/testing/9/* \
> + --exclude */updates/testing/10/* \
> + --exclude */updates/testing/11/* \
> + --exclude */updates/testing/12/* \
> + --exclude */updates/testing/13/* \
> + --exclude */updates/testing/14/* \
> + --exclude */updates/testing/15/* \
> + --exclude */updates/testing/16/* \
> + --exclude */updates/testing/17/* \
> + --exclude */updates/testing/18/* \
> + --exclude */updates/testing/19/* \
> + --exclude */updates/testing/20/* \
> + --exclude */updates/testing/21/* \
> + --exclude */updates/testing/22/* \
> + --exclude */updates/testing/23/* \
> + --exclude */updates/testing/24/* \
> + --exclude */updates/testing/25/* \
> + --exclude */updates/testing/26/* \
> + --exclude */updates/testing/27/* \
> + --exclude */updates/testing/28/* \
> + --exclude */updates/testing/29/* \
> --no-follow-symlinks \
> "
> #--dryrun \
> @@ -83,7 +180,9 @@ CMD="aws s3 sync \
> # Sync EPEL
> #echo $CMD /srv/pub/epel/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/epel/
> echo "Starting EPEL sync at $(date)" >> /var/log/s3-mirror/timestamps
> -$CMD /srv/pub/epel/ s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/epel/
> +$CMD1 /srv/pub/epel/ s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/epel/
> +$CMD2 /srv/pub/epel/ s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/epel/
> +$CMD2 --delete /srv/pub/epel/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/epel/
You are deleting files here in a third step which looks like the correct
order to sync it.
> echo "Ending EPEL sync at $(date)" >> /var/log/s3-mirror/timestamps
>
> for file in $(echo /srv/pub/epel/6/*/repodata/repomd.xml | sed 's#/srv##g');
> do
> @@ -94,10 +193,16 @@ for file in $(echo /srv/pub/epel/7/*/repodata/repomd.xml
> | sed 's#/srv##g'); do
> aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
> --paths "$file"
> done
>
> +for file in $(echo /srv/pub/epel/8/*/repodata/repomd.xml | sed 's#/srv##g');
> do
> + aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
> --paths "$file"
> +done
> +
But the invalidation happens here, right? So between delete and
invalidate there is a short time where the cache might point to files
which have been deleted a bit earlier. For me it seems that
'$CMD2 --delete ...' should be after invalidation. Same for the Fedora
sync a bit later.
In the s3-sync-path.sh script the delete is done after the invalidation.
Any reason to handle it differently in these two scripts?
> # Sync Fedora
> #echo $CMD /srv/pub/fedora/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/fedora/
> echo "Starting Fedora sync at $(date)" >> /var/log/s3-mirror/timestamps
> -$CMD /srv/pub/fedora/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/fedora/
> +$CMD1 /srv/pub/fedora/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/fedora/
> +$CMD2 /srv/pub/fedora/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/fedora/
> +$CMD2 --delete /srv/pub/fedora/
> s3://s3-mirror-us-west-1-02.fedoraproject.org/pub/fedora/
> echo "Ending Fedora sync at $(date)" >> /var/log/s3-mirror/timestamps
>
> for file in $(echo /srv/pub/fedora/linux/updates/*/*/*/repodata/repomd.xml |
> sed 's#/srv##g'); do
> diff --git a/roles/s3-mirror/tasks/main.yml b/roles/s3-mirror/tasks/main.yml
> index 12351cb..5da7a02 100644
> --- a/roles/s3-mirror/tasks/main.yml
> +++ b/roles/s3-mirror/tasks/main.yml
> @@ -69,7 +69,7 @@
>
> - name: s3sync cron - updates for current
> cron: name="s3sync-updates-current" minute="0" hour="3,9,15,21"
> user="s3-mirror"
> - job='/usr/local/bin/lock-wrapper s3sync-updates-current
> "/usr/local/bin/s3-sync-path.sh /pub/fedora/linux/updates/{{
> FedoraCycleNumber|int }}/" 2>&1 | /usr/local/bin/nag-once
> s3-updates-current.sh 1d 2>&1'
> + job='/usr/local/bin/lock-wrapper s3sync-updates-current
> "/usr/local/bin/s3-sync-path.sh /pub/fedora/linux/updates/{{
> FedoraCycleNumber|int }}/Everything/x86_64/os" 2>&1 | /usr/local/bin/nag-once
> s3-updates-current.sh 1d 2>&1'
> cron_file=s3-updates-current.sh
> when: env != 'staging' and inventory_hostname.startswith('mm-backend01.')
> tags:
> @@ -95,7 +95,7 @@
>
> - name: s3sync cron - updates for current-1
> cron: name="s3sync-updates-previous" minute="30" hour="0,6,12,18"
> user="s3-mirror"
> - job='/usr/local/bin/lock-wrapper s3sync-updates-previous
> "/usr/local/bin/s3-sync-path.sh /pub/fedora/linux/updates/{{
> FedoraCycleNumber|int - 1 }}/" 2>&1 | /usr/local/bin/nag-once
> s3-updates-previous.sh 1d 2>&1'
> + job='/usr/local/bin/lock-wrapper s3sync-updates-previous
> "/usr/local/bin/s3-sync-path.sh /pub/fedora/linux/updates/{{
> FedoraCycleNumber|int - 1 }}/Everything/x86_64/" 2>&1 |
> /usr/local/bin/nag-once s3-updates-previous.sh 1d 2>&1'
> cron_file=s3-updates-previous.sh
> when: env != 'staging' and inventory_hostname.startswith('mm-backend01.')
> tags:
> --
> 1.8.3.1
Adrian
_______________________________________________
infrastructure mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/[email protected]