@@ -15,6 +15,7 @@ import (
15
15
"github.com/percona/percona-backup-mongodb/pbm/lock"
16
16
"github.com/percona/percona-backup-mongodb/pbm/log"
17
17
"github.com/percona/percona-backup-mongodb/pbm/topo"
18
+ "github.com/percona/percona-backup-mongodb/pbm/version"
18
19
)
19
20
20
21
type (
@@ -111,12 +112,14 @@ func FindCommandIDByName(ctx context.Context, c *Client, name string) (CommandID
111
112
}
112
113
113
114
type DiagnosticReport struct {
114
- ClusterTime primitive.Timestamp `json:"cluster_time" bson:"cluster_time"`
115
- Command * Command `json:"command" bson:"command"`
116
- Members []topo.Shard `json:"replsets" bson:"replsets"`
117
- Agents []AgentStatus `json:"agents" bson:"agents"`
118
- Locks []lock.LockData `json:"locks,omitempty" bson:"locks,omitempty"`
119
- OpLocks []lock.LockData `json:"op_locks,omitempty" bson:"op_locks,omitempty"`
115
+ ClusterTime primitive.Timestamp `json:"cluster_time" bson:"cluster_time"`
116
+ ServerVersion string `json:"server_version" bson:"server_version"`
117
+ FCV string `json:"fcv" bson:"fcv"`
118
+ Command * Command `json:"command" bson:"command"`
119
+ Members []topo.Shard `json:"replsets" bson:"replsets"`
120
+ Agents []AgentStatus `json:"agents" bson:"agents"`
121
+ Locks []lock.LockData `json:"locks,omitempty" bson:"locks,omitempty"`
122
+ OpLocks []lock.LockData `json:"op_locks,omitempty" bson:"op_locks,omitempty"`
120
123
}
121
124
122
125
func Diagnostic (ctx context.Context , c * Client , cid CommandID ) (* DiagnosticReport , error ) {
@@ -127,8 +130,19 @@ func Diagnostic(ctx context.Context, c *Client, cid CommandID) (*DiagnosticRepor
127
130
if err != nil {
128
131
return nil , errors .Wrap (err , "get cluster time" )
129
132
}
130
- rv .Command , err = c .CommandInfo (ctx , cid )
133
+ serVer , err := version .GetMongoVersion (ctx , c .conn .MongoClient ())
134
+ if err != nil {
135
+ return nil , errors .Wrap (err , "get server version" )
136
+ }
137
+ rv .ServerVersion = serVer .String ()
138
+
139
+ rv .FCV , err = version .GetFCV (ctx , c .conn .MongoClient ())
131
140
if err != nil {
141
+ return nil , errors .Wrap (err , "get fcv" )
142
+ }
143
+
144
+ rv .Command , err = c .CommandInfo (ctx , cid )
145
+ if err != nil && ! errors .Is (err , ErrNotFound ) {
132
146
return nil , errors .Wrap (err , "get command info" )
133
147
}
134
148
rv .Members , err = topo .ClusterMembers (ctx , c .conn .MongoClient ())
0 commit comments