diff --git a/worker/groups.go b/worker/groups.go
index 72ee037028373968ccb99cddd21f35fd5ae3cc85..be3b85b302d10bb7e75db88bc88fcc81a1890fc4 100644
--- a/worker/groups.go
+++ b/worker/groups.go
@@ -671,7 +671,7 @@ func (g *groupi) proposeDelta(oracleDelta *intern.OracleDelta) {
 	}
 
 	repeat := func(tctx *api.TxnContext) {
-		for i := 0; i < 3; i++ { // Try 3 times, then give up.
+		for i := 0; i < 1; i++ {
 			// TODO: This needs to be looked at carefully to figure out why does this fail.
 			err := g.Node.proposeAndWait(context.Background(), &intern.Proposal{TxnContext: tctx})
 			if err == nil {
diff --git a/worker/mutation.go b/worker/mutation.go
index f0c3793557bed82f531b70d21fee937472cff0b4..d084976a11f806602d4a2d6ecf46af24105d6aec 100644
--- a/worker/mutation.go
+++ b/worker/mutation.go
@@ -40,6 +40,9 @@ func deletePredicateEdge(edge *intern.DirectedEdge) bool {
 
 // runMutation goes through all the edges and applies them.
 func runMutation(ctx context.Context, edge *intern.DirectedEdge, txn *posting.Txn) error {
+	if ctx.Err() != nil {
+		return ctx.Err()
+	}
 	if tr, ok := trace.FromContext(ctx); ok {
 		tr.LazyPrintf("%s", "In run mutations")
 	}