This is an automated email from the ASF dual-hosted git repository.
anoopsamjohn pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.4 by this push:
new a4a0a26 HBASE-26088 Fix thread leaks in
conn#getBufferedMutator(tableName) method call (#3506)
a4a0a26 is described below
commit a4a0a26d6d8c7f480667e101bcbd03f211f25278
Author: Rushabh Shah <[email protected]>
AuthorDate: Wed Jul 21 08:02:44 2021 -0400
HBASE-26088 Fix thread leaks in conn#getBufferedMutator(tableName) method
call (#3506)
Co-authored-by: Rushabh Shah
<[email protected]>
Signed-off-by: zhangduo <[email protected]>
Signed-off-by: Anoop <[email protected]>
Signed-off-by: stack <[email protected]>
Signed-off-by: Reid Chan <[email protected]>
---
.../main/java/org/apache/hadoop/hbase/client/Connection.java | 12 +++++++-----
.../apache/hadoop/hbase/client/ConnectionImplementation.java | 3 ---
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Connection.java
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Connection.java
index 90891f4..3ea13a4 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Connection.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Connection.java
@@ -109,16 +109,15 @@ public interface Connection extends Abortable, Closeable {
/**
* <p>
* Retrieve a {@link BufferedMutator} for performing client-side buffering
of writes. The
- * {@link BufferedMutator} returned by this method is thread-safe. This
BufferedMutator will
- * use the Connection's ExecutorService. This object can be used for long
lived operations.
+ * {@link BufferedMutator} returned by this method is thread-safe.
+ * This accessor will create a new ThreadPoolExecutor and will be shutdown
once we close the
+ * BufferedMutator. This object can be used for long lived operations.
* </p>
* <p>
* The caller is responsible for calling {@link BufferedMutator#close()} on
* the returned {@link BufferedMutator} instance.
* </p>
* <p>
- * This accessor will use the connection's ExecutorService and will throw an
- * exception in the main thread when an asynchronous exception occurs.
*
* @param tableName the name of the table
*
@@ -129,7 +128,10 @@ public interface Connection extends Abortable, Closeable {
/**
* Retrieve a {@link BufferedMutator} for performing client-side buffering
of writes. The
* {@link BufferedMutator} returned by this method is thread-safe. This
object can be used for
- * long lived table operations. The caller is responsible for calling
+ * long lived table operations. If user passes ThreadPool in
BufferedMutatorParams then we will
+ * use that otherwise we will create for the user. For user specified
ThreadPool, it is the user's
+ * responsibility to shutdown. For ThreadPool created by us, we will
shutdown when user calls
+ * {@link BufferedMutator#close()}. The caller is responsible for calling
* {@link BufferedMutator#close()} on the returned {@link BufferedMutator}
instance.
*
* @param params details on how to instantiate the {@code BufferedMutator}.
diff --git
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
index 990a249..9145c55 100644
---
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
+++
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
@@ -416,9 +416,6 @@ class ConnectionImplementation implements
ClusterConnection, Closeable {
if (params.getTableName() == null) {
throw new IllegalArgumentException("TableName cannot be null.");
}
- if (params.getPool() == null) {
- params.pool(HTable.getDefaultExecutor(getConfiguration()));
- }
if (params.getWriteBufferSize() == BufferedMutatorParams.UNSET) {
params.writeBufferSize(connectionConfig.getWriteBufferSize());
}