From bd9b7543567cfcc2895d8bb3e1b2d8bdfae8c55d Mon Sep 17 00:00:00 2001 From: MohamedSabthar Date: Tue, 29 Oct 2024 11:05:12 +0530 Subject: [PATCH 1/7] Improve query performance --- .../sql/datasource/SQLWorkerThreadPool.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/native/src/main/java/io/ballerina/stdlib/sql/datasource/SQLWorkerThreadPool.java b/native/src/main/java/io/ballerina/stdlib/sql/datasource/SQLWorkerThreadPool.java index e1443075..4eb40c84 100644 --- a/native/src/main/java/io/ballerina/stdlib/sql/datasource/SQLWorkerThreadPool.java +++ b/native/src/main/java/io/ballerina/stdlib/sql/datasource/SQLWorkerThreadPool.java @@ -20,6 +20,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -41,7 +42,8 @@ private SQLWorkerThreadPool() { // This is similar to cachedThreadPool util from Executors.newCachedThreadPool(..); but with upper cap on threads public static final ExecutorService SQL_EXECUTOR_SERVICE = new ThreadPoolExecutor(0, MAX_POOL_SIZE, - 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new SQLThreadFactory()); + 60L, TimeUnit.SECONDS, new BlockingTaskQueue(), new SQLThreadFactory(), + new RetryTaskRejectionPolicy()); static class SQLThreadFactory implements ThreadFactory { @Override @@ -51,4 +53,32 @@ public Thread newThread(Runnable r) { return ballerinaSql; } } + + + static class BlockingTaskQueue extends LinkedBlockingQueue { + private static final long serialVersionUID = 1L; + + @Override + public boolean offer(Runnable task) { + // By returning false, we signal the ThreadPoolExecutor to bypass this queue and attempt to + // spawn a new thread if it hasn't reached the maximum pool size. This approach favors creating + // new threads over queuing tasks, thereby enabling more aggressive parallelism. + return false; + } + + public void retryTask(Runnable task) { + if (!super.offer(task)) { + throw new IllegalStateException("Failed to requeue task: " + task); + } + } + } + + static class RetryTaskRejectionPolicy implements RejectedExecutionHandler { + @Override + public void rejectedExecution(Runnable task, ThreadPoolExecutor executor) { + if (executor.getQueue() instanceof BlockingTaskQueue cbq) { + cbq.retryTask(task); + } + } + } } From 16c56c677abb5f2827d21bd2b75fddc3c09168f8 Mon Sep 17 00:00:00 2001 From: Sumudu Nissanka Date: Wed, 6 Nov 2024 19:35:24 +0530 Subject: [PATCH 2/7] Update gradle.properties --- gradle.properties | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8d15e091..80bbc762 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ researchgateReleaseVersion=2.8.0 testngVersion=7.6.1 ballerinaGradlePluginVersion=2.0.1 -ballerinaLangVersion=2201.10.0 +ballerinaLangVersion=2201.11.0-20241008-112400-81975006 # Direct Dependencies # Level 01 @@ -48,11 +48,12 @@ stdlibUuidVersion=1.8.0 # Level 04 stdlibAuthVersion=2.12.0 +stdlibDataJsonDataVersion=0.3.0-20241105-101100-661d11f stdlibJwtVersion=2.13.0 stdlibOAuth2Version=2.12.0 # Level 05 -stdlibHttpVersion=2.12.0 +stdlibHttpVersion=2.13.0-20241106-120000-d375c3b # Level 06 stdlibTransactionVersion=1.10.0 From ac57af457d5a92a2982bd44b2bc3d8f05fcc75eb Mon Sep 17 00:00:00 2001 From: Sumudu Nissanka Date: Wed, 6 Nov 2024 19:35:55 +0530 Subject: [PATCH 3/7] Update Ballerina.toml --- build-config/resources/Ballerina.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-config/resources/Ballerina.toml b/build-config/resources/Ballerina.toml index 63cfb32d..69dcaee3 100644 --- a/build-config/resources/Ballerina.toml +++ b/build-config/resources/Ballerina.toml @@ -7,7 +7,7 @@ keywords = ["database", "client", "network", "SQL", "RDBMS"] repository = "https://github.com/ballerina-platform/module-ballerina-sql" icon = "icon.png" license = ["Apache-2.0"] -distribution = "2201.10.0" +distribution = "2201.11.0" [platform.java17] graalvmCompatible = true From 558020e53141cf7552013a525ff3ebe769cd0b98 Mon Sep 17 00:00:00 2001 From: Sumudu Nissanka Date: Wed, 6 Nov 2024 19:36:35 +0530 Subject: [PATCH 4/7] Update build.gradle --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 463fef58..e8e20c07 100644 --- a/build.gradle +++ b/build.gradle @@ -87,6 +87,7 @@ subprojects { ballerinaStdLibs "io.ballerina.stdlib:http-ballerina:${stdlibHttpVersion}" ballerinaStdLibs "io.ballerina.stdlib:observe-ballerina:${observeVersion}" ballerinaStdLibs "io.ballerina:observe-ballerina:${observeInternalVersion}" + ballerinaStdLibs "io.ballerina.lib:data.jsondata-ballerina:${stdlibDataJsonDataVersion}" externalJars (group: 'com.zaxxer', name: 'HikariCP', version: "${hikkariLibVersion}") { transitive = false From 460faf8bb029bf7d2955edb03775fa97a8deea07 Mon Sep 17 00:00:00 2001 From: Sumudu Nissanka Date: Thu, 7 Nov 2024 13:47:22 +0530 Subject: [PATCH 5/7] Update gradle.properties with next minor version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 80bbc762..04407c58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=io.ballerina.stdlib -version=1.14.2-SNAPSHOT +version=1.15.0-SNAPSHOT puppycrawlCheckstyleVersion=10.12.1 hikkariLibVersion=3.3.1 From 100d3d9f17a6afd6c1b2a34b6befb20dd5df6ec4 Mon Sep 17 00:00:00 2001 From: Gimantha Bandara Date: Tue, 12 Nov 2024 17:34:38 +0530 Subject: [PATCH 6/7] Update gradle.properties --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 04407c58..af4c9e7b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ researchgateReleaseVersion=2.8.0 testngVersion=7.6.1 ballerinaGradlePluginVersion=2.0.1 -ballerinaLangVersion=2201.11.0-20241008-112400-81975006 +ballerinaLangVersion=2201.11.0-20241112-150200-c9ee85f3 # Direct Dependencies # Level 01 @@ -56,4 +56,4 @@ stdlibOAuth2Version=2.12.0 stdlibHttpVersion=2.13.0-20241106-120000-d375c3b # Level 06 -stdlibTransactionVersion=1.10.0 +stdlibTransactionVersion=1.10.1-20241111-173000-7b2f40c From 625d1acaa9d1bf17e0b7d04f8d74ddcc8064311b Mon Sep 17 00:00:00 2001 From: Gimantha Bandara Date: Wed, 13 Nov 2024 09:45:48 +0530 Subject: [PATCH 7/7] Revert "Update gradle.properties" --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index af4c9e7b..04407c58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ researchgateReleaseVersion=2.8.0 testngVersion=7.6.1 ballerinaGradlePluginVersion=2.0.1 -ballerinaLangVersion=2201.11.0-20241112-150200-c9ee85f3 +ballerinaLangVersion=2201.11.0-20241008-112400-81975006 # Direct Dependencies # Level 01 @@ -56,4 +56,4 @@ stdlibOAuth2Version=2.12.0 stdlibHttpVersion=2.13.0-20241106-120000-d375c3b # Level 06 -stdlibTransactionVersion=1.10.1-20241111-173000-7b2f40c +stdlibTransactionVersion=1.10.0