4.4 KiB
tags, created, status
| tags | created | status | ||||
|---|---|---|---|---|---|---|
|
2026-03-11 | resolved |
Obsidian Vault Recovery — Loading Cache Hang
Problem
Obsidian refused to open MajorVault, hanging indefinitely on "Loading cache" with no progress. The issue began with an EACCES permission error on a Python venv symlink inside the vault, then persisted even after the offending files were removed.
Root Causes
Two compounding issues caused the hang:
-
79GB of ML project files inside the vault. The
20-Projects/MajorTwindirectory contained model weights, training artifacts, and venvs that Obsidian tried to index on every launch. Specifically:06-Models— ~39GB of model weights09-Artifacts— ~38GB of training artifacts10-Training— ~1.8GB of training data11-Tools— Python venvs and llama.cpp builds (with broken symlinks on Windows)
-
Stale Electron app data. After Obsidian attempted to index the 79GB, it wrote corrupt state into its global app data (
%APPDATA%\obsidian). This persisted across vault config resets and caused the hang even after the large files were removed.
A secondary contributing factor was "open": true in obsidian.json, which forced Obsidian to resume the broken session on every launch.
Resolution Steps
1. Remove large non-note directories from the vault
Move-Item "C:\Users\majli\Documents\MajorVault\20-Projects\MajorTwin\06-Models" "D:\MajorTwin\06-Models"
Move-Item "C:\Users\majli\Documents\MajorVault\20-Projects\MajorTwin\09-Artifacts" "D:\MajorTwin\09-Artifacts"
Move-Item "C:\Users\majli\Documents\MajorVault\20-Projects\MajorTwin\10-Training" "D:\MajorTwin\10-Training"
Remove-Item -Recurse -Force "C:\Users\majli\Documents\MajorVault\20-Projects\MajorTwin\11-Tools\venv-unsloth"
Remove-Item -Recurse -Force "C:\Users\majli\Documents\MajorVault\20-Projects\MajorTwin\11-Tools\llama.cpp"
2. Reset the vault config
Rename-Item "C:\Users\majli\Documents\MajorVault\.obsidian" "C:\Users\majli\Documents\MajorVault\.obsidian.bak"
3. Fix the open flag in obsidian.json
'{"vaults":{"9147b890194dceb0":{"path":"C:\\Users\\majli\\Documents\\MajorVault","ts":1773207898521,"open":false}}}' | Set-Content "$env:APPDATA\obsidian\obsidian.json"
4. Wipe Obsidian global app data (the key fix)
Stop-Process -Name "Obsidian" -Force -ErrorAction SilentlyContinue
Rename-Item "$env:APPDATA\obsidian" "$env:APPDATA\obsidian.bak"
5. Launch Obsidian and reselect the vault
Obsidian will treat it as a fresh install. Select MajorVault — it should load cleanly.
6. Restore vault config and plugins
Copy-Item "$env:APPDATA\obsidian.bak\obsidian.json" "$env:APPDATA\obsidian\obsidian.json"
Copy-Item "C:\Users\majli\Documents\MajorVault\.obsidian.bak\*.json" "C:\Users\majli\Documents\MajorVault\.obsidian\"
Copy-Item "C:\Users\majli\Documents\MajorVault\.obsidian.bak\plugins.bak" "C:\Users\majli\Documents\MajorVault\.obsidian\plugins" -Recurse
7. Clean up backups
Remove-Item -Recurse -Force "$env:APPDATA\obsidian.bak"
Remove-Item -Recurse -Force "C:\Users\majli\Documents\MajorVault\.obsidian.bak"
Prevention
Add a .obsidianignore file to the vault root
20-Projects/MajorTwin/06-Models
20-Projects/MajorTwin/09-Artifacts
20-Projects/MajorTwin/10-Training
20-Projects/MajorTwin/11-Tools
Add exclusions in Obsidian settings
Settings → Files & Links → Excluded files → add 20-Projects/MajorTwin/11-Tools
Keep ML project files off the vault entirely
Model weights, venvs, training artifacts, and datasets do not belong in Obsidian. Store them on D drive or in WSL2. WSL2 (Fedora43) can access D drive at /mnt/d/MajorTwin/.
Key Diagnostic Commands
# Check vault size by top-level directory
Get-ChildItem "C:\Users\majli\Documents\MajorVault" -Directory | ForEach-Object {
$size = (Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
[PSCustomObject]@{ Name = $_.Name; SizeMB = [math]::Round($size/1MB, 1) }
} | Sort-Object SizeMB -Descending
# Check obsidian.json vault state
Get-Content "$env:APPDATA\obsidian\obsidian.json"
# Check Obsidian log
Get-Content "$env:APPDATA\obsidian\obsidian.log" -Tail 50
# Check if Obsidian is running/frozen
Get-Process -Name "Obsidian" | Select-Object CPU, WorkingSet, PagedMemorySize