Skip to content

Commit 0e822dc

Browse files
authored
fix(bigquery-jdbc): fix missing logger instances (#14733)
1 parent beee46f commit 0e822dc

5 files changed

Lines changed: 58 additions & 5 deletions

File tree

‎java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcBulkInsertWriter.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
import javax.annotation.concurrent.GuardedBy;
3939

4040
class BigQueryJdbcBulkInsertWriter {
41-
private final BigQueryJdbcCustomLogger LOG = new BigQueryJdbcCustomLogger(this.toString());
41+
private static final BigQueryJdbcCustomLogger LOG =
42+
new BigQueryJdbcCustomLogger(BigQueryJdbcBulkInsertWriter.class.getName());
4243
private JsonStreamWriter jsonStreamWriter;
4344
private final Phaser openRequestCount = new Phaser(1);
4445
private final Object streamLock = new Object();

‎java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandler.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
import java.util.Locale;
3939

4040
class BigQueryParameterHandler {
41-
private final BigQueryJdbcCustomLogger LOG = new BigQueryJdbcCustomLogger(this.toString());
41+
private static final BigQueryJdbcCustomLogger LOG =
42+
new BigQueryJdbcCustomLogger(BigQueryParameterHandler.class.getName());
4243
private final int parametersArraySize;
4344
private final boolean enableTimestampPicos;
4445
final ArrayList<BigQueryJdbcParameter> parametersList;

‎java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@
7575
import java.util.Queue;
7676

7777
class BigQueryPreparedStatement extends BigQueryStatement implements PreparedStatement {
78-
private final BigQueryJdbcCustomLogger LOG = new BigQueryJdbcCustomLogger(this.toString());
78+
private static final BigQueryJdbcCustomLogger LOG =
79+
new BigQueryJdbcCustomLogger(BigQueryPreparedStatement.class.getName());
7980
private static final char POSITIONAL_PARAMETER_CHAR = '?';
8081
// parameterHandler is inherited from BigQueryStatement
8182
protected final int parameterCount;

‎java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadata.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828

2929
/** This class returns ResultSetMetadata for the JSON and the Arrow ResultSets */
3030
class BigQueryResultSetMetadata implements ResultSetMetaData {
31-
private final BigQueryJdbcResultSetLogger LOG =
32-
BigQueryJdbcResultSetLogger.getLogger(this.getClass());
31+
private static final BigQueryJdbcResultSetLogger LOG =
32+
BigQueryJdbcResultSetLogger.getLogger(BigQueryResultSetMetadata.class);
3333
private final FieldList schemaFieldList;
3434
private final BigQueryStatement statement;
3535
private final int columnCount;

‎java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcCustomLoggerTest.java‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,56 @@ public void testCreatingStatementsDoesNotRegisterChildLoggers() throws Exception
635635
+ " statements must not register additional child loggers on the driver root logger");
636636
}
637637

638+
@Test
639+
public void testCreatingPreparedAndCallableStatementsDoesNotRegisterChildLoggers()
640+
throws Exception {
641+
BigQueryConnection connection = mock(BigQueryConnection.class);
642+
doReturn("leak-test-connection").when(connection).getConnectionId();
643+
doReturn(BigQueryConnection.SessionState.empty()).when(connection).getSessionStateSnapshot();
644+
645+
Logger rootLogger = BigQueryJdbcRootLogger.getRootLogger();
646+
// Warm up so that any one-time, class-level logger is registered before we measure.
647+
new BigQueryPreparedStatement(connection, "SELECT 1");
648+
new BigQueryCallableStatement(connection, "CALL my_proc()");
649+
int childrenBefore = childLoggerCount(rootLogger);
650+
651+
for (int i = 0; i < OBJECT_COUNT; i++) {
652+
new BigQueryPreparedStatement(connection, "SELECT 1");
653+
new BigQueryCallableStatement(connection, "CALL my_proc()");
654+
}
655+
656+
assertEquals(
657+
childrenBefore,
658+
childLoggerCount(rootLogger),
659+
"Creating "
660+
+ OBJECT_COUNT
661+
+ " PreparedStatements and CallableStatements must not register additional child"
662+
+ " loggers on the driver root logger");
663+
}
664+
665+
@Test
666+
public void testCreatingParameterHandlersAndBulkInsertWritersDoesNotRegisterChildLoggers()
667+
throws ReflectiveOperationException {
668+
Logger rootLogger = BigQueryJdbcRootLogger.getRootLogger();
669+
// Warm up so that any one-time, class-level logger is registered before we measure.
670+
new BigQueryParameterHandler(1);
671+
new BigQueryJdbcBulkInsertWriter();
672+
int childrenBefore = childLoggerCount(rootLogger);
673+
674+
for (int i = 0; i < OBJECT_COUNT; i++) {
675+
new BigQueryParameterHandler(1);
676+
new BigQueryJdbcBulkInsertWriter();
677+
}
678+
679+
assertEquals(
680+
childrenBefore,
681+
childLoggerCount(rootLogger),
682+
"Creating "
683+
+ OBJECT_COUNT
684+
+ " ParameterHandlers and BulkInsertWriters must not register additional child loggers"
685+
+ " on the driver root logger");
686+
}
687+
638688
@Test
639689
public void testCreatingDatabaseMetaDataDoesNotRegisterChildLoggers()
640690
throws ReflectiveOperationException {

0 commit comments

Comments
 (0)