ObsiViewer/server/startup-phase3.mjs

50 lines
1.8 KiB
JavaScript

/**
* Phase 3 Startup Configuration
*
* Add these lines to server/index.mjs before app.listen():
*
* 1. Setup performance endpoint
* 2. Setup deferred Meilisearch indexing
* 3. Start server with monitoring
*/
// ============================================================================
// BEFORE app.listen() - Add these lines:
// ============================================================================
// Setup performance monitoring endpoint
setupPerformanceEndpoint(app, performanceMonitor, metadataCache, meilisearchCircuitBreaker);
// Setup deferred Meilisearch indexing (non-blocking)
const { scheduleIndexing } = await setupDeferredIndexing(vaultDir, fullReindex);
// Start server
const server = app.listen(PORT, '0.0.0.0', () => {
console.log(`🚀 ObsiViewer server running on http://0.0.0.0:${PORT}`);
console.log(`📁 Vault directory: ${vaultDir}`);
console.log(`📊 Performance monitoring: http://0.0.0.0:${PORT}/__perf`);
// Schedule background indexing (non-blocking)
scheduleIndexing();
console.log('✅ Server ready - Meilisearch indexing in background');
});
// Graceful shutdown
process.on('SIGINT', () => {
console.log('\n🛑 Shutting down server...');
server.close(() => {
console.log('✅ Server shutdown complete');
process.exit(0);
});
});
// ============================================================================
// NOTES:
// ============================================================================
// - The server starts immediately without waiting for Meilisearch indexing
// - Indexing happens in the background via setImmediate()
// - If indexing fails, it retries after 5 minutes
// - Performance metrics available at /__perf endpoint
// - Cache hit rate should reach > 80% after 5 minutes of usage
// - Circuit breaker protects against cascading failures