Troubleshooting guide
This guide collects debugging tips and guidelines for common problem situations.
Checking your Neptune version
Neptune consists of three components, each with its own release track:
- The web app, located at scale.neptune.ai or your self-hosted URL.
- The neptune-scale Python library, for logging metadata to Neptune.
- The neptune-query Python library, for fetching logged metadata from Neptune.
-
For how to check your app version, see Check the app version.
-
To check your Python package versions, use:
pip show neptune-scale neptune-query
Debugging tips
- To control the type of debug information printed to the console, use the
NEPTUNE_LOGGER_LEVEL
environment variable. - For how to change the logging mode to
disabled
oroffline
, see Modes.
Errors and warnings
For solutions and workarounds, see Neptune API errors and warnings.
FAQ
Why did my runs disappear from the runs table?
You probably logged multiple runs with the same experiment name. When viewing runs in Experiments mode, only the latest run in each experiment is displayed.
To display all runs in the project, switch to Runs mode.
What's the difference between sys/id
and sys/custom_run_id
?
sys/custom_run_id
is the run identifier you set manually via therun_id
argument of theRun
constructor. It's auto-generated if not provided.sys/id
is a legacy run identifier based on the project key. It will be removed in a future release and can be ignored.
What's the difference between tags and group tags?
See Run tags: Tag types.
Why am I facing rate limiting?
Rate limiting is a protection mechanism to ensure system stability. If you're getting rate limit errors, it's likely because you're logging data or making queries that are too frequent or too large.
For assistance, contact your platform administrator or Neptune Support.
In our code, should we run Neptune in a separate process?
No need, as there is a retry mechanism within the Neptune client. The client is safe to use from the main process, as its only function is to pass the data to the subprocess responsible for sending the data to the server.
If either the main process or the worker process is terminated, you get notified.
- If the worker is terminated or encounters a fatal error, the main process is notified and the error callback is called.
- If the main process is terminated, the child process exits, so no zombie processes remain.
The parent-child process setup lets us work around Python's GIL for better performance. Any errors that are non-fatal result in a retry, so anything that's reported as an error can be treated as fatal or exhausted retries.
Should we retry in case we encounter API errors?
Neptune uses a subprocess to send data asynchronously. This subprocess propagates errors to its parent, which can handle the errors using callbacks. The subprocess includes retry logic.
For details, see Error handling in callbacks.
Support
For help, contact our Support team.