Skip to content

Commit a79d379

Browse files
authored
Fix(GraphQL): Fix Execution Trace for Add and Update Mutations (#7656) (#7658)
* Remove unused function * Add tracing for existence query execution * Fix tests (cherry picked from commit ba8f5da)
1 parent 0f0eab8 commit a79d379

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

graphql/resolve/extensions_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ func TestMutationsPropagateExtensions(t *testing.T) {
163163
require.True(t, resp.Extensions.Tracing.Execution.Resolvers[0].StartOffset > 0)
164164
require.True(t, resp.Extensions.Tracing.Execution.Resolvers[0].Duration > 0)
165165

166-
require.Len(t, resp.Extensions.Tracing.Execution.Resolvers[0].Dgraph, 2)
167-
labels := []string{"mutation", "query"}
166+
require.Len(t, resp.Extensions.Tracing.Execution.Resolvers[0].Dgraph, 3)
167+
labels := []string{"preMutationQuery", "mutation", "query"}
168168
for i, dgraphTrace := range resp.Extensions.Tracing.Execution.Resolvers[0].Dgraph {
169169
require.Equal(t, dgraphTrace.Label, labels[i])
170170
require.True(t, dgraphTrace.StartOffset > 0)
@@ -221,8 +221,8 @@ func TestMultipleMutationsPropagateExtensionsCorrectly(t *testing.T) {
221221
require.True(t, resolver.StartOffset > 0)
222222
require.True(t, resolver.Duration > 0)
223223

224-
require.Len(t, resolver.Dgraph, 2)
225-
labels := []string{"mutation", "query"}
224+
require.Len(t, resolver.Dgraph, 3)
225+
labels := []string{"preMutationQuery", "mutation", "query"}
226226
for j, dgraphTrace := range resolver.Dgraph {
227227
require.Equal(t, dgraphTrace.Label, labels[j])
228228
require.True(t, dgraphTrace.StartOffset > 0)

graphql/resolve/mutation.go

+15-8
Original file line numberDiff line numberDiff line change
@@ -229,16 +229,18 @@ func (mr *dgraphResolver) rewriteAndExecute(
229229
}
230230
}()
231231

232+
dgraphPreMutationQueryDuration := &schema.LabeledOffsetDuration{Label: "preMutationQuery"}
232233
dgraphMutationDuration := &schema.LabeledOffsetDuration{Label: "mutation"}
233-
dgraphQueryDuration := &schema.LabeledOffsetDuration{Label: "query"}
234+
dgraphPostMutationQueryDuration := &schema.LabeledOffsetDuration{Label: "query"}
234235
ext := &schema.Extensions{
235236
Tracing: &schema.Trace{
236237
Execution: &schema.ExecutionTrace{
237238
Resolvers: []*schema.ResolverTrace{
238239
{
239240
Dgraph: []*schema.LabeledOffsetDuration{
241+
dgraphPreMutationQueryDuration,
240242
dgraphMutationDuration,
241-
dgraphQueryDuration,
243+
dgraphPostMutationQueryDuration,
242244
},
243245
},
244246
},
@@ -275,12 +277,17 @@ func (mr *dgraphResolver) rewriteAndExecute(
275277
// Don't execute the query in those cases.
276278
// The query will also be empty in case this is not an Add or an Update Mutation.
277279
if req.Query != "" {
280+
// Executing and processing existence queries
281+
queryTimer := newtimer(ctx, &dgraphPreMutationQueryDuration.OffsetDuration)
282+
queryTimer.Start()
278283
mutResp, err = mr.executor.Execute(ctx, req)
279-
}
280-
if err != nil {
281-
gqlErr := schema.GQLWrapLocationf(
282-
err, mutation.Location(), "mutation %s failed", mutation.Name())
283-
return emptyResult(gqlErr), resolverFailed
284+
queryTimer.Stop()
285+
if err != nil {
286+
gqlErr := schema.GQLWrapLocationf(
287+
err, mutation.Location(), "mutation %s failed", mutation.Name())
288+
return emptyResult(gqlErr), resolverFailed
289+
}
290+
ext.TouchedUids += mutResp.GetMetrics().GetNumUids()[touchedUidsKey]
284291
}
285292

286293
// Parse the result of query.
@@ -405,7 +412,7 @@ func (mr *dgraphResolver) rewriteAndExecute(
405412
}
406413
commit = true
407414

408-
queryTimer := newtimer(ctx, &dgraphQueryDuration.OffsetDuration)
415+
queryTimer := newtimer(ctx, &dgraphPostMutationQueryDuration.OffsetDuration)
409416
queryTimer.Start()
410417
qryResp, err := mr.executor.Execute(ctx, &dgoapi.Request{Query: dgraph.AsString(dgQuery),
411418
ReadOnly: true})

0 commit comments

Comments
 (0)