Skip to content

Commit 624a111

Browse files
committed
Initial implementation of SQL client tracing
1 parent f9792f8 commit 624a111

File tree

20 files changed

+470
-63
lines changed

20 files changed

+470
-63
lines changed

vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2ConnectionImpl.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.vertx.db2client.impl.command.PingCommand;
2727
import io.vertx.sqlclient.impl.Connection;
2828
import io.vertx.sqlclient.impl.SqlConnectionImpl;
29+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
2930

3031
public class DB2ConnectionImpl extends SqlConnectionImpl<DB2ConnectionImpl> implements DB2Connection {
3132

@@ -37,21 +38,22 @@ public static Future<DB2Connection> connect(Vertx vertx, DB2ConnectOptions optio
3738
} catch (Exception e) {
3839
return ctx.failedFuture(e);
3940
}
41+
SqlTracer tracer = ctx.tracer() == null ? null : new SqlTracer(ctx.tracer(), options);
4042
Promise<DB2Connection> promise = ctx.promise();
41-
ctx.dispatch(null, v -> connect(client, ctx, promise));
43+
ctx.dispatch(null, v -> connect(client, ctx, tracer, promise));
4244
return promise.future();
4345
}
4446

45-
private static void connect(DB2ConnectionFactory client, ContextInternal ctx, Promise<DB2Connection> promise) {
47+
private static void connect(DB2ConnectionFactory client, ContextInternal ctx, SqlTracer tracer, Promise<DB2Connection> promise) {
4648
client.connect().map(conn -> {
47-
DB2ConnectionImpl db2Connection = new DB2ConnectionImpl(client, ctx, conn);
49+
DB2ConnectionImpl db2Connection = new DB2ConnectionImpl(client, ctx, conn, tracer);
4850
conn.init(db2Connection);
4951
return (DB2Connection) db2Connection;
5052
}).onComplete(promise);
5153
}
5254

53-
public DB2ConnectionImpl(DB2ConnectionFactory factory, ContextInternal context, Connection conn) {
54-
super(context, conn);
55+
public DB2ConnectionImpl(DB2ConnectionFactory factory, ContextInternal context, Connection conn, SqlTracer tracer) {
56+
super(context, conn, tracer);
5557
}
5658

5759
@Override

vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2PoolImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
import io.vertx.sqlclient.impl.Connection;
2626
import io.vertx.sqlclient.impl.PoolBase;
2727
import io.vertx.sqlclient.impl.SqlConnectionImpl;
28+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
2829

2930
public class DB2PoolImpl extends PoolBase<DB2PoolImpl> implements DB2Pool {
3031

3132
public static DB2PoolImpl create(ContextInternal context, boolean closeVertx, DB2ConnectOptions connectOptions,
3233
PoolOptions poolOptions) {
33-
DB2PoolImpl pool = new DB2PoolImpl(context, poolOptions, new DB2ConnectionFactory(context, connectOptions));
34+
SqlTracer tracer = context.tracer() == null ? null : new SqlTracer(context.tracer(), connectOptions);
35+
DB2PoolImpl pool = new DB2PoolImpl(context, poolOptions, new DB2ConnectionFactory(context, connectOptions), tracer);
3436
CloseFuture closeFuture = pool.closeFuture();
3537
if (closeVertx) {
3638
closeFuture.onComplete(ar -> context.owner().close());
@@ -42,8 +44,8 @@ public static DB2PoolImpl create(ContextInternal context, boolean closeVertx, DB
4244

4345
private final DB2ConnectionFactory factory;
4446

45-
private DB2PoolImpl(ContextInternal context, PoolOptions poolOptions, DB2ConnectionFactory factory) {
46-
super(context, factory, poolOptions);
47+
private DB2PoolImpl(ContextInternal context, PoolOptions poolOptions, DB2ConnectionFactory factory, SqlTracer tracer) {
48+
super(context, factory, tracer, poolOptions);
4749
this.factory = factory;
4850
}
4951

@@ -55,6 +57,6 @@ public void connect(Handler<AsyncResult<Connection>> completionHandler) {
5557
@SuppressWarnings("rawtypes")
5658
@Override
5759
protected SqlConnectionImpl wrap(ContextInternal context, Connection conn) {
58-
return new DB2ConnectionImpl(factory, context, conn);
60+
return new DB2ConnectionImpl(factory, context, conn, tracer);
5961
}
6062
}

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLConnectionImpl.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
import io.vertx.core.Vertx;
2020
import io.vertx.sqlclient.impl.Connection;
2121
import io.vertx.sqlclient.impl.SqlConnectionImpl;
22+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
2223

2324
public class MSSQLConnectionImpl extends SqlConnectionImpl<MSSQLConnectionImpl> implements MSSQLConnection {
2425
private final MSSQLConnectionFactory factory;
2526

26-
public MSSQLConnectionImpl(MSSQLConnectionFactory factory, ContextInternal context, Connection conn) {
27-
super(context, conn);
27+
public MSSQLConnectionImpl(MSSQLConnectionFactory factory, ContextInternal context, Connection conn, SqlTracer tracer) {
28+
super(context, conn, tracer);
2829
this.factory = factory;
2930
}
3031

@@ -36,12 +37,13 @@ public int appendQueryPlaceholder(StringBuilder queryBuilder, int index, int cur
3637

3738
public static Future<MSSQLConnection> connect(Vertx vertx, MSSQLConnectOptions options) {
3839
ContextInternal ctx = (ContextInternal) vertx.getOrCreateContext();
40+
SqlTracer tracer = ctx.tracer() == null ? null : new SqlTracer(ctx.tracer(), options);
3941
PromiseInternal<MSSQLConnection> promise = ctx.promise();
4042
MSSQLConnectionFactory client = new MSSQLConnectionFactory(ctx, options);
4143
ctx.dispatch(null, v -> {
4244
client.connect()
4345
.<MSSQLConnection>map(conn -> {
44-
MSSQLConnectionImpl msConn = new MSSQLConnectionImpl(client, ctx, conn);
46+
MSSQLConnectionImpl msConn = new MSSQLConnectionImpl(client, ctx, conn, tracer);
4547
conn.init(msConn);
4648
return msConn;
4749
}).onComplete(promise);

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLPoolImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@
2323
import io.vertx.sqlclient.impl.Connection;
2424
import io.vertx.sqlclient.impl.PoolBase;
2525
import io.vertx.sqlclient.impl.SqlConnectionImpl;
26+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
2627

2728
import java.util.function.Function;
2829

2930
public class MSSQLPoolImpl extends PoolBase<MSSQLPoolImpl> implements MSSQLPool {
3031

3132
public static MSSQLPoolImpl create(ContextInternal context, boolean closeVertx, MSSQLConnectOptions connectOptions, PoolOptions poolOptions) {
32-
MSSQLPoolImpl pool = new MSSQLPoolImpl(context, new MSSQLConnectionFactory(context, connectOptions), poolOptions);
33+
SqlTracer tracer = context.tracer() == null ? null : new SqlTracer(context.tracer(), connectOptions);
34+
MSSQLPoolImpl pool = new MSSQLPoolImpl(context, new MSSQLConnectionFactory(context, connectOptions), tracer, poolOptions);
3335
CloseFuture closeFuture = pool.closeFuture();
3436
if (closeVertx) {
3537
closeFuture.onComplete(ar -> context.owner().close());
@@ -41,8 +43,8 @@ public static MSSQLPoolImpl create(ContextInternal context, boolean closeVertx,
4143

4244
private final MSSQLConnectionFactory connectionFactory;
4345

44-
private MSSQLPoolImpl(ContextInternal context, MSSQLConnectionFactory factory, PoolOptions poolOptions) {
45-
super(context, factory, poolOptions);
46+
private MSSQLPoolImpl(ContextInternal context, MSSQLConnectionFactory factory, SqlTracer tracer, PoolOptions poolOptions) {
47+
super(context, factory, tracer, poolOptions);
4648
this.connectionFactory = factory;
4749
}
4850

@@ -59,7 +61,7 @@ public void connect(Handler<AsyncResult<Connection>> completionHandler) {
5961

6062
@Override
6163
protected SqlConnectionImpl wrap(ContextInternal context, Connection connection) {
62-
return new MSSQLConnectionImpl(connectionFactory, context, connection);
64+
return new MSSQLConnectionImpl(connectionFactory, context, connection, tracer);
6365
}
6466

6567
@Override

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLConnectionImpl.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import io.vertx.mysqlclient.impl.command.StatisticsCommand;
3232
import io.vertx.sqlclient.impl.Connection;
3333
import io.vertx.sqlclient.impl.SqlConnectionImpl;
34+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
3435

3536
public class MySQLConnectionImpl extends SqlConnectionImpl<MySQLConnectionImpl> implements MySQLConnection {
3637

@@ -42,24 +43,25 @@ public static Future<MySQLConnection> connect(Vertx vertx, MySQLConnectOptions o
4243
} catch (Exception e) {
4344
return ctx.failedFuture(e);
4445
}
46+
SqlTracer tracer = ctx.tracer() == null ? null : new SqlTracer(ctx.tracer(), options);
4547
Promise<MySQLConnection> promise = ctx.promise();
46-
ctx.dispatch(null, v -> connect(client, ctx, promise));
48+
ctx.dispatch(null, v -> connect(client, ctx, tracer, promise));
4749
return promise.future();
4850
}
4951

50-
private static void connect(MySQLConnectionFactory client, ContextInternal ctx, Promise<MySQLConnection> promise) {
52+
private static void connect(MySQLConnectionFactory client, ContextInternal ctx, SqlTracer tracer, Promise<MySQLConnection> promise) {
5153
client.connect()
5254
.map(conn -> {
53-
MySQLConnectionImpl mySQLConnection = new MySQLConnectionImpl(client, ctx, conn);
55+
MySQLConnectionImpl mySQLConnection = new MySQLConnectionImpl(client, ctx, conn, tracer);
5456
conn.init(mySQLConnection);
5557
return (MySQLConnection) mySQLConnection;
5658
}).onComplete(promise);
5759
}
5860

5961
private final MySQLConnectionFactory factory;
6062

61-
public MySQLConnectionImpl(MySQLConnectionFactory factory, ContextInternal context, Connection conn) {
62-
super(context, conn);
63+
public MySQLConnectionImpl(MySQLConnectionFactory factory, ContextInternal context, Connection conn, SqlTracer tracer) {
64+
super(context, conn, tracer);
6365

6466
this.factory = factory;
6567
}

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLPoolImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
import io.vertx.sqlclient.impl.Connection;
2222
import io.vertx.sqlclient.impl.PoolBase;
2323
import io.vertx.sqlclient.impl.SqlConnectionImpl;
24+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
2425

2526
public class MySQLPoolImpl extends PoolBase<MySQLPoolImpl> implements MySQLPool {
2627

2728
public static MySQLPoolImpl create(ContextInternal context, boolean closeVertx, MySQLConnectOptions connectOptions, PoolOptions poolOptions) {
28-
MySQLPoolImpl pool = new MySQLPoolImpl(context, new MySQLConnectionFactory(context, connectOptions), poolOptions);
29+
SqlTracer tracer = context.tracer() == null ? null : new SqlTracer(context.tracer(), connectOptions);
30+
MySQLPoolImpl pool = new MySQLPoolImpl(context, new MySQLConnectionFactory(context, connectOptions), tracer, poolOptions);
2931
CloseFuture closeFuture = pool.closeFuture();
3032
if (closeVertx) {
3133
closeFuture.onComplete(ar -> context.owner().close());
@@ -37,8 +39,8 @@ public static MySQLPoolImpl create(ContextInternal context, boolean closeVertx,
3739

3840
private final MySQLConnectionFactory factory;
3941

40-
private MySQLPoolImpl(ContextInternal context, MySQLConnectionFactory factory, PoolOptions poolOptions) {
41-
super(context, factory, poolOptions);
42+
private MySQLPoolImpl(ContextInternal context, MySQLConnectionFactory factory, SqlTracer tracer, PoolOptions poolOptions) {
43+
super(context, factory, tracer, poolOptions);
4244
this.factory = factory;
4345
}
4446

@@ -49,6 +51,6 @@ public void connect(Handler<AsyncResult<Connection>> completionHandler) {
4951

5052
@Override
5153
protected SqlConnectionImpl wrap(ContextInternal context, Connection conn) {
52-
return new MySQLConnectionImpl(factory, context, conn);
54+
return new MySQLConnectionImpl(factory, context, conn, tracer);
5355
}
5456
}

vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgConnectionImpl.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.vertx.core.Future;
2929
import io.vertx.core.Handler;
3030
import io.vertx.core.Vertx;
31+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
3132

3233
public class PgConnectionImpl extends SqlConnectionImpl<PgConnectionImpl> implements PgConnection {
3334

@@ -38,7 +39,8 @@ public static Future<PgConnection> connect(ContextInternal context, PgConnectOpt
3839
PgConnectionFactory client = new PgConnectionFactory(context.owner(), context, options);
3940
return client.connect()
4041
.map(conn -> {
41-
PgConnectionImpl pgConn = new PgConnectionImpl(client, context, conn);
42+
SqlTracer tracer = context.tracer() == null ? null : new SqlTracer(context.tracer(), options);
43+
PgConnectionImpl pgConn = new PgConnectionImpl(client, context, conn, tracer);
4244
conn.init(pgConn);
4345
return pgConn;
4446
});
@@ -48,8 +50,8 @@ public static Future<PgConnection> connect(ContextInternal context, PgConnectOpt
4850
private final PgConnectionFactory factory;
4951
private volatile Handler<PgNotification> notificationHandler;
5052

51-
PgConnectionImpl(PgConnectionFactory factory, ContextInternal context, Connection conn) {
52-
super(context, conn);
53+
PgConnectionImpl(PgConnectionFactory factory, ContextInternal context, Connection conn, SqlTracer tracer) {
54+
super(context, conn, tracer);
5355

5456
this.factory = factory;
5557
}

vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgPoolImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.vertx.sqlclient.impl.PoolBase;
2626
import io.vertx.sqlclient.impl.SqlConnectionImpl;
2727
import io.vertx.core.*;
28+
import io.vertx.sqlclient.impl.tracing.SqlTracer;
2829

2930
/**
3031
* Todo :
@@ -38,7 +39,8 @@
3839
public class PgPoolImpl extends PoolBase<PgPoolImpl> implements PgPool {
3940

4041
public static PgPoolImpl create(ContextInternal context, boolean closeVertx, PgConnectOptions connectOptions, PoolOptions poolOptions) {
41-
PgPoolImpl pool = new PgPoolImpl(context, new PgConnectionFactory(context.owner(), context, connectOptions), poolOptions);
42+
SqlTracer tracer = context.tracer() == null ? null : new SqlTracer(context.tracer(), connectOptions);
43+
PgPoolImpl pool = new PgPoolImpl(context, new PgConnectionFactory(context.owner(), context, connectOptions), tracer, poolOptions);
4244
CloseFuture closeFuture = pool.closeFuture();
4345
if (closeVertx) {
4446
closeFuture.onComplete(ar -> context.owner().close());
@@ -50,8 +52,8 @@ public static PgPoolImpl create(ContextInternal context, boolean closeVertx, PgC
5052

5153
private final PgConnectionFactory factory;
5254

53-
private PgPoolImpl(ContextInternal context, PgConnectionFactory factory, PoolOptions poolOptions) {
54-
super(context, factory, poolOptions);
55+
private PgPoolImpl(ContextInternal context, PgConnectionFactory factory, SqlTracer tracer, PoolOptions poolOptions) {
56+
super(context, factory, tracer, poolOptions);
5557
this.factory = factory;
5658
}
5759

@@ -68,6 +70,6 @@ public void connect(Handler<AsyncResult<Connection>> completionHandler) {
6870

6971
@Override
7072
protected SqlConnectionImpl wrap(ContextInternal context, Connection conn) {
71-
return new PgConnectionImpl(factory, context, conn);
73+
return new PgConnectionImpl(factory, context, conn, tracer);
7274
}
7375
}

0 commit comments

Comments
 (0)