mirror of https://github.com/status-im/consul.git
streaming: support X-Cache-Hit header
If a value was already available in the local view the request is considered a cache hit. If the materialized had to wait for a value, it is considered a cache miss.
This commit is contained in:
parent
c78391797d
commit
bc4d349ccf
|
@ -42,7 +42,8 @@ func (c *Client) ServiceNodes(
|
|||
if err != nil {
|
||||
return structs.IndexedCheckServiceNodes{}, cache.ResultMeta{}, err
|
||||
}
|
||||
return *result.Value.(*structs.IndexedCheckServiceNodes), cache.ResultMeta{Index: result.Index}, err
|
||||
meta := cache.ResultMeta{Index: result.Index, Hit: result.Cached}
|
||||
return *result.Value.(*structs.IndexedCheckServiceNodes), meta, err
|
||||
}
|
||||
|
||||
out, md, err := c.getServiceNodes(ctx, req)
|
||||
|
|
|
@ -215,9 +215,13 @@ func (m *Materializer) notifyUpdateLocked(err error) {
|
|||
m.updateCh = make(chan struct{})
|
||||
}
|
||||
|
||||
// Result returned from the View.
|
||||
type Result struct {
|
||||
Index uint64
|
||||
Value interface{}
|
||||
// Cached is true if the requested value was already available locally. If
|
||||
// the value is false, it indicates that getFromView had to wait for an update,
|
||||
Cached bool
|
||||
}
|
||||
|
||||
// getFromView blocks until the index of the View is greater than opts.MinIndex,
|
||||
|
@ -237,6 +241,7 @@ func (m *Materializer) getFromView(ctx context.Context, minIndex uint64) (Result
|
|||
// haven't loaded a snapshot at all yet which means we should wait for one on
|
||||
// the update chan.
|
||||
if result.Index > 0 && result.Index > minIndex {
|
||||
result.Cached = true
|
||||
return result, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ func (s *Store) Notify(
|
|||
u := cache.UpdateEvent{
|
||||
CorrelationID: correlationID,
|
||||
Result: result.Value,
|
||||
Meta: cache.ResultMeta{Index: result.Index},
|
||||
Meta: cache.ResultMeta{Index: result.Index, Hit: result.Cached},
|
||||
}
|
||||
select {
|
||||
case updateCh <- u:
|
||||
|
|
Loading…
Reference in New Issue