Skip to content

daemon.cleanupContainer: nullify container RWLayer upon release#36160

Merged
tiborvass merged 1 commit into
moby:masterfrom
kolyshkin:layer-not-retained
Jan 31, 2018
Merged

daemon.cleanupContainer: nullify container RWLayer upon release#36160
tiborvass merged 1 commit into
moby:masterfrom
kolyshkin:layer-not-retained

Conversation

@kolyshkin
Copy link
Copy Markdown
Contributor

ReleaseRWLayer can and should only be called once (unless it returns
an error), but might be called twice in case of a failure from
system.EnsureRemoveAll(container.Root). This results in the
following error:

Error response from daemon: driver "XXX" failed to remove root filesystem for YYY: layer not retained

The obvious fix is to set container.RWLayer to nil as soon as
ReleaseRWLayer() succeeds.

ReleaseRWLayer can and should only be called once (unless it returns
an error), but might be called twice in case of a failure from
`system.EnsureRemoveAll(container.Root)`. This results in the
following error:

> Error response from daemon: driver "XXX" failed to remove root filesystem for YYY: layer not retained

The obvious fix is to set container.RWLayer to nil as soon as
ReleaseRWLayer() succeeds.

Signed-off-by: Kir Kolyshkin <[email protected]>
@kolyshkin
Copy link
Copy Markdown
Contributor Author

kolyshkin commented Jan 31, 2018

Unfortunately I don't have a reproducer and it's complicated to have a test case...

@vieux
Copy link
Copy Markdown
Contributor

vieux commented Jan 31, 2018

LGTM

@tiborvass
Copy link
Copy Markdown
Contributor

LGTM

@fugr
Copy link
Copy Markdown

fugr commented Feb 26, 2018

how to delete container after this case happened?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants