+1 too

On Mon, 9 Mar 2020 at 17:00, Stephen John Smoogen <smo...@gmail.com> wrote:

>
> +1
>
> On Sat, 7 Mar 2020 at 05:17, Adrian Reber <adr...@lisas.de> wrote:
>
>> Looks correct from my point of view, for both scripts we are now doing:
>>
>> 1. sync everything besides repodata
>> 2. sync everything including (or only) repodata
>> 3. invalidate repodata
>> 4. delete files
>>
>> The only problem I can see now is that the files on the master are
>> changing between those steps. Not sure how often the master is updated,
>> but probably not more often than once or twice a day, right?
>>
>> In theory this should help with the problems we have been seeing in
>> COPR.
>>
>> +1
>>
>>                 Adrian
>>
>> On Fri, Mar 06, 2020 at 02:04:21PM -0800, Kevin Fenzi wrote:
>> > Final version? You be the judge. :)
>> >
>> > kevin
>> > --
>>
>> > From bd3c100e3a5fdd453ebbd4b88cc3bba365d260c3 Mon Sep 17 00:00:00 2001
>> > From: Kevin Fenzi <ke...@scrye.com>
>> > Date: Thu, 5 Mar 2020 20:46:53 +0000
>> > Subject: [PATCH] s3-mirror: Split things into 2 sync runs, one without
>> >  repodata and delete, the other with both.
>> >
>> > In order to make sure the s3 mirror always is consistent, split out the
>> commands
>> > to make it sync without repodata and delete, then do another run with
>> those, then finally
>> > invalidate all the repodata/* files.
>> >
>> > Some of the cron jobs are adjusted to allow the repodata invalidation.
>> >
>> > Signed-off-by: Kevin Fenzi <ke...@scrye.com>
>> > ---
>> >  roles/s3-mirror/files/s3-sync-path.sh |  42 +++++++++----
>> >  roles/s3-mirror/files/s3.sh           | 114
>> ++++++++++++++++++++++++++++++++--
>> >  roles/s3-mirror/tasks/main.yml        |   4 +-
>> >  3 files changed, 140 insertions(+), 20 deletions(-)
>> >
>> > diff --git a/roles/s3-mirror/files/s3-sync-path.sh
>> b/roles/s3-mirror/files/s3-sync-path.sh
>> > index e6ac994..79b4d63 100644
>> > --- a/roles/s3-mirror/files/s3-sync-path.sh
>> > +++ b/roles/s3-mirror/files/s3-sync-path.sh
>> > @@ -9,7 +9,30 @@ if [[ "$1" == "" ]] || [[ $1 != /pub* ]] || [[ $1 !=
>> */ ]]; then
>> >    exit 1
>> >  fi
>> >
>> > -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..c70defb 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,9 +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/
>> >  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
>> >    aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
>> --paths "$file"
>> >  done
>> > @@ -94,12 +191,19 @@ 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
>> > +$CMD2 --delete /srv/pub/epel/ s3://
>> s3-mirror-us-west-1-02.fedoraproject.org/pub/epel/
>> > +
>> >  # 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/
>> >  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
>> >    aws cloudfront create-invalidation --distribution-id E2KJMDC0QAJDMU
>> --paths "$file"
>> >  done
>> > +$CMD2 --delete /srv/pub/fedora/ s3://
>> s3-mirror-us-west-1-02.fedoraproject.org/pub/fedora/
>> > 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
>> _______________________________________________
>> 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
>>
>
>
> --
> Stephen J Smoogen.
>
> _______________________________________________
> 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
>
_______________________________________________
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