Don't initialise a new Authorizer each query
parent
aa99a56bf1
commit
c098081c7d
|
@ -68,7 +68,7 @@ func ErrMaxConcurrentQueriesLimitExceeded(n, limit int) error {
|
||||||
return fmt.Errorf("max-concurrent-queries limit exceeded(%d, %d)", n, limit)
|
return fmt.Errorf("max-concurrent-queries limit exceeded(%d, %d)", n, limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Authorizer reports whether certain operations are authorized.
|
// Authorizer determines if certain operations are authorized.
|
||||||
type Authorizer interface {
|
type Authorizer interface {
|
||||||
// AuthorizeDatabase indicates whether the given Privilege is authorized on the database with the given name.
|
// AuthorizeDatabase indicates whether the given Privilege is authorized on the database with the given name.
|
||||||
AuthorizeDatabase(p influxql.Privilege, name string) bool
|
AuthorizeDatabase(p influxql.Privilege, name string) bool
|
||||||
|
@ -85,22 +85,26 @@ type Authorizer interface {
|
||||||
|
|
||||||
// OpenAuthorizer is the Authorizer used when authorization is disabled.
|
// OpenAuthorizer is the Authorizer used when authorization is disabled.
|
||||||
// It allows all operations.
|
// It allows all operations.
|
||||||
type OpenAuthorizer struct{}
|
type openAuthorizer struct{}
|
||||||
|
|
||||||
var _ Authorizer = OpenAuthorizer{}
|
// OpenAuthorizer can be shared by all goroutines.
|
||||||
|
var OpenAuthorizer = openAuthorizer{}
|
||||||
|
|
||||||
// AuthorizeDatabase returns true to allow any operation on a database.
|
// AuthorizeDatabase returns true to allow any operation on a database.
|
||||||
func (_ OpenAuthorizer) AuthorizeDatabase(influxql.Privilege, string) bool { return true }
|
func (a openAuthorizer) AuthorizeDatabase(influxql.Privilege, string) bool { return true }
|
||||||
|
|
||||||
func (_ OpenAuthorizer) AuthorizeSeriesRead(database string, measurement []byte, tags models.Tags) bool {
|
// AuthorizeSeriesRead allows accesss to any series.
|
||||||
|
func (a openAuthorizer) AuthorizeSeriesRead(database string, measurement []byte, tags models.Tags) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (_ OpenAuthorizer) AuthorizeSeriesWrite(database string, measurement []byte, tags models.Tags) bool {
|
// AuthorizeSeriesWrite allows accesss to any series.
|
||||||
|
func (a openAuthorizer) AuthorizeSeriesWrite(database string, measurement []byte, tags models.Tags) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (_ OpenAuthorizer) AuthorizeQuery(_ string, _ *influxql.Query) error { return nil }
|
// AuthorizeSeriesRead allows any query to execute.
|
||||||
|
func (a openAuthorizer) AuthorizeQuery(_ string, _ *influxql.Query) error { return nil }
|
||||||
|
|
||||||
// ExecutionOptions contains the options for executing a query.
|
// ExecutionOptions contains the options for executing a query.
|
||||||
type ExecutionOptions struct {
|
type ExecutionOptions struct {
|
||||||
|
|
|
@ -418,7 +418,7 @@ func (h *Handler) serveQuery(w http.ResponseWriter, r *http.Request, user meta.U
|
||||||
opts.Authorizer = user
|
opts.Authorizer = user
|
||||||
} else {
|
} else {
|
||||||
// Auth is disabled, so allow everything.
|
// Auth is disabled, so allow everything.
|
||||||
opts.Authorizer = query.OpenAuthorizer{}
|
opts.Authorizer = query.OpenAuthorizer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure if the client disconnects we signal the query to abort
|
// Make sure if the client disconnects we signal the query to abort
|
||||||
|
@ -960,7 +960,7 @@ func (h *Handler) servePromRead(w http.ResponseWriter, r *http.Request, user met
|
||||||
opts.Authorizer = user
|
opts.Authorizer = user
|
||||||
} else {
|
} else {
|
||||||
// Auth is disabled, so allow everything.
|
// Auth is disabled, so allow everything.
|
||||||
opts.Authorizer = query.OpenAuthorizer{}
|
opts.Authorizer = query.OpenAuthorizer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure if the client disconnects we signal the query to abort
|
// Make sure if the client disconnects we signal the query to abort
|
||||||
|
|
|
@ -55,7 +55,7 @@ type indexSeriesCursor struct {
|
||||||
func newIndexSeriesCursor(ctx context.Context, req *ReadRequest, shards []*tsdb.Shard) (*indexSeriesCursor, error) {
|
func newIndexSeriesCursor(ctx context.Context, req *ReadRequest, shards []*tsdb.Shard) (*indexSeriesCursor, error) {
|
||||||
opt := query.IteratorOptions{
|
opt := query.IteratorOptions{
|
||||||
Aux: []influxql.VarRef{{Val: "key"}},
|
Aux: []influxql.VarRef{{Val: "key"}},
|
||||||
Authorizer: query.OpenAuthorizer{},
|
Authorizer: query.OpenAuthorizer,
|
||||||
Ordered: true,
|
Ordered: true,
|
||||||
}
|
}
|
||||||
p := &indexSeriesCursor{row: seriesRow{shards: shards}}
|
p := &indexSeriesCursor{row: seriesRow{shards: shards}}
|
||||||
|
|
Loading…
Reference in New Issue