From b2c6f7b6675a4afa82c70bba8124471042016525 Mon Sep 17 00:00:00 2001 From: ravinperera00 Date: Mon, 27 Jan 2025 15:38:23 +0530 Subject: [PATCH 1/5] [Automated] Update the toml files --- ballerina/Ballerina.toml | 40 ++++++++++++++++++------------------- ballerina/Dependencies.toml | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml index d16a0d21..02cb1cf9 100644 --- a/ballerina/Ballerina.toml +++ b/ballerina/Ballerina.toml @@ -2,106 +2,106 @@ distribution = "2201.7.0" org="ballerinax" name = "redis" -version = "3.0.3" +version = "3.1.0" authors = ["Ballerina"] keywords = ["IT Operations/Databases", "Cost/Freemium"] icon = "icon.png" repository = "https://github.com/ballerina-platform/module-ballerinax-redis" license = ["Apache-2.0"] -[platform.java17] +[platform.java21] graalvmCompatible = true -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.ballerina.lib" artifactId = "redis-native" module = "redis-native" -version="3.0.3-SNAPSHOT" -path = "../native/build/libs/redis-native-3.0.3-SNAPSHOT.jar" +version="3.1.0-SNAPSHOT" +path = "../native/build/libs/redis-native-3.1.0-SNAPSHOT.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.lettuce" artifactId = "lettuce-core" version = "6.3.1.RELEASE" -[[platform.java11.dependency]] +[[platform.java21.dependency]] groupId = "org.apache.commons" artifactId = "commons-pool2" version = "2.11.1" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "com.google.guava" artifactId = "guava" version = "32.0.0-jre" path = "./lib/guava-32.0.0-jre.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "commons-io" artifactId = "commons-io" version = "2.7" path = "./lib/commons-io-2.7.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-common" version = "4.1.104.Final" path = "./lib/netty-common-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-buffer" version = "4.1.104.Final" path = "./lib/netty-buffer-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport" version = "4.1.104.Final" path = "./lib/netty-transport-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-resolver" version = "4.1.104.Final" path = "./lib/netty-resolver-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-handler" version = "4.1.104.Final" path = "./lib/netty-handler-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport-native-kqueue" version = "4.1.104.Final" path = "./lib/netty-transport-native-kqueue-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport-native-epoll" version = "4.1.104.Final" path = "./lib/netty-transport-native-epoll-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-codec" version = "4.1.104.Final" path = "./lib/netty-codec-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport-native-unix-common" version = "4.1.104.Final" path = "./lib/netty-transport-native-unix-common-4.1.104.Final.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.projectreactor" artifactId = "reactor-core" version = "3.6.2" path = "./lib/reactor-core-3.6.2.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "org.reactivestreams" artifactId = "reactive-streams" version = "1.0.2" diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index e50a0d77..3aad45d3 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -5,7 +5,7 @@ [ballerina] dependencies-toml-version = "2" -distribution-version = "2201.8.0" +distribution-version = "2201.11.0-20241218-101200-109f6cc7" [[package]] org = "ballerina" @@ -128,7 +128,7 @@ dependencies = [ [[package]] org = "ballerinax" name = "redis" -version = "3.0.3" +version = "3.1.0" dependencies = [ {org = "ballerina", name = "crypto"}, {org = "ballerina", name = "jballerina.java"}, From 4a3d88efb1cdee7614f382f7a30726d068535779 Mon Sep 17 00:00:00 2001 From: ravinperera00 Date: Mon, 27 Jan 2025 15:38:37 +0530 Subject: [PATCH 2/5] Migrate to Java 21 and bump minor version --- .../workflows/build-with-bal-test-graalvm.yml | 63 +++---------------- README.md | 2 +- build-config/resources/Ballerina.toml | 34 +++++----- examples/cache-management/Ballerina.toml | 2 +- examples/rate-limiting/Ballerina.toml | 2 +- examples/session-management/Ballerina.toml | 2 +- gradle.properties | 6 +- native/build.gradle | 7 ++- .../lib/redis/utils/ConversionUtils.java | 2 +- 9 files changed, 37 insertions(+), 83 deletions(-) diff --git a/.github/workflows/build-with-bal-test-graalvm.yml b/.github/workflows/build-with-bal-test-graalvm.yml index 6fec3383..131f4114 100644 --- a/.github/workflows/build-with-bal-test-graalvm.yml +++ b/.github/workflows/build-with-bal-test-graalvm.yml @@ -5,64 +5,15 @@ on: - cron: "30 18 * * *" workflow_dispatch: pull_request: - types: [opened, synchronize, labeled] + types: [ opened, synchronize, labeled ] concurrency: - group: graalvm-check + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} cancel-in-progress: true jobs: - build: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'Skip GraalVM Check') - - steps: - - name: Checkout the Repository - uses: actions/checkout@v3 - - - name: Set Up Ballerina - uses: ballerina-platform/setup-ballerina@v1.1.0 - with: - version: latest - - - name: Set up GraalVM - uses: graalvm/setup-graalvm@v1 - with: - java-version: "17" - distribution: "graalvm-community" - set-java-home: true - github-token: ${{ secrets.GITHUB_TOKEN }} - - - name: Check GraalVM installation - run: | - echo "GRAALVM_HOME: ${{ env.GRAALVM_HOME }}" - echo "JAVA_HOME: ${{ env.JAVA_HOME }}" - native-image --version - - - name: Set ENV Variables - run: | - echo -e '${{ toJson(secrets) }}' | jq -r 'to_entries[] | .key + "=" + .value' >> $GITHUB_ENV - - - name: Build Package - run: ./gradlew build -x test - env: - packageUser: ${{ github.actor }} - packagePAT: ${{ secrets.GITHUB_TOKEN }} - - - name: Remove Target Directory - run: sudo rm -rf ballerina/target - - - name: Start Redis Server - run: | - cd ballerina/tests/resources/docker - docker compose -f compose-standalone.yml up -d - - - name: Test with GraalVM - run: | - cd ballerina - bal test --graalvm - - - name: Stop Redis Server - run: | - cd ballerina/tests/resources/docker - docker compose -f compose-standalone.yml down + call_stdlib_workflow: + name: Run StdLib Workflow + if: ${{ github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository_owner == 'ballerina-platform') }} + uses: ballerina-platform/ballerina-library/.github/workflows/build-with-bal-test-graalvm-connector-template.yml@main + secrets: inherit \ No newline at end of file diff --git a/README.md b/README.md index 7c3b5216..519273dc 100644 --- a/README.md +++ b/README.md @@ -127,7 +127,7 @@ This repository only contains the source code for the package. ### Prerequisites -1. Download and install Java SE Development Kit (JDK) version 17. You can download it from either of the following sources: +1. Download and install Java SE Development Kit (JDK) version 21. You can download it from either of the following sources: * [Oracle JDK](https://www.oracle.com/java/technologies/downloads/) * [OpenJDK](https://adoptium.net/) diff --git a/build-config/resources/Ballerina.toml b/build-config/resources/Ballerina.toml index 9cfee3b0..c2dcd688 100644 --- a/build-config/resources/Ballerina.toml +++ b/build-config/resources/Ballerina.toml @@ -9,99 +9,99 @@ icon = "icon.png" repository = "https://github.com/ballerina-platform/module-ballerinax-redis" license = ["Apache-2.0"] -[platform.java17] +[platform.java21] graalvmCompatible = true -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.ballerina.lib" artifactId = "redis-native" module = "redis-native" version="@project.version@" path = "../native/build/libs/redis-native-@project.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.lettuce" artifactId = "lettuce-core" version = "@lettuce.version@" -[[platform.java11.dependency]] +[[platform.java21.dependency]] groupId = "org.apache.commons" artifactId = "commons-pool2" version = "@commons.pool2.version@" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "com.google.guava" artifactId = "guava" version = "@guava.version@" path = "./lib/guava-@guava.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "commons-io" artifactId = "commons-io" version = "@commons.io.version@" path = "./lib/commons-io-@commons.io.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-common" version = "@netty.version@" path = "./lib/netty-common-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-buffer" version = "@netty.version@" path = "./lib/netty-buffer-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport" version = "@netty.version@" path = "./lib/netty-transport-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-resolver" version = "@netty.version@" path = "./lib/netty-resolver-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-handler" version = "@netty.version@" path = "./lib/netty-handler-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport-native-kqueue" version = "@netty.version@" path = "./lib/netty-transport-native-kqueue-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport-native-epoll" version = "@netty.version@" path = "./lib/netty-transport-native-epoll-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-codec" version = "@netty.version@" path = "./lib/netty-codec-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.netty" artifactId = "netty-transport-native-unix-common" version = "@netty.version@" path = "./lib/netty-transport-native-unix-common-@netty.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "io.projectreactor" artifactId = "reactor-core" version = "@reactor-core.version@" path = "./lib/reactor-core-@reactor-core.version@.jar" -[[platform.java17.dependency]] +[[platform.java21.dependency]] groupId = "org.reactivestreams" artifactId = "reactive-streams" version = "@reactive-streams.version@" diff --git a/examples/cache-management/Ballerina.toml b/examples/cache-management/Ballerina.toml index 32a92001..537ed368 100644 --- a/examples/cache-management/Ballerina.toml +++ b/examples/cache-management/Ballerina.toml @@ -2,7 +2,7 @@ org = "nino" name = "cache_management" version = "0.1.0" -distribution = "2201.8.3" +distribution = "2201.11.0-20241218-101200-109f6cc7" [build-options] observabilityIncluded = true diff --git a/examples/rate-limiting/Ballerina.toml b/examples/rate-limiting/Ballerina.toml index 2bfdcaca..5be63902 100644 --- a/examples/rate-limiting/Ballerina.toml +++ b/examples/rate-limiting/Ballerina.toml @@ -2,7 +2,7 @@ org = "nino" name = "rate_limiting" version = "0.1.0" -distribution = "2201.8.3" +distribution = "2201.11.0-20241218-101200-109f6cc7" [build-options] observabilityIncluded = true diff --git a/examples/session-management/Ballerina.toml b/examples/session-management/Ballerina.toml index 43aab918..1ea55cf8 100644 --- a/examples/session-management/Ballerina.toml +++ b/examples/session-management/Ballerina.toml @@ -2,7 +2,7 @@ org = "nino" name = "session_management" version = "0.1.0" -distribution = "2201.8.3" +distribution = "2201.11.0-20241218-101200-109f6cc7" [build-options] observabilityIncluded = true diff --git a/gradle.properties b/gradle.properties index fcfb3b40..8f4a4ddf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ org.gradle.caching=true group=io.ballerina.lib.redis -version=3.0.3-SNAPSHOT -ballerinaLangVersion=2201.8.0 +version=3.1.0-SNAPSHOT +ballerinaLangVersion=2201.11.0-20241218-101200-109f6cc7 checkstylePluginVersion=10.12.1 -spotbugsPluginVersion=5.0.14 +spotbugsPluginVersion=6.0.18 shadowJarPluginVersion=8.1.1 downloadPluginVersion=5.4.0 releasePluginVersion=2.8.0 diff --git a/native/build.gradle b/native/build.gradle index c5a85091..20044343 100644 --- a/native/build.gradle +++ b/native/build.gradle @@ -60,9 +60,12 @@ test { } spotbugsMain { + def classLoader = plugins["com.github.spotbugs"].class.classLoader + def SpotBugsConfidence = classLoader.findLoadedClass("com.github.spotbugs.snom.Confidence") + def SpotBugsEffort = classLoader.findLoadedClass("com.github.spotbugs.snom.Effort") + effort = SpotBugsEffort.MAX + reportLevel = SpotBugsConfidence.LOW ignoreFailures = true - effort = "max" - reportLevel = "low" reportsDir = file("$project.buildDir/reports/spotbugs") def excludeFile = file("${rootDir}/build-config/spotbugs-exclude.xml") if (excludeFile.exists()) { diff --git a/native/src/main/java/io/ballerina/lib/redis/utils/ConversionUtils.java b/native/src/main/java/io/ballerina/lib/redis/utils/ConversionUtils.java index 2cf55e0b..bd555dcc 100644 --- a/native/src/main/java/io/ballerina/lib/redis/utils/ConversionUtils.java +++ b/native/src/main/java/io/ballerina/lib/redis/utils/ConversionUtils.java @@ -18,10 +18,10 @@ package io.ballerina.lib.redis.utils; -import io.ballerina.runtime.api.PredefinedTypes; import io.ballerina.runtime.api.creators.ErrorCreator; import io.ballerina.runtime.api.creators.TypeCreator; import io.ballerina.runtime.api.creators.ValueCreator; +import io.ballerina.runtime.api.types.PredefinedTypes; import io.ballerina.runtime.api.utils.StringUtils; import io.ballerina.runtime.api.values.BArray; import io.ballerina.runtime.api.values.BError; From 3f045713c36c442aa6c0b1c05b1d9da6ea550880 Mon Sep 17 00:00:00 2001 From: ravinperera00 Date: Mon, 27 Jan 2025 15:44:42 +0530 Subject: [PATCH 3/5] Update stdlib versions --- ballerina/Dependencies.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index 3aad45d3..415e816f 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -10,7 +10,7 @@ distribution-version = "2201.11.0-20241218-101200-109f6cc7" [[package]] org = "ballerina" name = "crypto" -version = "2.6.2" +version = "2.8.0" dependencies = [ {org = "ballerina", name = "jballerina.java"}, {org = "ballerina", name = "time"} @@ -22,7 +22,7 @@ modules = [ [[package]] org = "ballerina" name = "io" -version = "1.6.0" +version = "1.7.0" scope = "testOnly" dependencies = [ {org = "ballerina", name = "jballerina.java"}, @@ -70,7 +70,7 @@ dependencies = [ [[package]] org = "ballerina" name = "log" -version = "2.9.0" +version = "2.11.0" scope = "testOnly" dependencies = [ {org = "ballerina", name = "io"}, @@ -85,7 +85,7 @@ modules = [ [[package]] org = "ballerina" name = "observe" -version = "1.2.3" +version = "1.4.0" scope = "testOnly" dependencies = [ {org = "ballerina", name = "jballerina.java"} @@ -94,7 +94,7 @@ dependencies = [ [[package]] org = "ballerina" name = "os" -version = "1.8.0" +version = "1.9.0" scope = "testOnly" dependencies = [ {org = "ballerina", name = "io"}, @@ -120,7 +120,7 @@ modules = [ [[package]] org = "ballerina" name = "time" -version = "2.4.0" +version = "2.6.0" dependencies = [ {org = "ballerina", name = "jballerina.java"} ] From 13613da6ae3aad26fa1fdc0d1ae7ebb3660abee0 Mon Sep 17 00:00:00 2001 From: ravinperera00 Date: Thu, 30 Jan 2025 12:21:38 +0530 Subject: [PATCH 4/5] Revert build-with-bal-test-graalvm change --- .../workflows/build-with-bal-test-graalvm.yml | 63 ++++++++++++++++--- ballerina/build.gradle | 2 +- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-with-bal-test-graalvm.yml b/.github/workflows/build-with-bal-test-graalvm.yml index 131f4114..735608f6 100644 --- a/.github/workflows/build-with-bal-test-graalvm.yml +++ b/.github/workflows/build-with-bal-test-graalvm.yml @@ -5,15 +5,64 @@ on: - cron: "30 18 * * *" workflow_dispatch: pull_request: - types: [ opened, synchronize, labeled ] + types: [opened, synchronize, labeled] concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} + group: graalvm-check cancel-in-progress: true jobs: - call_stdlib_workflow: - name: Run StdLib Workflow - if: ${{ github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository_owner == 'ballerina-platform') }} - uses: ballerina-platform/ballerina-library/.github/workflows/build-with-bal-test-graalvm-connector-template.yml@main - secrets: inherit \ No newline at end of file + build: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'Skip GraalVM Check') + + steps: + - name: Checkout the Repository + uses: actions/checkout@v3 + + - name: Set Up Ballerina + uses: ballerina-platform/setup-ballerina@v1.1.3 + with: + version: latest + + - name: Set up GraalVM + uses: graalvm/setup-graalvm@v1 + with: + java-version: "21" + distribution: "graalvm-community" + set-java-home: true + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Check GraalVM installation + run: | + echo "GRAALVM_HOME: ${{ env.GRAALVM_HOME }}" + echo "JAVA_HOME: ${{ env.JAVA_HOME }}" + native-image --version + + - name: Set ENV Variables + run: | + echo -e '${{ toJson(secrets) }}' | jq -r 'to_entries[] | .key + "=" + .value' >> $GITHUB_ENV + + - name: Build Package + run: ./gradlew build -x test + env: + packageUser: ${{ github.actor }} + packagePAT: ${{ secrets.GITHUB_TOKEN }} + + - name: Remove Target Directory + run: sudo rm -rf ballerina/target + + - name: Start Redis Server + run: | + cd ballerina/tests/resources/docker + docker compose -f compose-standalone.yml up -d + + - name: Test with GraalVM + run: | + cd ballerina + bal test --graalvm + + - name: Stop Redis Server + run: | + cd ballerina/tests/resources/docker + docker compose -f compose-standalone.yml down diff --git a/ballerina/build.gradle b/ballerina/build.gradle index 52d8e39b..90ac7575 100644 --- a/ballerina/build.gradle +++ b/ballerina/build.gradle @@ -49,7 +49,7 @@ ballerina { module = packageName testCoverageParam = "--code-coverage --coverage-format=xml" isConnector = true - platform = "java17" + platform = "java21" } configurations { From b2d343968356fe49bc5e449b0005e5f1433e6d3e Mon Sep 17 00:00:00 2001 From: ravinperera00 Date: Thu, 30 Jan 2025 13:01:14 +0530 Subject: [PATCH 5/5] Update to nightly --- .github/workflows/build-with-bal-test-graalvm.yml | 2 +- ballerina/Ballerina.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-with-bal-test-graalvm.yml b/.github/workflows/build-with-bal-test-graalvm.yml index 735608f6..845a13db 100644 --- a/.github/workflows/build-with-bal-test-graalvm.yml +++ b/.github/workflows/build-with-bal-test-graalvm.yml @@ -23,7 +23,7 @@ jobs: - name: Set Up Ballerina uses: ballerina-platform/setup-ballerina@v1.1.3 with: - version: latest + version: nightly - name: Set up GraalVM uses: graalvm/setup-graalvm@v1 diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml index 02cb1cf9..6ff99a40 100644 --- a/ballerina/Ballerina.toml +++ b/ballerina/Ballerina.toml @@ -1,5 +1,5 @@ [package] -distribution = "2201.7.0" +distribution = "2201.11.0-20241218-101200-109f6cc7" org="ballerinax" name = "redis" version = "3.1.0"