You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: comprehensive bug fixes across all services (#233)
* fix: comprehensive bug fixes across all services
Critical fixes:
- brainzgraphinator: fix wrong keys for mbid, mb_type, begin_date/end_date (always null/wrong)
- brainztableinator: fix begin_date/end_date reading from wrong location
- insights: fix infinite loop in cache invalidate_all (string/int cursor comparison)
- insights: include metric param in top-artists cache key to prevent wrong cached responses
- api: fix KeyError on missing 'total' column in queue history endpoint
- extractor: gate state marker completion behind success check (prevent silent data loss)
- extractor: use DataType::discogs() instead of DataType::all() to avoid publishing to non-existent exchange
- docker-compose.prod: add missing production secret overrides for 3 MusicBrainz services
- scripts: fix SQL/command injection in reset-password.sh
- dashboard: fix PostgreSQL connection leak in get_database_info (called every 2s)
- schema-init: set autocommit for DDL to prevent cascading InFailedSqlTransaction
Important fixes:
- explore: fix _doExplore -> _loadExplore (credits profile broken)
- explore: fix window.graphController -> window.exploreApp (NLQ entity links broken)
- explore: fix SSE stream eventType not persisting across chunks, flush buffer on done
- api/sync: release Redis lock after task creation, add password-change token check
- common: fix active_connections counter growing monotonically in PostgreSQL pool
- common: lazy-init asyncio.Lock in CircuitBreaker (RuntimeError on Python 3.12+)
- common: fix CircuitBreaker HALF_OPEN race condition
- graphinator: fix DETACH DELETE count always returning 0, use summary.counters
- graphinator: use MERGE instead of MATCH for Master node in process_release
- graphinator: add None guard before graph.close()
- brainz services: reset active_connection/active_channel to None after recovery failure
- dashboard: handle JSONDecodeError in admin proxy handlers (return 400 not 500)
- dashboard: consume Neo4j result before issuing second query on same session
- docker-compose.prod: remove unnecessary Neo4j credentials from explore service
- mcp-server: add error handling for API failures in all tool handlers
- insights: wrap _log_computation in error handlers to prevent exception masking
- tableinator: parse started_at as datetime with UTC timezone for purge_stale_rows
- utilities: fix connection leak in debug_message.py
- utilities: replace hardcoded Neo4j password in system_monitor.py
- tests: fix test names, mock cursor types, and assertions to match bug fixes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: fix JS test and add coverage for new bug fix code
- Fix credits.test.js: update mock from _doExplore to _loadExplore and
fix assertion order to match the corrected credits.js code
- Add CircuitBreaker tests: lazy asyncio.Lock init, HALF_OPEN race fix
for both sync and async paths
- Add insights computation tests: verify original exception propagates
when _log_computation also fails
- Add MCP server tests: HTTP error and network error return error dicts
- Add admin proxy tests: malformed JSON body returns 400 for all proxy
endpoints
- Add sync password_changed test: token issued before password change
returns 401
- Add tableinator purge test: naive datetime (no timezone) gets UTC
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: cover remaining uncovered lines from bug fixes
- insights/computations.py: add tests for label_longevity, anniversaries,
data_completeness, and rarity exception masking prevention
- common/db_resilience.py: add tests for lazy lock init in
_on_success_async and _on_failure_async
- explore/app.js: add test for NLQ entity click calling _switchPane
and _loadExplore on exploreApp
- explore/api-client.js: add tests for SSE buffer flush on stream
completion and eventType persisting across chunk boundaries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0 commit comments