Hello Christian,

I tried to execute the script during build process.

Here is a couple of outputs from machine where this build is sometimes
failing:

[(0, 9), (0.0001, 9), (0.001, 8), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 10), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 8), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 9), (0.0001, 10), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 9), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 10), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 9), (0.0001, 10), (0.001, 6), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 6), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 9), (0.0001, 9), (0.001, 6), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 9), (0.0001, 10), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 6), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 10), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 10), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 7), (0.01, 0), (0.1, 0), (1, 0)]
[(0, 10), (0.0001, 9), (0.001, 6), (0.01, 0), (0.1, 0), (1, 0)]

Filip

On 2016/11/27 00:38, Christian Geier wrote:
> Hi Filip,
> could you perhaps run the attached file on the test machine (with
> `py.test vdir_test.py`, py.test is needed for the creation of a temp
> directory).
> 
> On my machine the output looks like this:
> [(0, 10), (0.0001, 8), (0.001, 0), (0.01, 0), (0.1, 0), (1, 0)]
> 
> Similar experiments before made me choose the current delay.
> 
> Best regards,
> Christian
> 
> Quoting Filip Pytloun (2016-11-24 00:20:50)
> > On 2016/11/24 00:00, Santiago Vila wrote:
> > > Try using a chroot without union-type=overlay.
> > 
> > Unfortunately it will result in the same error :-/

> import os
> import time
> 
> 
> def get_etag_from_file(f):
>     '''Get mtime-based etag from a filepath or file-like object.
> 
>     This function will flush/sync the file as much as necessary to obtain a
>     correct mtime.
>     '''
>     stat = os.stat(f)
>     mtime = getattr(stat, 'st_mtime_ns', None)
>     if mtime is None:
>         mtime = stat.st_mtime
>     return '{:.9f}'.format(mtime)
> 
> 
> def test_etag(tmpdir):
>     fpath = os.path.join(str(tmpdir), 'foo')
>     stats = dict()
>     for delay in [0, 0.0001, 0.001, 0.01, 0.1, 1]:
>         failed = list()
>         for one in range(10):
> 
>             file_ = open(fpath, 'w')
>             file_.write('foo')
>             file_.close()
> 
>             old_etag = get_etag_from_file(fpath)
>             time.sleep(delay)
> 
>             file_ = open(fpath, 'w')
>             file_.write('bar')
>             file_.close()
> 
>             new_etag = get_etag_from_file(fpath)
> 
>             if old_etag == new_etag:
>                 failed.append(
>                     (one, new_etag)
>                 )
>             stats[delay] = len(failed)
>     print(sorted(stats.items()))
>     assert False  # here to make sure we get the print output via py.test

Attachment: signature.asc
Description: Digital signature

Reply via email to