feat: set X-Influxdb-Version and X-Influxdb-Build headers (#22535)
Closes #20224 Also a forward port of #22038 since I saw the same test failing on 2.xpull/22554/head
parent
233f277c07
commit
7dfd7de81f
|
@ -6,6 +6,7 @@ import (
|
|||
"net/http"
|
||||
|
||||
"github.com/go-chi/chi"
|
||||
"github.com/influxdata/influxdb/v2"
|
||||
"github.com/influxdata/influxdb/v2/kit/platform/errors"
|
||||
"github.com/influxdata/influxdb/v2/kit/prom"
|
||||
kithttp "github.com/influxdata/influxdb/v2/kit/transport/http"
|
||||
|
@ -90,6 +91,19 @@ func WithMetrics(reg *prom.Registry, exposed bool) HandlerOptFn {
|
|||
}
|
||||
}
|
||||
|
||||
type AddHeader struct {
|
||||
WriteHeader func(header http.Header)
|
||||
}
|
||||
|
||||
// Middleware is a middleware that mutates the header of all responses
|
||||
func (h *AddHeader) Middleware(next http.Handler) http.Handler {
|
||||
fn := func(w http.ResponseWriter, r *http.Request) {
|
||||
h.WriteHeader(w.Header())
|
||||
next.ServeHTTP(w, r)
|
||||
}
|
||||
return http.HandlerFunc(fn)
|
||||
}
|
||||
|
||||
// NewRootHandler creates a new handler with the given name and registers any root-level
|
||||
// (non-API) routes enabled by the caller.
|
||||
func NewRootHandler(name string, opts ...HandlerOptFn) *Handler {
|
||||
|
@ -112,6 +126,13 @@ func NewRootHandler(name string, opts ...HandlerOptFn) *Handler {
|
|||
h.initMetrics()
|
||||
|
||||
r := chi.NewRouter()
|
||||
buildHeader := &AddHeader{
|
||||
WriteHeader: func(header http.Header) {
|
||||
header.Add("X-Influxdb-Build", "OSS")
|
||||
header.Add("X-Influxdb-Version", influxdb.GetBuildInfo().Version)
|
||||
},
|
||||
}
|
||||
r.Use(buildHeader.Middleware)
|
||||
// only gather metrics for system handlers
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(
|
||||
|
|
|
@ -528,10 +528,14 @@ func (idx Index) Open() error {
|
|||
// Close closes and removes the index directory.
|
||||
func (idx *Index) Close() error {
|
||||
defer os.RemoveAll(idx.Path())
|
||||
// Series file is opened first and must be closed last
|
||||
if err := idx.Index.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := idx.SeriesFile.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
return idx.Index.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Reopen closes and opens the index.
|
||||
|
|
Loading…
Reference in New Issue