fix: resolve disableAutoRebuild and fork() initialization issues
- Fix disableAutoRebuild being ignored when indexes are empty on startup - Add second check after needsRebuild to enable lazy loading properly - Auto-create initial commit in fork() if none exists, eliminating manual setup - Resolves Workshop team's 30-minute startup delays with large datasets (5.9M relationships) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
7a399085c3
commit
12839b5ac9
1 changed files with 24 additions and 3 deletions
|
|
@ -2159,7 +2159,20 @@ export class Brainy<T = any> implements BrainyInterface<T> {
|
||||||
const refManager = (this.storage as any).refManager
|
const refManager = (this.storage as any).refManager
|
||||||
const currentBranch = (this.storage as any).currentBranch || 'main'
|
const currentBranch = (this.storage as any).currentBranch || 'main'
|
||||||
|
|
||||||
// Step 1: Copy storage ref (COW layer - instant!)
|
// Step 1: Ensure initial commit exists (required for fork)
|
||||||
|
const currentRef = await refManager.getRef(currentBranch)
|
||||||
|
if (!currentRef) {
|
||||||
|
// Auto-create initial commit if none exists
|
||||||
|
await this.commit(`Initial commit on ${currentBranch}`, {
|
||||||
|
author: options?.author || 'Brainy',
|
||||||
|
timestamp: Date.now()
|
||||||
|
})
|
||||||
|
if (!this.config.silent) {
|
||||||
|
console.log(`📝 Auto-created initial commit on ${currentBranch} (required for fork)`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 2: Copy storage ref (COW layer - instant!)
|
||||||
await refManager.copyRef(currentBranch, branchName)
|
await refManager.copyRef(currentBranch, branchName)
|
||||||
|
|
||||||
// Step 2: Create new Brainy instance pointing to fork branch
|
// Step 2: Create new Brainy instance pointing to fork branch
|
||||||
|
|
@ -4348,14 +4361,22 @@ export class Brainy<T = any> implements BrainyInterface<T> {
|
||||||
const needsRebuild =
|
const needsRebuild =
|
||||||
metadataStats.totalEntries === 0 ||
|
metadataStats.totalEntries === 0 ||
|
||||||
hnswIndexSize === 0 ||
|
hnswIndexSize === 0 ||
|
||||||
graphIndexSize === 0 ||
|
graphIndexSize === 0
|
||||||
this.config.disableAutoRebuild === false // Explicitly enabled
|
|
||||||
|
|
||||||
if (!needsRebuild) {
|
if (!needsRebuild) {
|
||||||
// All indexes already populated, no rebuild needed
|
// All indexes already populated, no rebuild needed
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BUG FIX: If disableAutoRebuild === true, skip rebuild even if indexes are empty
|
||||||
|
// Indexes will load lazily on first query
|
||||||
|
if (this.config.disableAutoRebuild === true) {
|
||||||
|
if (!this.config.silent) {
|
||||||
|
console.log('⚡ Indexes empty but auto-rebuild disabled - using lazy loading')
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Small dataset: Rebuild all indexes for best performance
|
// Small dataset: Rebuild all indexes for best performance
|
||||||
if (totalCount < AUTO_REBUILD_THRESHOLD || this.config.disableAutoRebuild === false) {
|
if (totalCount < AUTO_REBUILD_THRESHOLD || this.config.disableAutoRebuild === false) {
|
||||||
if (!this.config.silent) {
|
if (!this.config.silent) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue