oxidecomputer / oxidecomputer/propolis
want instrumentation/"get my state" methods for Propolis entities
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 270
- Forks
- 42
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 6
Description
Sometimes when debugging live Propolises we'd like to be able to examine the contents of an entity's data structures (e.g. NVMe or Crucible upstairs queues) even when the entity is stuck or otherwise at rest (such that it won't cross any USDT probes or log lines in the course of its continued operation).
One possible way to do this:
- add a
tracefunction to theEntitytrait - each implementation takes locks, examines internal data structures, etc. and logs output and/or fires USDT probes to describe the current state of the system
- Propolis server exposes an API endpoint that visits each entity in turn and calls the tracing callback
The user can then specify which probes to enable, what filtering rules to apply when reading the logs, etc. to get only information from the relevant entities or subsystems.
An alternative approach is to let the user specify exactly which entities should get tracing callbacks. This cuts runtime expenses (no visiting entities you don't care about) in exchange for forcing users to understand how entities were named.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the Entity trait, its implementations, and the Propolis server API surface mentioned in the issue. Compare the proposed all-entity callback with targeting specific entities, then define the interface and endpoint behavior. Done means the approach is agreed and current entity state can be inspected through the chosen instrumentation path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, observability, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100