mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #27209 from tonistiigi/sleep-between-layers
Fix naivediffdriver timestamp precision bug
This commit is contained in:
commit
7ba31540f0
1 changed files with 7 additions and 0 deletions
|
@ -44,6 +44,7 @@ func NewNaiveDiffDriver(driver ProtoDriver, uidMaps, gidMaps []idtools.IDMap) Dr
|
||||||
// Diff produces an archive of the changes between the specified
|
// Diff produces an archive of the changes between the specified
|
||||||
// layer and its parent layer which may be "".
|
// layer and its parent layer which may be "".
|
||||||
func (gdw *NaiveDiffDriver) Diff(id, parent string) (arch archive.Archive, err error) {
|
func (gdw *NaiveDiffDriver) Diff(id, parent string) (arch archive.Archive, err error) {
|
||||||
|
startTime := time.Now()
|
||||||
driver := gdw.ProtoDriver
|
driver := gdw.ProtoDriver
|
||||||
|
|
||||||
layerFs, err := driver.Get(id, "")
|
layerFs, err := driver.Get(id, "")
|
||||||
|
@ -88,6 +89,12 @@ func (gdw *NaiveDiffDriver) Diff(id, parent string) (arch archive.Archive, err e
|
||||||
return ioutils.NewReadCloserWrapper(archive, func() error {
|
return ioutils.NewReadCloserWrapper(archive, func() error {
|
||||||
err := archive.Close()
|
err := archive.Close()
|
||||||
driver.Put(id)
|
driver.Put(id)
|
||||||
|
|
||||||
|
// NaiveDiffDriver compares file metadata with parent layers. Parent layers
|
||||||
|
// are extracted from tar's with full second precision on modified time.
|
||||||
|
// We need this hack here to make sure calls within same second receive
|
||||||
|
// correct result.
|
||||||
|
time.Sleep(startTime.Truncate(time.Second).Add(time.Second).Sub(time.Now()))
|
||||||
return err
|
return err
|
||||||
}), nil
|
}), nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue