Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
dkwon17 opened this issue Sep 5, 2024 · 0 comments
Labels
area/editor/vscode Issues related to the Code OSS editor of Che kind/bug Outline of a bug - must adhere to the bug report template. severity/P1 Has a major impact to usage or development of the system. team/B This team is responsible for the Web Terminal, the DevWorkspace Operator and the IDEs.

Comments

@dkwon17
Copy link
Contributor

dkwon17 commented Sep 5, 2024

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 dkwon17 added the kind/bug Outline of a bug - must adhere to the bug report template. label Sep 5, 2024
@che-bot che-bot added the status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. label Sep 5, 2024
@svor svor added severity/P1 Has a major impact to usage or development of the system. area/editor/vscode Issues related to the Code OSS editor of Che team/B This team is responsible for the Web Terminal, the DevWorkspace Operator and the IDEs. and removed status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. labels Sep 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/editor/vscode Issues related to the Code OSS editor of Che kind/bug Outline of a bug - must adhere to the bug report template. severity/P1 Has a major impact to usage or development of the system. team/B This team is responsible for the Web Terminal, the DevWorkspace Operator and the IDEs.
Projects
Status: No status
Development

No branches or pull requests

3 participants