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

FROSADO / onecloudriver / 32298087461
81%

Build:
DEFAULT BRANCH: main
Ran 19 Aug 2026 08:26PM UTC
Jobs 1
Files 48
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

19 Aug 2026 08:21PM UTC coverage: 77.736% (-0.2%) from 77.897%
32298087461

push

github

web-flow
feat(fs): configurable metadata pre-warm depth after mount (#107)

* feat(fs): configurable metadata pre-warm depth after mount (--pre-warm-depth)

Implements Issue #71: Add configurable metadata pre-warming (BFS traversal)
to prefetch folder structures up to N levels deep after mount, improving
perceived performance on first access.

Changes:
- Add PreWarmDepth to MountConfig (default 2, range 0-10)
- Add PreWarmDepth to AccountPersistedConfig (persisted in account.json)
- Add CLI flag --pre-warm-depth with validation
- Implement preWarm() BFS algorithm with context timeout (30s)
- Integrate preWarm() async call in Mount() lifecycle
- Add 11 unit + integration tests with full coverage
- Add CLI tests for persistence and defaults
- Update MANUAL.md and MANUAL.es.md documentation
- All CI checks passing: tests, lint, race detector

Closes #71

* fix(fs): honor pre-warm-depth 0 and traverse by item ID

The initial issue #71 implementation had two correctness bugs and an
off-by-one:

- The BFS enqueued the display name (the map key returned by GetChildren)
  instead of the real item ID, so only the root was ever pre-warmed.
- --pre-warm-depth 0 did not disable pre-warming: the CLI and
  DefaultMountConfig both used a >0 guard, and omitempty dropped the
  zero from the persisted JSON. PreWarmDepth is now a pointer so an
  explicit 0 is distinguished from "unset" and honored end-to-end.
- Depth now matches the documented semantics (root = level 1).

Also avoid dirtying the whole pre-warmed tree: preWarm now uses
PrefetchChildren (GetChildren without dirty marking) so the first
SerializeDirty after a bulk warm-up doesn't rewrite the entire subtree,
and the pre-warm goroutine is skipped entirely when depth is 0.

Generated with Codebuff 🤖
Co-Authored-By: Codebuff <noreply@codebuff.com>

---------

Co-authored-by: Codebuff <noreply@codebuff.com>

78 of 106 new or added lines in 3 files covered. (73.58%)

4 existing lines in 2 files now uncovered.

4567 of 5875 relevant lines covered (77.74%)

3364.44 hits per line

Uncovered Changes

Lines Coverage ∆ File
23
46.57
8.76% internal/fs/mount.go
5
40.0
4.96% cmd/onecloudriver/mount.go

Coverage Regressions

Lines Coverage ∆ File
2
78.13
-0.57% internal/fs/content_cache.go
2
84.91
-3.77% internal/graph/children.go
Jobs
ID Job ID Ran Files Coverage
1 32298087461.1 19 Aug 2026 08:26PM UTC 48
77.74
GitHub Action Run
Source Files on build 32298087461
  • Tree
  • List 48
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0b9d2528 on github
  • Prev Build on main (#32252059305)
  • Next Build on main (#32308463763)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc