che icon indicating copy to clipboard operation
che copied to clipboard

Cannot install extensions if automount configmap mounts /checode/remote/data/Machine/

Open dkwon17 opened this issue 1 year ago • 0 comments

Describe the bug

If I create this configmap to mount a vs code settings file:

kind: ConfigMap
apiVersion: v1
metadata:
  name: vscode-settings
  namespace: <USER'S NAMESPACE>
  labels:
    controller.devfile.io/mount-to-devworkspace: 'true'
    controller.devfile.io/watch-configmap: 'true'
  annotations:
    controller.devfile.io/mount-as: subpath
    controller.devfile.io/mount-path: /checode/remote/data/Machine/
data:
  settings.json: |
    {
      "git.defaultCloneDirectory": "/projects/", // This setting MUST be used in this configmap for the git clone functionality to work correctly
      // Example settings configuration that will be applied to all workspaces
      "editor.cursorBlinking": "expand",
      "editor.cursorStyle": "block",
      "workbench.colorTheme": "Solarized Dark",
    }

I cannot install extensions in my CDE: Screenshot from 2024-09-05 17-50-57

Here are the logs in the che-code entrypoint-logs.txt
total 24
drwxrwsr-x. 6 root user 4096 Sep  5 23:45 .
dr-xr-xr-x. 1 root root  141 Sep  5 23:45 ..
drwxr-sr-x. 2 user user 4096 Sep  5 23:45 bin
drwxr-sr-x. 4 user user 4096 Sep  5 23:45 checode-linux-libc
drwxr-sr-x. 8 user user 4096 Sep  5 23:45 checode-linux-musl
-rw-r--r--. 1 user user    0 Sep  5 23:45 entrypoint-logs.txt
-rwxr-xr-x. 1 user user 3547 Sep  5 23:45 entrypoint-volume.sh
drwxr-sr-x. 3 root user 4096 Sep  5 23:45 remote
[INFO] openssl command is available, OpenSSL version is: OpenSSL 1.1.1k  FIPS 25 Mar 2021
[INFO] OpenSSL major version is: 1.
[INFO] Using linux-libc ubi8-based assembly...
[INFO] Node.js dir for running VS Code: /checode/checode-linux-libc/ubi8
time="2024-09-05T23:45:30Z" level=info msg="Default 'info' log level is applied"
time="2024-09-05T23:45:30Z" level=info msg="Exec containers configuration:"
time="2024-09-05T23:45:30Z" level=info msg="==> Debug level info"
time="2024-09-05T23:45:30Z" level=info msg="==> Application url 0.0.0.0:3333"
time="2024-09-05T23:45:30Z" level=info msg="==> Absolute path to folder with static resources "
time="2024-09-05T23:45:30Z" level=info msg="==> Use bearer token: false"
time="2024-09-05T23:45:30Z" level=info msg="==> Pod selector: controller.devfile.io/devworkspace_id=workspace266fc11244594bb1"
time="2024-09-05T23:45:30Z" level=info msg="==> Idle timeout: 3h0m0s"
time="2024-09-05T23:45:30Z" level=info msg="==> Run timeout: 24h0m0s"
time="2024-09-05T23:45:30Z" level=info msg="==> Stop retry period: 10s"
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /connect                  --> main.main.func2 (3 handlers)
[GIN-debug] GET    /attach/:id               --> main.main.func3 (3 handlers)
[GIN-debug] POST   /exec/config              --> main.main.func4 (3 handlers)
[GIN-debug] POST   /exec/init                --> main.main.func5 (3 handlers)
[GIN-debug] POST   /activity/tick            --> main.main.func6 (3 handlers)
[GIN-debug] GET    /healthz                  --> main.main.func7 (3 handlers)
⇩ Registered RPCRoutes:

Json-rpc MachineExec Routes:
✓ create
✓ check
✓ resize
✓ listContainers
time="2024-09-05T23:45:30Z" level=info msg="Activity tracker is run and workspace will be stopped in 3h0m0s if there is no activity"
time="2024-09-05T23:45:30Z" level=info msg="Run idle manager is running. The workspace will be stopped in 24h0m0s"
[GIN-debug] Listening and serving HTTP on 0.0.0.0:3333
# Setting curent DevWorkspace ID to che-code...
  > apply DevWorkspace ID [workspace266fc11244594bb1]
# Configuring OpenVSIX registry...
  > env.OPENVSX_REGISTRY_URL set to https://open-vsx.org
  > apply OpenVSIX URL [https://open-vsx.org/vscode]
# Configuring Webview Resources location...
  > env.WEBVIEW_LOCAL_RESOURCES is not set to 'true', skip this step
# Configuring Node extra certificates...
  > found /public-certs/kube-root-ca.crt.ca.crt
  > writing /tmp/node-extra-certificates/ca.crt..
# Injecting server public key to che-code...
  > found key file /etc/ssh/default-1627504635564.pub
  > out/vs/code/browser/workbench/workbench.js has been updated
# Configuring Trusted Extensions...
  > env.VSCODE_TRUSTED_EXTENSIONS is not defined, skip this step
# Generating Workspace file...
  > Creating new workspace file /projects/.code-workspace
# Launching VS Code...
  > Setting DEVWORKSPACE_POD_NAME environment variable to workspace266fc11244594bb1-b9f6659bc-zkfg5
  > Running: /checode/checode-linux-libc/ubi8/node
  > Params: out/server-main.js,--host,127.0.0.1,--port,3100,--without-connection-token,--default-workspace,/projects/.code-workspace
Server bound to 127.0.0.1:3100 (IPv4)
Extension host agent listening on 3100


Error: EACCES: permission denied, mkdir '/checode/remote/extensions'
    at Object.mkdirSync (node:fs:1373:26)
    at /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1792
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1757)
    at g._safeInvokeFunction (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1245)
    at g._invokeFactory (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1425)
    at g.complete (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1682)
    at a._onModuleComplete (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1051)
    at a._resolve (/checode/checode-linux-libc/ubi8/out/server-main.js:4:510)
    at a.defineModule (/checode/checode-linux-libc/ubi8/out/server-main.js:3:5561)
    at p (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1741)
    at b (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2448)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:565)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1921)
    at r._createAndEvalScript (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2492)
    at /checode/checode-linux-libc/ubi8/out/server-main.js:2:2133
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) {
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/checode/remote/extensions'
}

Error: EACCES: permission denied, mkdir '/checode/remote/data/User'
    at Object.mkdirSync (node:fs:1373:26)
    at /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1792
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1757)
    at g._safeInvokeFunction (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1245)
    at g._invokeFactory (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1425)
    at g.complete (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1682)
    at a._onModuleComplete (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1051)
    at a._resolve (/checode/checode-linux-libc/ubi8/out/server-main.js:4:510)
    at a.defineModule (/checode/checode-linux-libc/ubi8/out/server-main.js:3:5561)
    at p (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1741)
    at b (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2448)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:565)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1921)
    at r._createAndEvalScript (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2492)
    at /checode/checode-linux-libc/ubi8/out/server-main.js:2:2133
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) {
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/checode/remote/data/User'
}

Error: ENOENT: no such file or directory, mkdir '/checode/remote/data/User/globalStorage'
    at Object.mkdirSync (node:fs:1373:26)
    at /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1792
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1757)
    at g._safeInvokeFunction (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1245)
    at g._invokeFactory (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1425)
    at g.complete (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1682)
    at a._onModuleComplete (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1051)
    at a._resolve (/checode/checode-linux-libc/ubi8/out/server-main.js:4:510)
    at a.defineModule (/checode/checode-linux-libc/ubi8/out/server-main.js:3:5561)
    at p (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1741)
    at b (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2448)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:565)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1921)
    at r._createAndEvalScript (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2492)
    at /checode/checode-linux-libc/ubi8/out/server-main.js:2:2133
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'mkdir',
  path: '/checode/remote/data/User/globalStorage'
}

Error: ENOENT: no such file or directory, mkdir '/checode/remote/data/User/History'
    at Object.mkdirSync (node:fs:1373:26)
    at /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1792
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1757)
    at g._safeInvokeFunction (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1245)
    at g._invokeFactory (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1425)
    at g.complete (/checode/checode-linux-libc/ubi8/out/server-main.js:3:1682)
    at a._onModuleComplete (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1051)
    at a._resolve (/checode/checode-linux-libc/ubi8/out/server-main.js:4:510)
    at a.defineModule (/checode/checode-linux-libc/ubi8/out/server-main.js:3:5561)
    at p (/checode/checode-linux-libc/ubi8/out/server-main.js:4:1741)
    at b (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2448)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:565)
    at Object.<anonymous> (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:226:1921)
    at r._createAndEvalScript (/checode/checode-linux-libc/ubi8/out/server-main.js:2:2492)
    at /checode/checode-linux-libc/ubi8/out/server-main.js:2:2133
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'mkdir',
  path: '/checode/remote/data/User/History'
}

[23:45:31] 





[Error: EACCES: permission denied, mkdir '/checode/remote/data/logs'] {
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/checode/remote/data/logs'
}

Web UI available at http://localhost:3100

[23:45:31] Extension host agent started.

[23:45:31] Started initializing default profile extensions in extensions installation folder. file:///checode/remote/extensions

[Error: EACCES: permission denied, mkdir '/checode/remote/data/logs'] {
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/checode/remote/data/logs'
}

[23:45:31] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async J.s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58923)
    at async J.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58678)
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50898)
    at async /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53276
    at async a.initializeDefaultProfileExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53054)
    at async s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:154:1207) {
  fileOperationResult: 1,
  options: undefined
}

[23:45:31] be [Error]: Unable to write file '/checode/remote/data/User/globalStorage/storage.json' (NoPermissions (FileSystemError): Error: EACCES: permission denied, mkdir '/checode/remote/data/User')
    at o.writeFile (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:7830)
    at async S.t (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:134:7041) {
  fileOperationResult: 6,
  options: { atomic: { postfix: '.vsctmp' } }
}

[23:45:31] Error while initializing Extensions Watcher Unable to resolve nonexistent file '/checode/remote/extensions'

rejected promise not handled within 1 second: Error: Unable to resolve nonexistent file '/checode/remote/extensions'

stack trace: Error: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async U.tb (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:82125)
[23:45:32] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async U.tb (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:82125) {
  fileOperationResult: 1,
  options: undefined
}

File not found: /checode/checode-linux-libc/ubi8/out/vsda.js

File not found: /checode/checode-linux-libc/ubi8/out/vsda_bg.wasm

[23:45:36] [127.0.0.1][e38ac5ea][ManagementConnection] New connection established.

[23:45:36] [127.0.0.1][cec99d40][ExtensionHostConnection] New connection established.

[23:45:36] Started initializing default profile extensions in extensions installation folder. file:///checode/remote/extensions

[23:45:36] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async J.s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58923)
    at async J.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58678)
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50898)
    at async /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53276 {
  fileOperationResult: 1,
  options: undefined
}

[23:45:36] Started initializing default profile extensions in extensions installation folder. file:///checode/remote/extensions

[23:45:36] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async J.s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58923)
    at async J.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58678)
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50898)
    at async /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53276
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:51030)
    at async Promise.all (index 1)
    at async a.scanAllExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50025) {
  fileOperationResult: 1,
  options: undefined
}

[23:45:37] [127.0.0.1][cec99d40][ExtensionHostConnection] <480> Launched Extension Host Process.

[23:45:38] Started initializing default profile extensions in extensions installation folder. file:///checode/remote/extensions

[23:45:38] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async J.s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58923)
    at async J.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58678)
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50898)
    at async /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53276
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:51030)
    at async Promise.all (index 1)
    at async a.scanAllExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50025)
    at async ee.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:84370)
    at async g.call (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:131:27856) {
  fileOperationResult: 1,
  options: undefined
}

[23:45:38] Started initializing default profile extensions in extensions installation folder. file:///checode/remote/extensions

[23:45:38] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async J.s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58923)
    at async J.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58678)
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50898)
    at async /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53276 {
  fileOperationResult: 1,
  options: undefined
}

[23:45:39] Started initializing default profile extensions in extensions installation folder. file:///checode/remote/extensions

[23:45:39] be [Error]: Unable to resolve nonexistent file '/checode/remote/extensions'
    at o.resolve (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:128:5171)
    at async J.s (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58923)
    at async J.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:58678)
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50898)
    at async /checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:53276
    at async a.scanUserExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:51030)
    at async Promise.all (index 1)
    at async a.scanAllExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:50025)
    at async ee.scanExtensions (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:180:84370)
    at async g.call (/checode/checode-linux-libc/ubi8/out/vs/server/node/server.main.js:131:27856) {
  fileOperationResult: 1,
  options: undefined
}

[23:45:41] [Error: ENOENT: no such file or directory, scandir '/checode/remote/data/logs'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'scandir',
  path: '/checode/remote/data/logs'
}

[IPC Library: Pty Host] Error: EACCES: permission denied, mkdir '/checode/remote/data/logs'

Che version

7.91@latest

Steps to reproduce

  1. Create the configmap above
  2. Start an empty workspace
  3. Try to install the Python extension

Expected behavior

The extension should install successfully

Runtime

OpenShift

Screenshots

No response

Installation method

chectl/latest

Environment

Linux

Eclipse Che Logs

No response

Additional context

No response

dkwon17 avatar Sep 05 '24 23:09 dkwon17