From 28123a2efb7810e14f9acd6e3317a487a7c6f9a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 28 Nov 2023 02:10:33 -0500 Subject: [PATCH] incusd/auth/openfga: Use chunking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without chunking, we quickly hit the limit of 100 operation per transaction. Signed-off-by: Stéphane Graber --- internal/server/auth/driver_openfga.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/server/auth/driver_openfga.go b/internal/server/auth/driver_openfga.go index e28b1a966df..637705a8516 100644 --- a/internal/server/auth/driver_openfga.go +++ b/internal/server/auth/driver_openfga.go @@ -779,14 +779,27 @@ func (f *fga) updateTuples(ctx context.Context, writes []client.ClientTupleKey, ctx, cancel := context.WithTimeout(ctx, 5*time.Second) defer cancel() - opts := client.ClientWriteOptions{AuthorizationModelId: openfga.PtrString(f.authModelID)} + opts := client.ClientWriteOptions{ + AuthorizationModelId: openfga.PtrString(f.authModelID), + Transaction: &client.TransactionOptions{ + Disable: true, + MaxParallelRequests: 5, + MaxPerChunk: 50, + }, + } + body := client.ClientWriteRequest{} + if writes != nil { body.Writes = &writes + } else { + body.Writes = &[]client.ClientTupleKey{} } if deletions != nil { body.Deletes = &deletions + } else { + body.Deletes = &[]client.ClientTupleKey{} } clientWriteResponse, err := f.client.Write(ctx).Options(opts).Body(body).Execute()