Skip to content

Commit 534cde9

Browse files
committed
[pinpoint-apm#12077] Backport: Update io.asyncer:r2dbc-mysql of spring r2dbc plugin
1 parent 0b21a30 commit 534cde9

File tree

4 files changed

+32
-58
lines changed

4 files changed

+32
-58
lines changed

agent-module/agent-testweb/spring-data-r2dbc-plugin-testweb/pom.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,11 @@
6969
</dependency>
7070

7171
<dependency>
72-
<groupId>dev.miku</groupId>
72+
<groupId>io.asyncer</groupId>
7373
<artifactId>r2dbc-mysql</artifactId>
74-
<version>0.8.2.RELEASE</version>
74+
<version>1.3.1</version>
7575
</dependency>
7676

77-
7877
<dependency>
7978
<groupId>com.github.jasync-sql</groupId>
8079
<artifactId>jasync-r2dbc-mysql</artifactId>

agent-module/agent-testweb/spring-data-r2dbc-plugin-testweb/src/main/java/com/pinpoint/test/plugin/MysqlR2dbcDatabase.java

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,32 @@
1616

1717
package com.pinpoint.test.plugin;
1818

19-
import dev.miku.r2dbc.mysql.MySqlConnectionConfiguration;
20-
import dev.miku.r2dbc.mysql.MySqlConnectionFactory;
21-
import dev.miku.r2dbc.mysql.constant.SslMode;
19+
import io.asyncer.r2dbc.mysql.MySqlConnectionConfiguration;
20+
import io.asyncer.r2dbc.mysql.MySqlConnectionFactory;
21+
import io.asyncer.r2dbc.mysql.constant.SslMode;
2222
import io.r2dbc.spi.ConnectionFactory;
23-
import jakarta.annotation.PostConstruct;
24-
import jakarta.annotation.PreDestroy;
25-
import org.springframework.beans.factory.annotation.Qualifier;
2623
import org.springframework.stereotype.Component;
2724

2825
import java.time.Duration;
2926

3027
@Component
31-
@Qualifier("mysql")
3228
public class MysqlR2dbcDatabase implements R2dbcDatabase {
3329
private ConnectionFactory connectionFactory;
3430

35-
@PostConstruct
36-
public void init() throws Exception {
31+
public MysqlR2dbcDatabase() {
32+
System.out.println("INIT");
3733
MySqlConnectionConfiguration connectionConfiguration = MySqlConnectionConfiguration.builder()
3834
.host("localhost")
39-
.port(49178)
35+
.port(32789)
4036
.database("test")
4137
.user("root")
4238
.password("")
4339
.connectTimeout(Duration.ofSeconds(5 * 60))
4440
.sslMode(SslMode.DISABLED)
4541
.build();
46-
4742
connectionFactory = MySqlConnectionFactory.from(connectionConfiguration);
4843
}
4944

50-
@PreDestroy
51-
public void destroy() {
52-
}
53-
5445
@Override
5546
public ConnectionFactory getConnectionFactory() {
5647
return this.connectionFactory;

agent-module/agent-testweb/spring-data-r2dbc-plugin-testweb/src/main/java/com/pinpoint/test/plugin/SpringDataR2dbcPluginController.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.reactivestreams.Publisher;
2323
import org.reactivestreams.Subscriber;
2424
import org.reactivestreams.Subscription;
25-
import org.springframework.beans.factory.annotation.Qualifier;
25+
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
2727
import org.springframework.r2dbc.core.DatabaseClient;
2828
import org.springframework.web.bind.annotation.GetMapping;
@@ -42,11 +42,12 @@
4242
public class SpringDataR2dbcPluginController {
4343
private final Logger logger = LogManager.getLogger(this.getClass());
4444

45-
R2dbcDatabase r2dbcDatabase;
45+
@Autowired
46+
MysqlR2dbcDatabase r2dbcDatabase;
4647

47-
public SpringDataR2dbcPluginController(@Qualifier("mysql") R2dbcDatabase r2dbcDatabase) {
48-
this.r2dbcDatabase = r2dbcDatabase;
49-
}
48+
// public SpringDataR2dbcPluginController(@Qualifier("mysql") R2dbcDatabase r2dbcDatabase) {
49+
// this.r2dbcDatabase = r2dbcDatabase;
50+
// }
5051

5152
@GetMapping("/template/insert")
5253
public Mono<Map<String, Object>> insert() throws SQLException {
@@ -86,11 +87,12 @@ public List<String> connectionSelect() throws Throwable {
8687
Publisher<? extends Connection> conn = r2dbcDatabase.getConnectionFactory().create();
8788
final ObservableSubscriber<String> subscriber = new ObservableSubscriber();
8889
Mono.from(conn)
89-
.flatMapMany(
90-
c -> Flux.from(c.createStatement("SELECT * FROM persons")
91-
.execute())
90+
.flatMapMany(connection -> {
91+
System.out.println("## Before");
92+
return connection.createStatement("SELECT first_name FROM persons").execute();
93+
}
9294
).flatMap(result -> result.map(((row, rowMetadata) -> row.get("first_name", String.class)))
93-
).subscribe(subscriber);
95+
).subscribe(subscriber);
9496
subscriber.await();
9597
return subscriber.getReceived();
9698
}

agent-module/plugins/spring-data-r2dbc/src/main/java/com/navercorp/pinpoint/plugin/spring/r2dbc/SpringDataR2dbcPlugin.java

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.mysql.MySqlConnectionConfigurationInterceptor;
7171
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.mysql.MySqlConnectionConstructorInterceptor;
7272
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.mysql.MySqlConnectionFactoryFromInterceptor;
73-
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.mysql.QueryFlowLoginInterceptor;
7473
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.mysql.ReactorNettyClientConstructorInterceptor;
7574
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.oracle.OracleConnectionFactoryImplConstructorInterceptor;
7675
import com.navercorp.pinpoint.plugin.spring.r2dbc.interceptor.oracle.OracleConnectionFactoryImplLambdaCreateInterceptor;
@@ -115,17 +114,16 @@ public void setup(ProfilerPluginSetupContext context) {
115114
}
116115
if (config.getMysqlConfig().isPluginEnable()) {
117116
// MySQL
118-
transformTemplate.transform("dev.miku.r2dbc.mysql.MySqlConnectionConfiguration", MySqlConnectionConfigurationTransform.class);
119-
transformTemplate.transform("dev.miku.r2dbc.mysql.MySqlConnectionFactory", MySqlConnectionFactoryTransform.class);
120-
transformTemplate.transform("dev.miku.r2dbc.mysql.MySqlConnection", MySqlConnectionTransform.class);
121-
transformTemplate.transform("dev.miku.r2dbc.mysql.PrepareSimpleStatement", MySqlStatementTransform.class);
122-
transformTemplate.transform("dev.miku.r2dbc.mysql.TextSimpleStatement", MySqlStatementTransform.class);
123-
transformTemplate.transform("dev.miku.r2dbc.mysql.PrepareParametrizedStatement", MySqlStatementTransform.class);
124-
transformTemplate.transform("dev.miku.r2dbc.mysql.TextParametrizedStatement", MySqlStatementTransform.class);
125-
transformTemplate.transform("dev.miku.r2dbc.mysql.SimpleStatementSupport", MySqlStatementTransform.class);
126-
transformTemplate.transform("dev.miku.r2dbc.mysql.ParametrizedStatementSupport", MySqlStatementTransform.class);
127-
transformTemplate.transform("dev.miku.r2dbc.mysql.client.ReactorNettyClient", ReactorNettyClientTransform.class);
128-
transformTemplate.transform("dev.miku.r2dbc.mysql.QueryFlow", QueryFlowTransform.class);
117+
transformTemplate.transform("io.asyncer.r2dbc.mysql.MySqlConnectionConfiguration", MySqlConnectionConfigurationTransform.class);
118+
transformTemplate.transform("io.asyncer.r2dbc.mysql.MySqlConnectionFactory", MySqlConnectionFactoryTransform.class);
119+
transformTemplate.transform("io.asyncer.r2dbc.mysql.MySqlSimpleConnection", MySqlConnectionTransform.class);
120+
transformTemplate.transform("io.asyncer.r2dbc.mysql.PrepareSimpleStatement", MySqlStatementTransform.class);
121+
transformTemplate.transform("io.asyncer.r2dbc.mysql.TextSimpleStatement", MySqlStatementTransform.class);
122+
transformTemplate.transform("io.asyncer.r2dbc.mysql.PrepareParameterizedStatement", MySqlStatementTransform.class);
123+
transformTemplate.transform("io.asyncer.r2dbc.mysql.TextParameterizedStatement", MySqlStatementTransform.class);
124+
transformTemplate.transform("io.asyncer.r2dbc.mysql.SimpleStatementSupport", MySqlStatementTransform.class);
125+
transformTemplate.transform("io.asyncer.r2dbc.mysql.ParameterizedStatementSupport", MySqlStatementTransform.class);
126+
transformTemplate.transform("io.asyncer.r2dbc.mysql.client.ReactorNettyClient", ReactorNettyClientTransform.class);
129127
// MySQL - Jasync
130128
transformTemplate.transform("com.github.jasync.sql.db.Configuration", JasyncConfigurationTransform.class);
131129
transformTemplate.transform("com.github.jasync.sql.db.mysql.pool.MySQLConnectionFactory", JasyncMySQLConnectionFactoryTransform.class);
@@ -409,7 +407,7 @@ public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader,
409407
final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
410408
target.addField(DatabaseInfoAccessor.class);
411409

412-
final InstrumentMethod fromMethod = target.getDeclaredMethod("from", "dev.miku.r2dbc.mysql.MySqlConnectionConfiguration");
410+
final InstrumentMethod fromMethod = target.getDeclaredMethod("from", "io.asyncer.r2dbc.mysql.MySqlConnectionConfiguration");
413411
if (fromMethod != null) {
414412
fromMethod.addInterceptor(MySqlConnectionFactoryFromInterceptor.class);
415413
}
@@ -430,7 +428,7 @@ public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader,
430428
final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
431429
target.addField(DatabaseInfoAccessor.class);
432430

433-
final InstrumentMethod constructorMethod = target.getConstructor("dev.miku.r2dbc.mysql.client.Client", "dev.miku.r2dbc.mysql.ConnectionContext", "dev.miku.r2dbc.mysql.codec.Codecs", "io.r2dbc.spi.IsolationLevel", "java.lang.String", "java.util.function.Predicate");
431+
final InstrumentMethod constructorMethod = target.getConstructor("io.asyncer.r2dbc.mysql.client.Client", "io.asyncer.r2dbc.mysql.codec.Codecs", "io.asyncer.r2dbc.mysql.cache.QueryCache", "java.util.function.Predicate");
434432
if (constructorMethod != null) {
435433
constructorMethod.addInterceptor(MySqlConnectionConstructorInterceptor.class);
436434
}
@@ -483,7 +481,7 @@ public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader,
483481
final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
484482
target.addField(DatabaseInfoAccessor.class);
485483

486-
final InstrumentMethod constructorMethod = target.getConstructor("reactor.netty.Connection", "dev.miku.r2dbc.mysql.MySqlSslConfiguration", "dev.miku.r2dbc.mysql.ConnectionContext");
484+
final InstrumentMethod constructorMethod = target.getConstructor("reactor.netty.Connection", "io.asyncer.r2dbc.mysql.MySqlSslConfiguration", "io.asyncer.r2dbc.mysql.ConnectionContext");
487485
if (constructorMethod != null) {
488486
constructorMethod.addInterceptor(ReactorNettyClientConstructorInterceptor.class);
489487
}
@@ -492,22 +490,6 @@ public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader,
492490
}
493491
}
494492

495-
public static class QueryFlowTransform implements TransformCallback {
496-
497-
@Override
498-
public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws InstrumentException {
499-
final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
500-
target.addField(DatabaseInfoAccessor.class);
501-
502-
final InstrumentMethod loginMethod = target.getDeclaredMethod("login", "dev.miku.r2dbc.mysql.client.Client", "dev.miku.r2dbc.mysql.constant.SslMode", "java.lang.String", "java.lang.String", "java.lang.CharSequence", "dev.miku.r2dbc.mysql.ConnectionContext");
503-
if (loginMethod != null) {
504-
loginMethod.addInterceptor(QueryFlowLoginInterceptor.class);
505-
}
506-
507-
return target.toBytecode();
508-
}
509-
}
510-
511493
// jasync-sql
512494
public static class JasyncConfigurationTransform implements TransformCallback {
513495

0 commit comments

Comments
 (0)