From c7ebc57929ed4e10af0d1babc87cd2a0961eb71b Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Mon, 19 Jun 2023 16:04:29 +0530 Subject: [PATCH] fixes issue with logging memory leak (#726) Co-authored-by: rishabhpoddar --- src/main/java/io/supertokens/output/Logging.java | 9 +++++++-- .../java/io/supertokens/test/multitenant/LoadTest.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/supertokens/output/Logging.java b/src/main/java/io/supertokens/output/Logging.java index 15f2dead3..6c5c8ea92 100644 --- a/src/main/java/io/supertokens/output/Logging.java +++ b/src/main/java/io/supertokens/output/Logging.java @@ -24,10 +24,10 @@ import io.supertokens.Main; import io.supertokens.ResourceDistributor; import io.supertokens.config.Config; -import io.supertokens.pluginInterface.multitenancy.exceptions.TenantOrAppNotFoundException; import io.supertokens.pluginInterface.LOG_LEVEL; import io.supertokens.pluginInterface.Storage; import io.supertokens.pluginInterface.multitenancy.TenantIdentifier; +import io.supertokens.pluginInterface.multitenancy.exceptions.TenantOrAppNotFoundException; import io.supertokens.storageLayer.StorageLayer; import io.supertokens.utils.Utils; import io.supertokens.webserver.Webserver; @@ -174,7 +174,8 @@ public static void error(Main main, TenantIdentifier tenantIdentifier, String er } } - public static void error(Main main, TenantIdentifier tenantIdentifier, String message, boolean toConsoleAsWell, Exception e) { + public static void error(Main main, TenantIdentifier tenantIdentifier, String message, boolean toConsoleAsWell, + Exception e) { try { if (!Config.getConfig(new TenantIdentifier(null, null, null), main).getLogLevels(main) .contains(LOG_LEVEL.ERROR)) { @@ -220,6 +221,10 @@ public static void stopLogging(Main main) { if (getInstance(main) == null) { return; } + getInstance(main).infoLogger.getLoggerContext().stop(); + getInstance(main).errorLogger.getLoggerContext().stop(); + getInstance(main).infoLogger.getLoggerContext().getStatusManager().clear(); + getInstance(main).errorLogger.getLoggerContext().getStatusManager().clear(); getInstance(main).infoLogger.detachAndStopAllAppenders(); getInstance(main).errorLogger.detachAndStopAllAppenders(); Webserver.getInstance(main).closeLogger(); diff --git a/src/test/java/io/supertokens/test/multitenant/LoadTest.java b/src/test/java/io/supertokens/test/multitenant/LoadTest.java index 0dedf54e1..fd321e9f6 100644 --- a/src/test/java/io/supertokens/test/multitenant/LoadTest.java +++ b/src/test/java/io/supertokens/test/multitenant/LoadTest.java @@ -56,7 +56,7 @@ public void beforeEach() { } @Test - public void testCreating100StorageLayersUsage() + public void testCreating100TenantsAndCheckOnlyOneInstanceOfStorageLayerIsCreated() throws InterruptedException { String[] args = {"../"};