You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by zi...@apache.org on 2024/07/11 08:08:09 UTC
(pulsar-client-go) branch master updated: [improve] return `ErrMaxConcurrentOpsReached` when too many concurrent ops in transaction coordinator client (#1242)
This is an automated email from the ASF dual-hosted git repository.
zike pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git
The following commit(s) were added to refs/heads/master by this push:
new e7a771fe [improve] return `ErrMaxConcurrentOpsReached` when too many concurrent ops in transaction coordinator client (#1242)
e7a771fe is described below
commit e7a771fe8bab8b2790620848e18feabcde1056e7
Author: Zike Yang <zi...@apache.org>
AuthorDate: Thu Jul 11 16:08:05 2024 +0800
[improve] return `ErrMaxConcurrentOpsReached` when too many concurrent ops in transaction coordinator client (#1242)
### Motivation
Currently, the client will return an UnknownError when there are too many concurrent ops in transaction coordinator client
### Modifications
- Add new error `ErrMaxConcurrentOpsReached`
- Return `ErrMaxConcurrentOpsReached` when too many concurrent ops in transaction coordinator client
---
pulsar/error.go | 4 ++++
pulsar/transaction_coordinator_client.go | 3 ++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/pulsar/error.go b/pulsar/error.go
index ccadb724..1a9345b0 100644
--- a/pulsar/error.go
+++ b/pulsar/error.go
@@ -121,6 +121,10 @@ const (
// fenced. Applications are now supposed to close it and create a
// new producer
ProducerFenced
+ // MaxConcurrentOperationsReached indicates that the maximum number of concurrent operations
+ // has been reached. This means that no additional operations can be started until some
+ // of the current operations complete.
+ MaxConcurrentOperationsReached
// TransactionCoordinatorNotEnabled indicates that the transaction coordinator is not enabled.
// This error is returned when an operation that requires the transaction coordinator is attempted
// but the transaction coordinator feature is not enabled in the system or the transaction coordinator
diff --git a/pulsar/transaction_coordinator_client.go b/pulsar/transaction_coordinator_client.go
index d402d7ec..c4b7a6a2 100644
--- a/pulsar/transaction_coordinator_client.go
+++ b/pulsar/transaction_coordinator_client.go
@@ -41,6 +41,7 @@ type transactionCoordinatorClient struct {
// where the TC located.
const TransactionCoordinatorAssign = "persistent://pulsar/system/transaction_coordinator_assign"
+var ErrMaxConcurrentOpsReached = newError(MaxConcurrentOperationsReached, "Max concurrent operations reached")
var ErrTransactionCoordinatorNotEnabled = newError(TransactionCoordinatorNotEnabled, "The broker doesn't enable "+
"the transaction coordinator, or the transaction coordinator has not initialized")
@@ -212,7 +213,7 @@ func getTCAssignTopicName(partition uint64) string {
func (tc *transactionCoordinatorClient) canSendRequest() error {
if !tc.semaphore.Acquire(context.Background()) {
- return newError(UnknownError, "Failed to acquire semaphore")
+ return ErrMaxConcurrentOpsReached
}
return nil
}