• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

futpib / slopd / 24604758821
85%

Build:
DEFAULT BRANCH: master
Ran 18 Apr 2026 12:36PM UTC
Jobs 1
Files 8
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

18 Apr 2026 12:32PM UTC coverage: 83.064% (-2.0%) from 85.045%
24604758821

push

github

futpib
fix: wrap DashMap/DashSet in newtypes that only return owned values

The previous `PaneMap = Arc<dashmap::DashMap<...>>` and
`ManagedPanes = Arc<dashmap::DashSet<String>>` type aliases let callers
acquire shard guards (`Ref`/`RefMut`/`Entry`/`Iter`) and hold them across
`.await`.  In production (commit 2bac67b / r163) a `for entry in
managed_panes.iter()` loop held a shard read guard across a
`tmux(...).output().await`, and a concurrent `panes.remove(...)` parked
on the same shard's writer-preferring parking_lot::RwLock — deadlocking
slopd.

Fix by hiding the underlying DashMap/DashSet behind newtype wrappers
that expose only owned-return APIs:

- `PaneMap::{get_or_insert,get,remove}` → `Arc<PaneState>` /
  `Option<Arc<PaneState>>`
- `ManagedPanes::{insert,remove,contains,is_empty,snapshot}` →
  `bool` / `Vec<String>`

`snapshot()` is the only way to iterate; the guards used internally are
released before the Vec is returned, so the caller is free to `.await`
while walking it.

Also drop the `pane_state(panes, pane)` helper — callers now call
`panes.get_or_insert(pane)` directly, which does the same thing with a
clearer name.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

48 of 48 new or added lines in 1 file covered. (100.0%)

75 existing lines in 1 file now uncovered.

2982 of 3590 relevant lines covered (83.06%)

1196578.88 hits per line

Coverage Regressions

Lines Coverage ∆ File
75
52.87
-17.94% slopd/src/bin/mock_claude.rs
Jobs
ID Job ID Ran Files Coverage
1 24604758821.1 18 Apr 2026 12:36PM UTC 8
83.06
GitHub Action Run
Source Files on build 24604758821
  • Tree
  • List 8
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24604758821
  • 9f8ac532 on github
  • Prev Build on master (#24604753368)
  • Next Build on master (#24606828512)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc