mirror of
https://github.com/mattermost/mattermost.git
synced 2026-10-29 17:33:26 +08:00
Every test binary that uses TestPool builds 16 stores in parallel, each running the full migration set. Without DisableMorphLogging() the morph debug stream from each store flows through to the test logger (which is configured at LvlTrace), producing tens of thousands of "migrating (up)" lines per shard — amplified further on shards that re-run flaky tests, since every re-run spawns a fresh TestMain and a fresh pool. Migration failures are still surfaced: engine.ApplyAll returns the error, sqlstore.New wraps it as "failed to apply database migrations", and both NewTestPool callers panic on a non-nil result. Co-authored-by: Mattermost Build <build@mattermost.com>
Server Channels Review Guidelines
When reviewing or writing code in the server channels package, focus on SQL query performance and API layer efficiency.
SQL Store Layer
- Run
EXPLAIN ANALYZEon new or modified queries against a large dataset before merging. A query that performs well on a 12M-post database may degrade significantly at 100M+ posts. - Watch for sequential scans on large tables. Ensure appropriate indexes exist for new query patterns.
- When adding new queries to the store, check whether an existing query already fetches the needed data. Avoid duplicate round trips to the database.
API Layer
- Minimize database round trips. If an endpoint calls a
Getfollowed by aDeleteon the same row, consider usingDELETE ... RETURNINGto combine them into a single query. - Don't add queries that are unnecessary for the operation. The most efficient work is the work you don't do.
- When adding new API endpoints, add them to the load test tooling so performance can be validated under realistic concurrency.
Permissions and Security
- Verify that new endpoints enforce appropriate permissions. Rely on the dedicated security review for thorough coverage, but flag anything obviously missing (e.g., an endpoint that skips permission checks entirely).