- Fixed 4 broken markdown links (bad relative paths in See Also sections) - Corrected n8n port binding to 127.0.0.1:5678 (matches actual deployment) - Updated SnapRAID article with actual majorhome paths (/majorRAID, disk1-3) - Converted 67 Obsidian wikilinks to relative markdown links or plain text - Added YAML frontmatter to 35 articles missing it entirely - Completed frontmatter on 8 articles with missing fields Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
117 lines
4.5 KiB
Markdown
117 lines
4.5 KiB
Markdown
---
|
|
title: "Obsidian Vault Recovery — Loading Cache Hang"
|
|
domain: troubleshooting
|
|
category: general
|
|
tags: [obsidian, troubleshooting, windows, majortwin]
|
|
status: published
|
|
created: 2026-03-11
|
|
updated: 2026-04-02
|
|
---
|
|
# 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:
|
|
|
|
1. **79GB of ML project files inside the vault.** The `20-Projects/MajorTwin` directory contained model weights, training artifacts, and venvs that Obsidian tried to index on every launch. Specifically:
|
|
- `06-Models` — ~39GB of model weights
|
|
- `09-Artifacts` — ~38GB of training artifacts
|
|
- `10-Training` — ~1.8GB of training data
|
|
- `11-Tools` — Python venvs and llama.cpp builds (with broken symlinks on Windows)
|
|
|
|
2. **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
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
Rename-Item "C:\Users\majli\Documents\MajorVault\.obsidian" "C:\Users\majli\Documents\MajorVault\.obsidian.bak"
|
|
```
|
|
|
|
### 3. Fix the open flag in obsidian.json
|
|
|
|
```powershell
|
|
'{"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)
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
# 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
|
|
```
|