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; } } }