From 3020c6e0ebefc4ee88b32cdeeeb6fa558694bf25 Mon Sep 17 00:00:00 2001 From: aneeshdua <39416684+aneeshdua@users.noreply.github.com> Date: Tue, 13 May 2025 19:49:47 +0530 Subject: [PATCH] added exception handling to writeNonTransaction --- .../dev/openfga/sdk/api/client/OpenFgaClient.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java b/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java index e4b52103..84352eb4 100644 --- a/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java +++ b/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java @@ -431,11 +431,18 @@ private CompletableFuture writeNonTransaction( for (int i = 1; i < transactions.size(); i++) { final int index = i; // Must be final in this scope for closure. - // The resulting completable future of this chain will result in either: - // 1. The first exception thrown in a failed completion. Other thenCompose() will not be evaluated. - // 2. The final successful ClientWriteResponse. futureResponse = futureResponse.thenCompose( - _response -> this.writeTransactions(storeId, transactions.get(index), options)); + _response -> this.writeTransactions(storeId, transactions.get(index), options) + .exceptionally(ex -> { + //handle exception + Map> headers = new HashMap<>(); + headers.put("Content-Type", List.of("application/json")); + headers.put("Retry-After", List.of("30")); // in seconds + headers.put("X-Debug-Info", List.of(ex.getMessage())); + ApiResponse errResponse = new ApiResponse<>(500,headers, "{\"code\":\"internal_error\",\"message\":\"Internal Server Error\"}", ex.getMessage()); + return new ClientWriteResponse(errResponse); + }) + ); } return futureResponse;