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 <rel...@redhat.com>
>  
> -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 -- infrastructure@lists.fedoraproject.org
To unsubscribe send an email to infrastructure-le...@lists.fedoraproject.org
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/infrastructure@lists.fedoraproject.org

Reply via email to