diff --git a/csharp/src/Drivers/Apache/Hive2/HiveServer2Reader.cs b/csharp/src/Drivers/Apache/Hive2/HiveServer2Reader.cs
index 64d0a2f517..d13914f80c 100644
--- a/csharp/src/Drivers/Apache/Hive2/HiveServer2Reader.cs
+++ b/csharp/src/Drivers/Apache/Hive2/HiveServer2Reader.cs
@@ -429,13 +429,17 @@ protected override void Dispose(bool disposing)
/// The response for the operation.
/// The server response for the CloseOperation call.
///
- internal static async Task CloseOperationAsync(IHiveServer2Statement statement, IResponse response)
+ internal static async Task CloseOperationAsync(IHiveServer2Statement statement, IResponse response)
{
- CancellationToken cancellationToken = ApacheUtility.GetCancellationToken(statement.QueryTimeoutSeconds, ApacheUtility.TimeUnit.Seconds);
- TCloseOperationReq request = new TCloseOperationReq(response.OperationHandle!);
- TCloseOperationResp resp = await statement.Client.CloseOperation(request, cancellationToken);
- HiveServer2Connection.HandleThriftResponse(resp.Status, activity: null);
- return resp;
+ if (response.DirectResults?.CloseOperation?.Status?.StatusCode != TStatusCode.SUCCESS_STATUS)
+ {
+ CancellationToken cancellationToken = ApacheUtility.GetCancellationToken(statement.QueryTimeoutSeconds, ApacheUtility.TimeUnit.Seconds);
+ TCloseOperationReq request = new TCloseOperationReq(response.OperationHandle!);
+ TCloseOperationResp resp = await statement.Client.CloseOperation(request, cancellationToken);
+ HiveServer2Connection.HandleThriftResponse(resp.Status, activity: null);
+ return resp;
+ }
+ return null;
}
}
}