This is an automated email from the ASF dual-hosted git repository.
yanxinyi pushed a commit to branch 4.x
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/4.x by this push:
new fc46ca0 PHOENIX-6002 : Resolve connection leak through
QueryUtil.getConnectionOnServer()
fc46ca0 is described below
commit fc46ca0b7ff542f36af0f0b5814f17e91e770983
Author: Viraj Jasani <[email protected]>
AuthorDate: Fri Oct 30 12:20:47 2020 +0530
PHOENIX-6002 : Resolve connection leak through
QueryUtil.getConnectionOnServer()
Signed-off-by: Xinyi Yan <[email protected]>
---
.../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 6a44e33..c56e890 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
@@ -259,24 +259,22 @@ public class IndexHalfStoreFileReaderGenerator extends
BaseRegionObserver {
scan.addFamily(s.getFamily().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().getTableDesc());
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.getFamily().getName(),env.getConfiguration());
-
-
+ return new DataTableLocalIndexRegionScanner(
+ env.getRegion().getScanner(scan), env.getRegion(), maintainers,
+ store.getFamily().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 3213744..735a40b 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
@@ -131,23 +131,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 847379b..61cb297 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
@@ -2271,16 +2271,16 @@ public class MetaDataEndpointImpl extends
MetaDataProtocol implements Coprocesso
&& (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);
}
@@ -3188,6 +3188,9 @@ public class MetaDataEndpointImpl extends
MetaDataProtocol implements Coprocesso
invalidateList.add(new ImmutableBytesPtr(indexKey));
}
}
+ if (connection != null) {
+ connection.close();
+ }
return null;
}
@@ -3255,6 +3258,9 @@ public class MetaDataEndpointImpl extends
MetaDataProtocol implements Coprocesso
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 343f42d..0b0b1b9 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
@@ -78,8 +78,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);