From dad9f6a119df02c9ff8d0db5dc83bfa236d94689 Mon Sep 17 00:00:00 2001 From: David Engel Date: Wed, 4 Aug 2021 10:47:35 -0700 Subject: [PATCH] Fix memory leak --- .../sqlserver/jdbc/SQLServerConnection.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java index e7194af6b8..ef7b3a839e 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java @@ -846,7 +846,7 @@ public void setDelayLoadingLobs(boolean b) { */ public static synchronized void registerColumnEncryptionKeyStoreProviders( Map clientKeyStoreProviders) throws SQLServerException { - loggerExternal.entering(loggingClassName, "registerColumnEncryptionKeyStoreProviders", + loggerExternal.entering(loggingClassNameBase, "registerColumnEncryptionKeyStoreProviders", "Registering Column Encryption Key Store Providers"); if (null == clientKeyStoreProviders) { @@ -883,7 +883,7 @@ public static synchronized void registerColumnEncryptionKeyStoreProviders( globalCustomColumnEncryptionKeyStoreProviders.put(entry.getKey(), entry.getValue()); } - loggerExternal.exiting(loggingClassName, "registerColumnEncryptionKeyStoreProviders", + loggerExternal.exiting(loggingClassNameBase, "registerColumnEncryptionKeyStoreProviders", "Number of Key store providers that are registered:" + globalCustomColumnEncryptionKeyStoreProviders.size()); } @@ -893,7 +893,7 @@ public static synchronized void registerColumnEncryptionKeyStoreProviders( * the map and setting it to null. */ public static synchronized void unregisterColumnEncryptionKeyStoreProviders() { - loggerExternal.entering(loggingClassName, "unregisterColumnEncryptionKeyStoreProviders", + loggerExternal.entering(loggingClassNameBase, "unregisterColumnEncryptionKeyStoreProviders", "Removing Column Encryption Key Store Provider"); if (null != globalCustomColumnEncryptionKeyStoreProviders) { @@ -901,7 +901,7 @@ public static synchronized void unregisterColumnEncryptionKeyStoreProviders() { globalCustomColumnEncryptionKeyStoreProviders = null; } - loggerExternal.exiting(loggingClassName, "unregisterColumnEncryptionKeyStoreProviders", + loggerExternal.exiting(loggingClassNameBase, "unregisterColumnEncryptionKeyStoreProviders", "Number of Key store providers that are registered: 0"); } @@ -978,7 +978,7 @@ synchronized SQLServerColumnEncryptionKeyStoreProvider getColumnEncryptionKeySto */ public static synchronized void setColumnEncryptionTrustedMasterKeyPaths( Map> trustedKeyPaths) { - loggerExternal.entering(loggingClassName, "setColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.entering(loggingClassNameBase, "setColumnEncryptionTrustedMasterKeyPaths", "Setting Trusted Master Key Paths"); // Use upper case for server and instance names. @@ -987,7 +987,7 @@ public static synchronized void setColumnEncryptionTrustedMasterKeyPaths( columnEncryptionTrustedMasterKeyPaths.put(entry.getKey().toUpperCase(), entry.getValue()); } - loggerExternal.exiting(loggingClassName, "setColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.exiting(loggingClassNameBase, "setColumnEncryptionTrustedMasterKeyPaths", "Number of Trusted Master Key Paths: " + columnEncryptionTrustedMasterKeyPaths.size()); } @@ -1001,13 +1001,13 @@ public static synchronized void setColumnEncryptionTrustedMasterKeyPaths( */ public static synchronized void updateColumnEncryptionTrustedMasterKeyPaths(String server, List trustedKeyPaths) { - loggerExternal.entering(loggingClassName, "updateColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.entering(loggingClassNameBase, "updateColumnEncryptionTrustedMasterKeyPaths", "Updating Trusted Master Key Paths"); // Use upper case for server and instance names. columnEncryptionTrustedMasterKeyPaths.put(server.toUpperCase(), trustedKeyPaths); - loggerExternal.exiting(loggingClassName, "updateColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.exiting(loggingClassNameBase, "updateColumnEncryptionTrustedMasterKeyPaths", "Number of Trusted Master Key Paths: " + columnEncryptionTrustedMasterKeyPaths.size()); } @@ -1018,13 +1018,13 @@ public static synchronized void updateColumnEncryptionTrustedMasterKeyPaths(Stri * String server name */ public static synchronized void removeColumnEncryptionTrustedMasterKeyPaths(String server) { - loggerExternal.entering(loggingClassName, "removeColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.entering(loggingClassNameBase, "removeColumnEncryptionTrustedMasterKeyPaths", "Removing Trusted Master Key Paths"); // Use upper case for server and instance names. columnEncryptionTrustedMasterKeyPaths.remove(server.toUpperCase()); - loggerExternal.exiting(loggingClassName, "removeColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.exiting(loggingClassNameBase, "removeColumnEncryptionTrustedMasterKeyPaths", "Number of Trusted Master Key Paths: " + columnEncryptionTrustedMasterKeyPaths.size()); } @@ -1034,7 +1034,7 @@ public static synchronized void removeColumnEncryptionTrustedMasterKeyPaths(Stri * @return columnEncryptionTrustedMasterKeyPaths. */ public static synchronized Map> getColumnEncryptionTrustedMasterKeyPaths() { - loggerExternal.entering(loggingClassName, "getColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.entering(loggingClassNameBase, "getColumnEncryptionTrustedMasterKeyPaths", "Getting Trusted Master Key Paths"); Map> masterKeyPathCopy = new HashMap<>(); @@ -1043,7 +1043,7 @@ public static synchronized Map> getColumnEncryptionTrustedM masterKeyPathCopy.put(entry.getKey(), entry.getValue()); } - loggerExternal.exiting(loggingClassName, "getColumnEncryptionTrustedMasterKeyPaths", + loggerExternal.exiting(loggingClassNameBase, "getColumnEncryptionTrustedMasterKeyPaths", "Number of Trusted Master Key Paths: " + masterKeyPathCopy.size()); return masterKeyPathCopy; @@ -1214,7 +1214,8 @@ final SQLCollation getDatabaseCollation() { .getLogger("com.microsoft.sqlserver.jdbc.internals.SQLServerConnection"); static final private java.util.logging.Logger loggerExternal = java.util.logging.Logger .getLogger("com.microsoft.sqlserver.jdbc.Connection"); - private static String loggingClassName = "com.microsoft.sqlserver.jdbc.SQLServerConnection:"; + private static String loggingClassNameBase = "com.microsoft.sqlserver.jdbc.SQLServerConnection"; + private String loggingClassName = loggingClassNameBase; /** * There are three ways to get a failover partner connection string, from the failover map, the connecting server @@ -1297,7 +1298,7 @@ final boolean attachConnId() { SQLServerConnection(String parentInfo) throws SQLServerException { int connectionID = nextConnectionID(); // sequential connection id traceID = "ConnectionID:" + connectionID; - loggingClassName += connectionID; + loggingClassName += ":" + connectionID; if (connectionlogger.isLoggable(Level.FINE)) connectionlogger.fine(toString() + " created by (" + parentInfo + ")"); initResettableValues();