mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-13 15:28:38 +00:00
This commit implements a comprehensive refactoring of the update system to address race conditions, redundant polling, and rate limiting issues. Backend changes: - Add job queue system to ensure only ONE update runs at a time - Implement Server-Sent Events (SSE) for real-time update progress - Add rate limiting to /api/updates/status (5-second minimum per client) - Create SSE broadcaster for push-based status updates - Integrate job queue with update manager for atomic operations - Add comprehensive unit tests for queue and SSE components Frontend changes: - Update UpdateProgressModal to use SSE as primary mechanism - Implement automatic fallback to polling when SSE unavailable - Maintain backward compatibility with existing update flow - Clean up SSE connections on component unmount API changes: - Add new endpoint: GET /api/updates/stream (SSE) - Enhance /api/updates/status with client-based rate limiting - Return cached status with appropriate headers when rate limited Benefits: - Eliminates 429 rate limit errors during updates - Only one update job can run at a time (prevents race conditions) - Real-time updates via SSE reduce unnecessary polling - Graceful degradation to polling when SSE unavailable - Better resource utilization and reduced server load Testing: - All existing tests pass - New unit tests for queue and SSE functionality - Integration tests verify complete update flow |
||
|---|---|---|
| .. | ||
| adapter_installsh.go | ||
| history.go | ||
| manager.go | ||
| manager_test.go | ||
| queue.go | ||
| queue_test.go | ||
| sse.go | ||
| sse_test.go | ||
| updater.go | ||
| version.go | ||
| version_test.go | ||