apache / apache/kyuubi

[FEATURE] Let clients receive feedback when KyuubiOperation is cancelled or closed failed

Open
#7,253 0 comments 0 reactions 0 assignees View on GitHub
kind:feature priority:major
Dominant language
Scala
Stars
2.4k
Forks
1k
PR merge metrics
No merged PRs in 30d

Description

### Code of Conduct

- [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)

### Search before asking

- [x] I have searched in the [issues](https://github.com/apache/kyuubi/issues?q=is%3Aissue) and found no similar issues.

### Describe the feature

When we close or cancel a `KyuubiStatement`, an RPC request is sent to the Kyuubi server.
The server handles the close/cancel on the related session, and will emit the result if the cancel or close operation fails on the engine.

```scala
def cancelOperation(operationHandle: TOperationHandle): Unit = {
val req = new TCancelOperationReq(operationHandle)
val resp = withLockAcquiredAsyncRequest(CancelOperation(req))
if (resp.getStatus.getStatusCode == TStatusCode.SUCCESS_STATUS) {
info(s"$req succeed on engine side")
} else {
warn(s"$req failed on engine side", KyuubiSQLException(resp.getStatus))
}
}

def closeOperation(operationHandle: TOperationHandle): Unit = {
val req = new TCloseOperationReq(operationHandle)
val resp = withLockAcquiredAsyncRequest(CloseOperation(req))
if (resp.getStatus.getStatusCode == TStatusCode.SUCCESS_STATUS) {
info(s"$req succeed on engine side")
} else {
warn(s"$req failed on engine side", KyuubiSQLException(resp.getStatus))
}
}
```

The client cannot know whether the close/cancel is success or failed.

### Motivation

_No response_

### Describe the solution

_No response_

### Additional context

_No response_

### Are you willing to submit PR?

- [ ] Yes. I would be willing to submit a PR with guidance from the Kyuubi community to improve.
- [ ] No. I cannot submit a PR at this time.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.