2525import io .asyncer .r2dbc .mysql .client .Client ;
2626import io .asyncer .r2dbc .mysql .codec .Codecs ;
2727import io .asyncer .r2dbc .mysql .internal .util .StringUtils ;
28- import io .asyncer .r2dbc .mysql .message .client .PingMessage ;
2928import io .asyncer .r2dbc .mysql .message .server .CompleteMessage ;
3029import io .asyncer .r2dbc .mysql .message .server .ErrorMessage ;
3130import io .asyncer .r2dbc .mysql .message .server .ServerMessage ;
3837import io .r2dbc .spi .ValidationDepth ;
3938import org .jetbrains .annotations .Nullable ;
4039import org .jetbrains .annotations .TestOnly ;
41- import reactor .core .publisher .Flux ;
4240import reactor .core .publisher .Mono ;
43- import reactor .core .publisher .SynchronousSink ;
4441
4542import java .time .Duration ;
46- import java .util .function .BiConsumer ;
4743import java .util .function .Function ;
4844import java .util .function .Predicate ;
4945
@@ -66,27 +62,14 @@ final class MySqlSimpleConnection implements MySqlConnection {
6662
6763 if (message instanceof ErrorMessage ) {
6864 ErrorMessage msg = (ErrorMessage ) message ;
69- logger .debug ("Remote validate failed: [{}] [{}] {}" , msg .getCode (), msg .getSqlState (),
70- msg .getMessage ());
65+ logger .debug ("Remote validate failed: [{}] [{}] {}" , msg .getCode (), msg .getSqlState (), msg .getMessage ());
7166 } else {
7267 ReferenceCountUtil .safeRelease (message );
7368 }
7469
7570 return false ;
7671 };
7772
78- private static final BiConsumer <ServerMessage , SynchronousSink <ServerMessage >> PING = (message , sink ) -> {
79- if (message instanceof ErrorMessage ) {
80- sink .next (message );
81- sink .complete ();
82- } else if (message instanceof CompleteMessage && ((CompleteMessage ) message ).isDone ()) {
83- sink .next (message );
84- sink .complete ();
85- } else {
86- ReferenceCountUtil .safeRelease (message );
87- }
88- };
89-
9073 private final Client client ;
9174
9275 private final Codecs codecs ;
@@ -266,9 +249,9 @@ public Mono<Boolean> validate(ValidationDepth depth) {
266249 return Mono .just (false );
267250 }
268251
269- return doPingInternal (client )
270- .last ()
252+ return QueryFlow .ping (client )
271253 .map (VALIDATE )
254+ .last ()
272255 .onErrorResume (e -> {
273256 // `last` maybe emit a NoSuchElementException, exchange maybe emit exception by Netty.
274257 // But should NEVER emit any exception, so logging exception and emit false.
@@ -334,8 +317,4 @@ public Mono<Void> setStatementTimeout(Duration timeout) {
334317 ConnectionContext context () {
335318 return client .getContext ();
336319 }
337-
338- static Flux <ServerMessage > doPingInternal (Client client ) {
339- return client .exchange (PingMessage .INSTANCE , PING );
340- }
341320}
0 commit comments