50 lines
1.8 KiB
JavaScript
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
|