launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #20996
Re: [Merge] lp:~wgrant/launchpad/librarian-fsync into lp:launchpad
Review: Approve
Diff comments:
> === modified file 'lib/lp/services/librarianserver/storage.py'
> --- lib/lp/services/librarianserver/storage.py 2015-12-27 04:00:36 +0000
> +++ lib/lp/services/librarianserver/storage.py 2016-09-19 13:43:37 +0000
> @@ -37,6 +37,34 @@
> ]
>
>
> +def fsync_path(path, dir=False):
> + fd = os.open(path, os.O_RDONLY | (os.O_DIRECTORY if dir else 0))
> + try:
> + os.fsync(fd)
> + finally:
> + os.close(fd)
> +
> +
> +def makedirs_fsync(name, mode=0777):
> + """makedirs_fsync(path [, mode=0777])
> +
> + os.makedirs, but fsyncing on the way up to ensure durability.
> + """
> + head, tail = os.path.split(name)
> + if not tail:
> + head, tail = os.path.split(head)
> + if head and tail and not os.path.exists(head):
> + try:
> + makedirs_fsync(head, mode)
> + except OSError, e:
except OSError as e:
> + if e.errno != errno.EEXIST:
> + raise
> + if tail == os.curdir:
> + return
> + os.mkdir(name, mode)
> + fsync_path(head, dir=True)
> +
> +
> class DigestMismatchError(Exception):
> """The given digest doesn't match the SHA-1 digest of the file."""
>
--
https://code.launchpad.net/~wgrant/launchpad/librarian-fsync/+merge/306099
Your team Launchpad code reviewers is subscribed to branch lp:launchpad.
References