This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

[18.09 backport] Windows: DetachVhd attempt in cleanup - #113

Merged
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach
Nov 27, 2018
Merged

[18.09 backport] Windows: DetachVhd attempt in cleanup#113
andrewhsu merged 1 commit into
docker-archive:18.09from
thaJeztah:18.09_backport_detach

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

backport of moby#37712 for 18.09

fixesmoby#36218 for 18.09

first commit was skipped, as the go-winio version was already bumped to v0.4.11 in #75

git checkout -b 18.09_backport_detach ce-engine/18.09
# skipped, already bumped in https://github.com/docker/engine/pull/75
# git cherry-pick -s -S -x 66966941f9c22dc5ab36414ef00a5aaf50e39dd4
git cherry-pick -s -S -x efdad5374465a2a889d7572834a2dcca147af4fb
git push -u origin

This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.

Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.

One such example of a failure:

  1. run a long running container with the --rm flag
    docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
  2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
  3. (re-)Start daemon
  4. docker ps -a
    PS C:\control> docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
  5. Try to remove
    PS C:\control> docker rm 7aff
    Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
    PS C:\control>

Step 5 fails.

(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: John Howard <jhoward@microsoft.com>
This is a fix for a few related scenarios where it's impossible to remove layers or containers
until the host is rebooted. Generally (or at least easiest to repro) through a forced daemon kill
while a container is running.
Possibly slightly worse than that, as following a host reboot, the scratch layer would possibly be leaked and
left on disk under the dataroot\windowsfilter directory after the container is removed.
One such example of a failure:
1. run a long running container with the --rm flag
docker run --rm -d --name test microsoft/windowsservercore powershell sleep 30
2. Force kill the daemon not allowing it to cleanup. Simulates a crash or a host power-cycle.
3. (re-)Start daemon
4. docker ps -a
PS C:\control> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aff773d782b malloc "powershell start-sl…" 11 seconds ago Removal In Progress malloc
5. Try to remove
PS C:\control> docker rm 7aff
Error response from daemon: container 7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d: driver "windowsfilter" failed to remove root filesystem: rename C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d C:\control\windowsfilter\7aff773d782bbf35d95095369ffcb170b7b8f0e6f8f65d5aff42abf61234855d-removing: Access is denied.
PS C:\control>
Step 5 fails.
(cherry picked from commit efdad53)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztahthaJeztah added this to the 18.09.1 milestone Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

ping @jhowardmsft

@lowenna

lowenna commented Nov 9, 2018

Copy link
Copy Markdown

@thaJeztah LGTM (not a maintainer), assuming this repo already has the required go-winio revendor with the new function call. Will this also hit EE?

EDIT: NVM - just saw your comment about not needing the go-winio fix

@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

1 similar comment
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Will this also hit EE?

Yes; during the time that CE is supported, the EE repository is kept in sync with the CE repository.

After 6 months (when the next CE version is released, and 18.09 CE reaches EOL), backported to 18.09 EE will be done in the private EE repository (EE has a longer support - 24 months)

@thaJeztahthaJeztah reopened this Nov 9, 2018
@thaJeztah

Copy link
Copy Markdown
MemberAuthor

Flaky test; https://jenkins.dockerproject.org/job/Docker-PRs/51701/console

This test once was flaky on PowerPC (moby#23626), but now seeing it flaky again on other platforms

01:00:23 FAIL: docker_api_swarm_service_test.go:96: DockerSwarmSuite.TestAPISwarmServicesMultipleAgents
01:00:23 01:00:23 [dec8237be0549] waiting for daemon to start
01:00:23 [dec8237be0549] daemon started
01:00:23 01:00:23 [d083a94b09054] waiting for daemon to start
01:00:23 [d083a94b09054] daemon started
01:00:23 01:00:23 [d84c1ebbb4023] waiting for daemon to start
01:00:23 [d84c1ebbb4023] daemon started
01:00:23 01:00:23 [d083a94b09054] exiting daemon
01:00:23 docker_api_swarm_service_test.go:120:
01:00:23 waitAndAssert(c, defaultReconciliationTimeout, reducedCheck(sumAsIntegers, d1.CheckActiveContainerCount, d3.CheckActiveContainerCount), checker.Equals, instances)
01:00:23 docker_utils_test.go:435:
01:00:23 c.Assert(v, checker, args...)
01:00:23 ... obtained int = 6
01:00:23 ... expected int = 5
01:00:23 ... output: "4616bee2750e\n79b336198aff\n90030a2e1c75\n", output: "36ca890a0447\n4847f43c120b\n6b0070467adb\n"
01:00:23 01:00:23 [dec8237be0549] exiting daemon
01:00:23 [d84c1ebbb4023] exiting daemon

@andrewhsuandrewhsu left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andrewhsu
andrewhsu merged commit 4fd103a into docker-archive:18.09Nov 27, 2018
@thaJeztah
thaJeztah deleted the 18.09_backport_detach branch November 27, 2018 18:09
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@thaJeztah@lowenna@andrewhsu