mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-12 19:32:48 -06:00
server: Remove an unnecessary AST-to-JSON conversion for the eval input.
The cost of this can become non-trivial with larger inputs. Signed-off-by: Teemu Koponen <koponen@styra.com>
This commit is contained in:
committed by
Ashutosh Narkar
parent
9a13941ab9
commit
27d6829d4c
+3
-12
@@ -884,7 +884,7 @@ func (s *Server) instrumentHandler(handler func(http.ResponseWriter, *http.Reque
|
||||
return httpHandler
|
||||
}
|
||||
|
||||
func (s *Server) execQuery(ctx context.Context, br bundleRevisions, txn storage.Transaction, parsedQuery ast.Body, input ast.Value, m metrics.Metrics, explainMode types.ExplainModeV1, includeMetrics, includeInstrumentation, pretty bool) (*types.QueryResponseV1, error) {
|
||||
func (s *Server) execQuery(ctx context.Context, br bundleRevisions, txn storage.Transaction, parsedQuery ast.Body, input ast.Value, rawInput *interface{}, m metrics.Metrics, explainMode types.ExplainModeV1, includeMetrics, includeInstrumentation, pretty bool) (*types.QueryResponseV1, error) {
|
||||
results := types.QueryResponseV1{}
|
||||
logger := s.getDecisionLogger(br)
|
||||
|
||||
@@ -893,15 +893,6 @@ func (s *Server) execQuery(ctx context.Context, br bundleRevisions, txn storage.
|
||||
buf = topdown.NewBufferTracer()
|
||||
}
|
||||
|
||||
var rawInput *interface{}
|
||||
if input != nil {
|
||||
x, err := ast.JSON(input)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rawInput = &x
|
||||
}
|
||||
|
||||
var ndbCache builtins.NDBCache
|
||||
if s.ndbCacheEnabled {
|
||||
ndbCache = builtins.NDBCache{}
|
||||
@@ -2277,7 +2268,7 @@ func (s *Server) v1QueryGet(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
pretty := pretty(r)
|
||||
results, err := s.execQuery(ctx, br, txn, parsedQuery, nil, m, explainMode, includeMetrics(r), includeInstrumentation, pretty)
|
||||
results, err := s.execQuery(ctx, br, txn, parsedQuery, nil, nil, m, explainMode, includeMetrics(r), includeInstrumentation, pretty)
|
||||
if err != nil {
|
||||
switch err := err.(type) {
|
||||
case ast.Errors:
|
||||
@@ -2347,7 +2338,7 @@ func (s *Server) v1QueryPost(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
results, err := s.execQuery(ctx, br, txn, parsedQuery, input, m, explainMode, includeMetrics, includeInstrumentation, pretty)
|
||||
results, err := s.execQuery(ctx, br, txn, parsedQuery, input, request.Input, m, explainMode, includeMetrics, includeInstrumentation, pretty)
|
||||
if err != nil {
|
||||
switch err := err.(type) {
|
||||
case ast.Errors:
|
||||
|
||||
Reference in New Issue
Block a user