mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Record the stream and consumer info timestamps (#4133)
This records the server time when info for streams and consumers are created so that tools such as the nats cli can calculate time deltas for last ack, last delivered and so forth in the context of the server clock. This will help aleviate problems with client devices experiencing clock jitter that can show up in user interfaces as negative seconds since last ack etc
This commit is contained in:
@@ -2971,12 +2971,13 @@ func (js *jetStream) processStreamLeaderChange(mset *stream, isLeader bool) {
|
||||
s.sendAPIErrResponse(client, acc, subject, reply, _EMPTY_, s.jsonResponse(&resp))
|
||||
} else {
|
||||
resp.StreamInfo = &StreamInfo{
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: mset.config(),
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: mset.config(),
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
TimeStamp: time.Now().UTC(),
|
||||
}
|
||||
resp.DidCreate = true
|
||||
s.sendAPIResponse(client, acc, subject, reply, _EMPTY_, s.jsonResponse(&resp))
|
||||
@@ -3378,12 +3379,13 @@ func (js *jetStream) processClusterUpdateStream(acc *Account, osa, sa *streamAss
|
||||
// Send our response.
|
||||
var resp = JSApiStreamUpdateResponse{ApiResponse: ApiResponse{Type: JSApiStreamUpdateResponseType}}
|
||||
resp.StreamInfo = &StreamInfo{
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: mset.config(),
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: mset.config(),
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
Sources: mset.sourcesInfo(),
|
||||
TimeStamp: time.Now().UTC(),
|
||||
}
|
||||
|
||||
s.sendAPIResponse(client, acc, subject, reply, _EMPTY_, s.jsonResponse(&resp))
|
||||
@@ -3437,12 +3439,13 @@ func (js *jetStream) processClusterCreateStream(acc *Account, sa *streamAssignme
|
||||
if !recovering {
|
||||
var resp = JSApiStreamCreateResponse{ApiResponse: ApiResponse{Type: JSApiStreamCreateResponseType}}
|
||||
resp.StreamInfo = &StreamInfo{
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: mset.config(),
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: mset.config(),
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
TimeStamp: time.Now().UTC(),
|
||||
}
|
||||
s.sendAPIResponse(client, acc, subject, reply, _EMPTY_, s.jsonResponse(&resp))
|
||||
}
|
||||
@@ -6318,7 +6321,12 @@ func (s *Server) jsClusteredStreamListRequest(acc *Account, ci *ClientInfo, filt
|
||||
for _, sa := range streams {
|
||||
if s.allPeersOffline(sa.Group) {
|
||||
// Place offline onto our results by hand here.
|
||||
si := &StreamInfo{Config: *sa.Config, Created: sa.Created, Cluster: js.offlineClusterInfo(sa.Group)}
|
||||
si := &StreamInfo{
|
||||
Config: *sa.Config,
|
||||
Created: sa.Created,
|
||||
Cluster: js.offlineClusterInfo(sa.Group),
|
||||
TimeStamp: time.Now().UTC(),
|
||||
}
|
||||
resp.Streams = append(resp.Streams, si)
|
||||
missingNames = append(missingNames, sa.Config.Name)
|
||||
} else {
|
||||
@@ -6464,7 +6472,12 @@ func (s *Server) jsClusteredConsumerListRequest(acc *Account, ci *ClientInfo, of
|
||||
for _, ca := range consumers {
|
||||
if s.allPeersOffline(ca.Group) {
|
||||
// Place offline onto our results by hand here.
|
||||
ci := &ConsumerInfo{Config: ca.Config, Created: ca.Created, Cluster: js.offlineClusterInfo(ca.Group)}
|
||||
ci := &ConsumerInfo{
|
||||
Config: ca.Config,
|
||||
Created: ca.Created,
|
||||
Cluster: js.offlineClusterInfo(ca.Group),
|
||||
TimeStamp: time.Now().UTC(),
|
||||
}
|
||||
resp.Consumers = append(resp.Consumers, ci)
|
||||
missingNames = append(missingNames, ca.Name)
|
||||
} else {
|
||||
@@ -8058,12 +8071,13 @@ func (mset *stream) processClusterStreamInfoRequest(reply string) {
|
||||
}
|
||||
|
||||
si := &StreamInfo{
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: config,
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
Created: mset.createdTime(),
|
||||
State: mset.state(),
|
||||
Config: config,
|
||||
Cluster: js.clusterInfo(mset.raftGroup()),
|
||||
Sources: mset.sourcesInfo(),
|
||||
Mirror: mset.mirrorInfo(),
|
||||
TimeStamp: time.Now().UTC(),
|
||||
}
|
||||
|
||||
// Check for out of band catchups.
|
||||
|
||||
Reference in New Issue
Block a user