You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ya...@apache.org on 2020/10/30 17:17:37 UTC
[phoenix] branch master updated: PHOENIX-6002 : Resolve connection
leak through QueryUtil.getConnectionOnServer()
This is an automated email from the ASF dual-hosted git repository.
yanxinyi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/master by this push:
new bbe2aec PHOENIX-6002 : Resolve connection leak through QueryUtil.getConnectionOnServer()
bbe2aec is described below
commit bbe2aecdd41c807abe31423d4dcd16da6c8f76de
Author: Viraj Jasani <vj...@apache.org>
AuthorDate: Thu Oct 29 15:27:28 2020 +0530
PHOENIX-6002 : Resolve connection leak through QueryUtil.getConnectionOnServer()
Signed-off-by: Xinyi Yan <ya...@apache.org>
---
.../IndexHalfStoreFileReaderGenerator.java | 16 +++++-----
.../phoenix/coprocessor/DropColumnMutator.java | 34 ++++++++++++----------
.../phoenix/coprocessor/MetaDataEndpointImpl.java | 24 +++++++++------
.../phoenix/mapreduce/FormatToKeyValueReducer.java | 4 +--
4 files changed, 43 insertions(+), 35 deletions(-)
diff --git a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java
index 7254f57..5e59136 100644
--- a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java
+++ b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexHalfStoreFileReaderGenerator.java
@@ -276,24 +276,22 @@ public class IndexHalfStoreFileReaderGenerator implements RegionObserver, Region
scan.addFamily(s.getColumnFamilyDescriptor().getName());
}
}
- try {
- PhoenixConnection conn = QueryUtil.getConnectionOnServer(env.getConfiguration())
- .unwrap(PhoenixConnection.class);
+ try (PhoenixConnection conn = QueryUtil.getConnectionOnServer(
+ env.getConfiguration()).unwrap(PhoenixConnection.class)) {
PTable dataPTable = IndexUtil.getPDataTable(conn, env.getRegion().getTableDescriptor());
final List<IndexMaintainer> maintainers = Lists
- .newArrayListWithExpectedSize(dataPTable.getIndexes().size());
+ .newArrayListWithExpectedSize(dataPTable.getIndexes().size());
for (PTable index : dataPTable.getIndexes()) {
if (index.getIndexType() == IndexType.LOCAL) {
maintainers.add(index.getIndexMaintainer(dataPTable, conn));
}
}
- return new DataTableLocalIndexRegionScanner(env.getRegion().getScanner(scan), env.getRegion(),
- maintainers, store.getColumnFamilyDescriptor().getName(),env.getConfiguration());
-
-
+ return new DataTableLocalIndexRegionScanner(
+ env.getRegion().getScanner(scan), env.getRegion(), maintainers,
+ store.getColumnFamilyDescriptor().getName(),
+ env.getConfiguration());
} catch (SQLException e) {
throw new IOException(e);
-
}
}
}
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DropColumnMutator.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DropColumnMutator.java
index f1491b9..1fe9d84 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DropColumnMutator.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/DropColumnMutator.java
@@ -132,23 +132,27 @@ public class DropColumnMutator implements ColumnMutator {
if (existingViewColumn != null && view.getViewStatement() != null) {
ParseNode viewWhere =
new SQLParser(view.getViewStatement()).parseQuery().getWhere();
- PhoenixConnection conn = QueryUtil.getConnectionOnServer(conf).unwrap(
- PhoenixConnection.class);
- PhoenixStatement statement = new PhoenixStatement(conn);
- TableRef baseTableRef = new TableRef(view);
- ColumnResolver columnResolver = FromCompiler.getResolver(baseTableRef);
- StatementContext context = new StatementContext(statement, columnResolver);
- Expression whereExpression = WhereCompiler.compile(context, viewWhere);
- Expression colExpression =
- new ColumnRef(baseTableRef, existingViewColumn.getPosition())
- .newColumnExpression();
- MetaDataEndpointImpl.ColumnFinder columnFinder =
- new MetaDataEndpointImpl.ColumnFinder(colExpression);
- whereExpression.accept(columnFinder);
- if (columnFinder.getColumnFound()) {
- return new MetaDataProtocol.MetaDataMutationResult(
+ try (PhoenixConnection conn =
+ QueryUtil.getConnectionOnServer(conf)
+ .unwrap(PhoenixConnection.class)) {
+ PhoenixStatement statement = new PhoenixStatement(conn);
+ TableRef baseTableRef = new TableRef(view);
+ ColumnResolver columnResolver =
+ FromCompiler.getResolver(baseTableRef);
+ StatementContext context =
+ new StatementContext(statement, columnResolver);
+ Expression whereExpression =
+ WhereCompiler.compile(context, viewWhere);
+ Expression colExpression = new ColumnRef(baseTableRef,
+ existingViewColumn.getPosition()).newColumnExpression();
+ MetaDataEndpointImpl.ColumnFinder columnFinder =
+ new MetaDataEndpointImpl.ColumnFinder(colExpression);
+ whereExpression.accept(columnFinder);
+ if (columnFinder.getColumnFound()) {
+ return new MetaDataProtocol.MetaDataMutationResult(
MetaDataProtocol.MutationCode.UNALLOWED_TABLE_MUTATION,
EnvironmentEdgeManager.currentTimeMillis(), table);
+ }
}
}
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
index a830d7f..e4e6742 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
@@ -2290,16 +2290,16 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements RegionCopr
&& (clientVersion >= MIN_SPLITTABLE_SYSTEM_CATALOG ||
SchemaUtil.getPhysicalTableName(SYSTEM_CHILD_LINK_NAME_BYTES,
env.getConfiguration()).equals(hTable.getName()))) {
- try {
- PhoenixConnection conn =
- QueryUtil.getConnectionOnServer(env.getConfiguration())
- .unwrap(PhoenixConnection.class);
+ try (PhoenixConnection conn =
+ QueryUtil.getConnectionOnServer(env.getConfiguration())
+ .unwrap(PhoenixConnection.class)) {
Task.addTask(conn, PTable.TaskType.DROP_CHILD_VIEWS,
- Bytes.toString(tenantIdBytes), Bytes.toString(schemaName),
- Bytes.toString(tableOrViewName),
- PTable.TaskStatus.CREATED.toString(),
- null, null, null, null,
- this.accessCheckEnabled);
+ Bytes.toString(tenantIdBytes),
+ Bytes.toString(schemaName),
+ Bytes.toString(tableOrViewName),
+ PTable.TaskStatus.CREATED.toString(),
+ null, null, null, null,
+ this.accessCheckEnabled);
} catch (Throwable t) {
LOGGER.error("Adding a task to drop child views failed!", t);
}
@@ -3201,6 +3201,9 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements RegionCopr
invalidateList.add(new ImmutableBytesPtr(indexKey));
}
}
+ if (connection != null) {
+ connection.close();
+ }
return null;
}
@@ -3268,6 +3271,9 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements RegionCopr
index.getSchemaName().getBytes() : ByteUtil.EMPTY_BYTE_ARRAY, index.getTableName().getBytes());
}
}
+ if (connection != null) {
+ connection.close();
+ }
return null;
}
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToKeyValueReducer.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToKeyValueReducer.java
index ea727f7..9dccd6c 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToKeyValueReducer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToKeyValueReducer.java
@@ -77,8 +77,8 @@ public class FormatToKeyValueReducer
for (Map.Entry<String, String> entry : conf) {
clientInfos.setProperty(entry.getKey(), entry.getValue());
}
- try {
- PhoenixConnection conn = (PhoenixConnection) QueryUtil.getConnectionOnServer(clientInfos, conf);
+ try (PhoenixConnection conn = (PhoenixConnection) QueryUtil
+ .getConnectionOnServer(clientInfos, conf)) {
builder = conn.getKeyValueBuilder();
final String tableNamesConf = conf.get(FormatToBytesWritableMapper.TABLE_NAMES_CONFKEY);
final String logicalNamesConf = conf.get(FormatToBytesWritableMapper.LOGICAL_NAMES_CONFKEY);