[arch-dev-public] [PATCH 4/4] ftpdir-cleanup: lock repo before doing the cleanup
Thomas Bächler
thomas at archlinux.org
Thu Feb 25 02:46:25 EST 2010
Am 25.02.2010 02:36, schrieb Eric Bélanger:
> This should fix the problem of the ftpdir-cleanup script removing the
> new package instead of the old one (FS#17058). The script makes
> $LOCK_TRIAL attempts, each separated by $LOCK_DELAY seconds, in
> getting the repo lock. If the lock is unsuccessful, the cleanup is
> skipped for that particular repo.
>
> Signed-off-by: Eric Bélanger <snowmaniscool at gmail.com>
>
> BTW, I didn't really tested this except the while loop logic.
> ---
> misc-scripts/ftpdir-cleanup | 28 +++++++++++++++++++++++++---
> 1 files changed, 25 insertions(+), 3 deletions(-)
>
> diff --git a/misc-scripts/ftpdir-cleanup b/misc-scripts/ftpdir-cleanup
> index a185090..77f79e6 100755
> --- a/misc-scripts/ftpdir-cleanup
> +++ b/misc-scripts/ftpdir-cleanup
> @@ -10,15 +10,35 @@ dest=$2
>
> ############################################################
>
> -. "$(dirname $0)/../db-functions"
> +. "$(dirname $0)/../db-functions"
> . "$(dirname $0)/../config"
>
> ${CLEANUP_DRYRUN} && echo 'dry run mode is active'
>
> ftppath_base="$FTP_BASE/$reponame/$FTP_OS_SUFFIX"
>
> +LOCK_DELAY=10
> +LOCK_TRIAL=6
> +
> for arch in ${ARCHES[@]}; do
>
> + IS_LOCKED=0
> + count=0
> + while [ $count -le $LOCK_TRIAL ]; do
> + if repo_lock $reponame $arch ; then
> + IS_LOCKED=1
> + let count=$LOCK_TRIAL+1
> + continue
> + fi
> + sleep $LOCK_DELAY
> + let count=$count+1
> + done
> +
> + if [ $IS_LOCKED -eq 0 ]; then
> + echo "Failed to lock $reponame $arch repo"
> + exit 1
> + fi
> +
> TMPDIR=$(mktemp -d /tmp/cleanup-XXXXXX) || exit 1
> ftppath="$ftppath_base/$arch"
> MISSINGFILES=""
This should be made into a generic function instead of just being in
cleanup. Also, this seems like a duplication of kernel/glibc
functionality - the flock(1) command should probably be used in
repo_lock instead of the manual locking process we use.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.archlinux.org/pipermail/arch-dev-public/attachments/20100225/4ab5884c/attachment.bin>
More information about the arch-dev-public
mailing list