diff --git a/sdk/opa.go b/sdk/opa.go index 0dc4b89a82..a1b6e49f1c 100644 --- a/sdk/opa.go +++ b/sdk/opa.go @@ -224,15 +224,15 @@ func (opa *OPA) Decision(ctx context.Context, options DecisionOptions) (*Decisio result, err := opa.executeTransaction( ctx, &record, - func(result *DecisionResult) { + func(s state, result *DecisionResult) { result.Result, record.InputAST, record.Bundles, record.Error = evaluate(ctx, evalArgs{ - runtime: opa.state.manager.Info, - printHook: opa.state.manager.PrintHook(), - compiler: opa.state.manager.GetCompiler(), - store: opa.state.manager.Store, + runtime: s.manager.Info, + printHook: s.manager.PrintHook(), + compiler: s.manager.GetCompiler(), + store: s.manager.Store, + queryCache: s.queryCache, + interQueryCache: s.interQueryBuiltinCache, txn: record.Txn, - queryCache: opa.state.queryCache, - interQueryCache: opa.state.interQueryBuiltinCache, now: record.Timestamp, path: record.Path, input: *record.Input, @@ -272,7 +272,7 @@ func newDecisionResult() (*DecisionResult, error) { return result, nil } -func (opa *OPA) executeTransaction(ctx context.Context, record *server.Info, work func(result *DecisionResult)) (*DecisionResult, error) { +func (opa *OPA) executeTransaction(ctx context.Context, record *server.Info, work func(state, *DecisionResult)) (*DecisionResult, error) { m := metrics.New() m.Timer(metrics.SDKDecisionEval).Start() @@ -300,7 +300,7 @@ func (opa *OPA) executeTransaction(ctx context.Context, record *server.Info, wor if record.Error == nil { defer s.manager.Store.Abort(ctx, record.Txn) - work(result) + work(s, result) } m.Timer(metrics.SDKDecisionEval).Stop() @@ -330,12 +330,12 @@ func (opa *OPA) Partial(ctx context.Context, options PartialOptions) (*PartialRe decision, err := opa.executeTransaction( ctx, &record, - func(result *DecisionResult) { + func(s state, result *DecisionResult) { pq, record.InputAST, record.Bundles, record.Error = partial(ctx, partialEvalArgs{ - runtime: opa.state.manager.Info, - printHook: opa.state.manager.PrintHook(), - compiler: opa.state.manager.GetCompiler(), - store: opa.state.manager.Store, + runtime: s.manager.Info, + printHook: s.manager.PrintHook(), + compiler: s.manager.GetCompiler(), + store: s.manager.Store, txn: record.Txn, now: record.Timestamp, query: record.Query,