mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
* Add support packet DB diagnostics for pool and pg_stat Co-authored-by: Ben Schumacher <[email protected]> * Fix support packet mock store for new DB diagnostics Co-authored-by: Ben Schumacher <[email protected]> * Add context timeouts to support packet pg diagnostics Co-authored-by: Ben Schumacher <[email protected]> * Move support packet DB diagnostics queries into sqlstore Co-authored-by: Ben Schumacher <[email protected]> * Fix support packet diagnostics lint and partial data handling Co-authored-by: Ben Schumacher <[email protected]> * Stabilize support packet pool idle assertion Co-authored-by: Ben Schumacher <[email protected]> * Relax live support packet DB counter assertions Co-authored-by: Ben Schumacher <[email protected]> * Fix deterministic pool diagnostics test wiring Co-authored-by: Ben Schumacher <[email protected]> * Mock support packet diagnostics in app test store Co-authored-by: Ben Schumacher <[email protected]> * Move SupportPacketDatabaseDiagnostics out of public model The struct is an internal store→platform transport (no yaml tags, never serialized directly) so it doesn't belong in server/public/model where it would form a public API contract for plugins. Move it into the store package as the natural return type of GetSupportPacketDatabaseDiagnostics. * Describe SupportPacketDatabaseDiagnostics by content, not history * wording * Align store diagnostics with sqlstore conventions - Rename Store.GetSupportPacketDatabaseDiagnostics to Store.GetDiagnostics and rename the holding files to diagnostics{,_test}.go. - Drop the queryRowScanner / rowScanner / sqlQueryRowScanner test seam. The collectors now use the sqlxDBWrapper master handle and bind result rows into local structs via sqlx GetContext, matching how the rest of the sqlstore package talks to Postgres. - Replace the hand-rolled mock-based unit tests for the Postgres collector with an integration test driven through StoreTest, the pattern used by the other sqlstore tests (e.g. schema_dump_test.go). The pure pool-stats unit test (TestApplyDBPoolStats) is kept. * Drop MasterDBStats/ReplicaDBStats from the Store interface After GetDiagnostics moved into the store layer, no caller outside the sqlstore package itself reads MasterDBStats/ReplicaDBStats through the Store interface — the diagnostics collector calls them on the concrete *SqlStore receiver. Remove them from the interface, the retry/timer layer wrappers, the storetest fake, and the generated mock; drop the now-redundant fixedDBStatsStore shim methods and mock setups in the support packet tests. * Rename SupportPacketDatabaseDiagnostics to DatabaseDiagnostics Now that the type lives in the store package and is returned by Store.GetDiagnostics, the SupportPacket prefix is just legacy framing — support packets are one consumer of the data, not its identity. Rename to store.DatabaseDiagnostics for consistency with the package and method name. * Inline diagnostics SQL into the collector functions Each pg_stat query has a single caller, so a package-level constant just adds indirection between the function and the SQL it owns. Move the query strings to local consts inside the collectors that use them. * Fix Connectios typo to Connections * Fix sqlstore diagnostics build: call GetMaster().DB() method The recent rebase brought in a change that turned the SqlStore DB field into a method, so passing ss.GetMaster().DB to collectPostgresDatabaseDiagnostics (which expects *sqlx.DB) no longer compiles. Call the method instead. * Fix gofmt alignment in SupportPacketDiagnostics The post-merge struct had extra spaces on MasterConnections / ReplicaConnections that broke gofmt alignment. --------- Co-authored-by: Ben Schumacher <[email protected]> Co-authored-by: Hanzo Dev <[email protected]>
35 lines
1.3 KiB
Go
35 lines
1.3 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package store
|
|
|
|
import "time"
|
|
|
|
// DatabaseDiagnostics is a snapshot of database health and pool state.
|
|
// Pointer fields are nil when the underlying metric is unavailable
|
|
// (non-Postgres driver, query failure, or no matching row).
|
|
type DatabaseDiagnostics struct {
|
|
MasterConnectionsInUse int
|
|
MasterConnectionsIdle int
|
|
MasterPoolWaitCount int64
|
|
MasterPoolWaitDurationMs int64
|
|
MasterConnectionsClosedMaxIdle int64
|
|
MasterConnectionsClosedMaxLifetime int64
|
|
ReplicaConnectionsInUse int
|
|
ReplicaConnectionsIdle int
|
|
ReplicaPoolWaitCount int64
|
|
ReplicaPoolWaitDurationMs int64
|
|
ReplicaConnectionsClosedMaxIdle int64
|
|
ReplicaConnectionsClosedMaxLifetime int64
|
|
CacheHitRatio *float64
|
|
Deadlocks *int64
|
|
TempFiles *int64
|
|
TempBytesMB *float64
|
|
Rollbacks *int64
|
|
IdleInTransactionCount *int64
|
|
LongestQueryDurationSeconds *float64
|
|
WaitingForLockCount *int64
|
|
PostsDeadTuples *int64
|
|
PostsLastAutovacuum *time.Time
|
|
}
|