From 0abb78d7e41c31bb231b45a218222088a582192b Mon Sep 17 00:00:00 2001 From: jchrys Date: Sun, 4 Jun 2023 04:41:57 +0900 Subject: [PATCH] Apply lazy load on MySqlAuthProvider instances Motivation: Better load singleton instances when we really need it. Modifications: Apply Lazy Load on AuthProviders. Results: Less memory footprint. --- .../mysql/authentication/CachingSha2FastAuthProvider.java | 2 +- .../mysql/authentication/CachingSha2FullAuthProvider.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FastAuthProvider.java b/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FastAuthProvider.java index ef52bd811..bf6919701 100644 --- a/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FastAuthProvider.java +++ b/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FastAuthProvider.java @@ -61,7 +61,7 @@ public byte[] authentication(@Nullable CharSequence password, byte[] salt, CharC @Override public MySqlAuthProvider next() { - return CachingSha2FullAuthProvider.INSTANCE; + return CachingSha2FullAuthProvider.getInstance(); } @Override diff --git a/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FullAuthProvider.java b/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FullAuthProvider.java index 5bc5debf8..e00cf8292 100644 --- a/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FullAuthProvider.java +++ b/src/main/java/io/asyncer/r2dbc/mysql/authentication/CachingSha2FullAuthProvider.java @@ -30,7 +30,9 @@ */ final class CachingSha2FullAuthProvider implements MySqlAuthProvider { - static final CachingSha2FullAuthProvider INSTANCE = new CachingSha2FullAuthProvider(); + static CachingSha2FullAuthProvider getInstance() { + return LazyHolder.INSTANCE; + } @Override public boolean isSslNecessary() { @@ -60,4 +62,8 @@ public String getType() { } private CachingSha2FullAuthProvider() { } + + private static class LazyHolder { + private static final CachingSha2FullAuthProvider INSTANCE = new CachingSha2FullAuthProvider(); + } }