diff options
author | Sebastiaan van Stijn <github@gone.nl> | 2018-11-26 16:23:23 +0100 |
---|---|---|
committer | Paweł Gronowski <pawel.gronowski@docker.com> | 2023-01-03 16:57:04 +0100 |
commit | 01fd23b6259642b99df5a033c1721a8d15becfb7 (patch) | |
tree | 44eaf4269d5906fab6710678bea562ffe2b96599 /integration | |
parent | f5106148e333be4ad92fc6c9b9a30b0ff1e96f8d (diff) | |
download | docker-01fd23b6259642b99df5a033c1721a8d15becfb7.tar.gz |
Fix volume CreatedAt being altered on initialization
The CreatedAt date was determined from the volume's `_data`
directory (`/var/lib/docker/volumes/<volumename>/_data`).
However, when initializing a volume, this directory is updated,
causing the date to change.
Instead of using the `_data` directory, use its parent directory,
which is not updated afterwards, and should reflect the time that
the volume was created.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
Diffstat (limited to 'integration')
-rw-r--r-- | integration/volume/volume_test.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/integration/volume/volume_test.go b/integration/volume/volume_test.go index 6f3a4c64ad..87392620a4 100644 --- a/integration/volume/volume_test.go +++ b/integration/volume/volume_test.go @@ -3,6 +3,7 @@ package volume import ( "context" "net/http" + "os" "path/filepath" "strings" "testing" @@ -104,6 +105,21 @@ func TestVolumesInspect(t *testing.T) { createdAt, err := time.Parse(time.RFC3339, strings.TrimSpace(inspected.CreatedAt)) assert.NilError(t, err) assert.Check(t, createdAt.Unix()-now.Unix() < 60, "CreatedAt (%s) exceeds creation time (%s) 60s", createdAt, now) + + // update atime and mtime for the "_data" directory (which would happen during volume initialization) + modifiedAt := time.Now().Local().Add(5 * time.Hour) + err = os.Chtimes(inspected.Mountpoint, modifiedAt, modifiedAt) + assert.NilError(t, err) + + inspected, err = client.VolumeInspect(ctx, vol.Name) + assert.NilError(t, err) + + createdAt2, err := time.Parse(time.RFC3339, strings.TrimSpace(inspected.CreatedAt)) + assert.NilError(t, err) + + // Check that CreatedAt didn't change after updating atime and mtime of the "_data" directory + // Related issue: #38274 + assert.Equal(t, createdAt, createdAt2) } // TestVolumesInvalidJSON tests that POST endpoints that expect a body return |