Skip to content

Autocomplete fails ambiguously on read-only root filesystem. #6484

@supernomad

Description

@supernomad

Description

When running Deephaven in a container, namely while in k8s, and the root filesystem is set to read-only. The autocomplete fails with the following message:

qtp24404443-57 | .c.ConsoleServiceGrpcImpl | Autocomplete package not found; disabling autocomplete.
qtp24404443-57 | .c.ConsoleServiceGrpcImpl | Do you need to install the autocomplete package?
qtp24404443-57 | .c.ConsoleServiceGrpcImpl | pip install deephaven-core[autocomplete]==<version>
qtp24404443-57 | .c.ConsoleServiceGrpcImpl | Add the jvm flag '-Ddeephaven.console.autocomplete.disable=true' to disable this message.

There are no other errors, however if you run the command that produces that output on startup:

from deephaven_internal.auto_completer import jedi_settings

It returns the actual error:

r-Scheduler-Serial-1 | .c.ConsoleServiceGrpcImpl | Error running script: java.lang.RuntimeException: Error in Python interpreter:
Type: <class 'OSError'>
Value: [Errno 30] Read-only file system: '/root/.cache/jedi'
Line: 225
Namespace: makedirs
File: /usr/lib/python3.10/os.py
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/deephaven/venv/lib/python3.10/site-packages/deephaven_internal/auto_completer/__init__.py", line 25, in <module>
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/api/__init__.py", line 783, in preload_module
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/api/helpers.py", line 487, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/api/__init__.py", line 215, in complete
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/api/completion.py", line 170, in complete
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/api/completion.py", line 284, in _complete_python
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/api/completion.py", line 385, in _complete_trailer
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/helpers.py", line 79, in infer_call_of_leaf
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/context.py", line 224, in infer_node
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 157, in infer_node
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 170, in _infer_node_if_inferred
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/cache.py", line 44, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 175, in _infer_node_cached
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/debug.py", line 81, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 83, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 185, in _infer_node
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 305, in infer_atom
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/context.py", line 77, in py__getattribute__
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/base_value.py", line 430, in from_sets
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/context.py", line 77, in <genexpr>
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/names.py", line 281, in infer
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/plugins/stdlib.py", line 878, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/plugins/django.py", line 177, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/syntax_tree.py", line 762, in tree_name_to_values
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/cache.py", line 44, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 53, in infer_import
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 116, in _prepare_infer_import
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 296, in follow
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 376, in import_module_by_names
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 377, in <listcomp>
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/plugins/flask.py", line 20, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/gradual/typeshed.py", line 115, in wrapper
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/base_value.py", line 430, in from_sets
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/gradual/typeshed.py", line 116, in <genexpr>
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 446, in import_module
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/imports.py", line 461, in _load_python_module
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/__init__.py", line 199, in parse
  File "/opt/deephaven/venv/lib/python3.10/site-packages/jedi/inference/__init__.py", line 196, in parse_and_get_code
  File "/opt/deephaven/venv/lib/python3.10/site-packages/parso/grammar.py", line 114, in parse
  File "/opt/deephaven/venv/lib/python3.10/site-packages/parso/cache.py", line 127, in load_module
  File "/opt/deephaven/venv/lib/python3.10/site-packages/parso/cache.py", line 136, in _load_from_file_system
  File "/opt/deephaven/venv/lib/python3.10/site-packages/parso/cache.py", line 263, in _get_hashed_path
  File "/opt/deephaven/venv/lib/python3.10/site-packages/parso/cache.py", line 274, in _get_cache_directory_path
  File "/usr/lib/python3.10/os.py", line 215, in makedirs
  File "/usr/lib/python3.10/os.py", line 225, in makedirs

	at org.jpy.PyLib.executeCode(Native Method)
	at org.jpy.PyObject.executeCode(PyObject.java:138)
	at io.deephaven.engine.util.PythonEvaluatorJpy.evalScript(PythonEvaluatorJpy.java:73)
	at io.deephaven.integrations.python.PythonDeephavenSession.lambda$evaluate$1(PythonDeephavenSession.java:229)
	at io.deephaven.util.locks.FunctionalLock.doLockedInterruptibly(FunctionalLock.java:51)
	at io.deephaven.integrations.python.PythonDeephavenSession.evaluate(PythonDeephavenSession.java:229)
	at io.deephaven.engine.util.AbstractScriptSession.lambda$evaluateScript$0(AbstractScriptSession.java:166)
	at io.deephaven.engine.context.ExecutionContext.lambda$apply$0(ExecutionContext.java:196)
	at io.deephaven.engine.context.ExecutionContext.apply(ExecutionContext.java:207)
	at io.deephaven.engine.context.ExecutionContext.apply(ExecutionContext.java:195)
	at io.deephaven.engine.util.AbstractScriptSession.evaluateScript(AbstractScriptSession.java:166)
	at io.deephaven.engine.util.DelegatingScriptSession.evaluateScript(DelegatingScriptSession.java:72)
	at io.deephaven.engine.util.ScriptSession.evaluateScript(ScriptSession.java:75)
	at io.deephaven.server.console.ConsoleServiceGrpcImpl.lambda$executeCommand$5(ConsoleServiceGrpcImpl.java:192)
	at io.deephaven.server.session.SessionState$ExportObject.doExport(SessionState.java:1001)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at io.deephaven.server.runner.scheduler.SchedulerModule$ThreadFactory.lambda$newThread$0(SchedulerModule.java:100)
	at java.base/java.lang.Thread.run(Thread.java:1583)

Steps to reproduce

  1. Launch container with a read-only filesystem.
  2. Load the IDE and observe the failure.

Expected results

Expected auto-complete to work or at least display a proper error as to why it isn't working while using a read-only root filesystem.

Actual results

An error was encountered that led us to believe we had a dependency issue instead of a configuration issue.

Versions

  • Deephaven: 0.37.0
  • OS: Container OS (no idea on version)
  • Browser: Brave Version 1.69.160 Chromium: 128.0.6613.114
  • Docker: K8s no clue on version of containerd itself.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions