From 7f52a50ee6ceccde8dfefe1f2f44077313fbc8ae Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 15:55:39 +0800 Subject: [PATCH 01/26] adjust release --- .github/workflows/arklet_release.yml | 29 +++++- .../workflows/serverless_runtime_snapshot.yml | 29 +++++- sofa-serverless-runtime/pom.xml | 88 ++++++++++++++----- .../sofa-serverless-base-starter/pom.xml | 1 - 4 files changed, 118 insertions(+), 29 deletions(-) diff --git a/.github/workflows/arklet_release.yml b/.github/workflows/arklet_release.yml index 3bce83201..0431a39e2 100644 --- a/.github/workflows/arklet_release.yml +++ b/.github/workflows/arklet_release.yml @@ -23,8 +23,8 @@ jobs: - name: Build with Maven working-directory: sofa-serverless-runtime run: mvn clean install -DskipTests -B -U -e && sh ./check_format.sh - release: - needs: build + release_for_jdk8: + # needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -40,8 +40,29 @@ jobs: gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven - run: mvn --batch-mode deploy -DskipTests -Prelease - working-directory: sofa-serverless-runtime + run: mvn --batch-mode deploy -DskipTests -Prelease,8-release + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + release_for_jdk17: + # needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import + gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase + - name: Build with Maven + run: mvn --batch-mode deploy -DskipTests -Prelease,17-release env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} diff --git a/.github/workflows/serverless_runtime_snapshot.yml b/.github/workflows/serverless_runtime_snapshot.yml index 6226a097b..6273fd3ac 100644 --- a/.github/workflows/serverless_runtime_snapshot.yml +++ b/.github/workflows/serverless_runtime_snapshot.yml @@ -23,8 +23,30 @@ jobs: - name: Build with Maven working-directory: sofa-serverless-runtime run: mvn clean install -DskipTests -B -U -e && sh ./check_format.sh - release: - needs: build + release_for_jdk8: + # needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + java-version: '8' + distribution: 'temurin' + cache: maven + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import + gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase + - name: Build with Maven + run: mvn --batch-mode deploy -DskipTests -Psnapshot,8-snapshot + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + release_for_jdk17: + # needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -40,8 +62,7 @@ jobs: gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven - run: mvn --batch-mode deploy -DskipTests -Psnapshot,jakarta-snapshot - working-directory: sofa-serverless-runtime + run: mvn --batch-mode deploy -DskipTests -Psnapshot,17-snapshot env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} diff --git a/sofa-serverless-runtime/pom.xml b/sofa-serverless-runtime/pom.xml index 57c628588..9092074b6 100644 --- a/sofa-serverless-runtime/pom.xml +++ b/sofa-serverless-runtime/pom.xml @@ -11,12 +11,9 @@ 2.2.4 - 2.2.4-SNAPSHOT 0.5.2 UTF-8 UTF-8 @@ -156,9 +153,24 @@ com.alipay.sofa - sofa-ark-springboot-starter + sofa-ark-support-starter + ${sofa.ark.version} + + + com.alipay.sofa + sofa-ark-compatible-springboot1 + ${sofa.ark.version} + + + com.alipay.sofa + sofa-ark-compatible-springboot2 ${sofa.ark.version} + + com.alipay.sofa + sofa-ark-springboot-starter + ${sofa.ark.starter.version} + org.springframework.boot @@ -478,27 +490,68 @@ - + - jakarta-snapshot + 17-snapshot ${revision.default}-jdk17-SNAPSHOT ${sofa.ark.version.base}-jdk17-SNAPSHOT ${sofa.ark.version.base}-jdk17-jakarta-SNAPSHOT - - 17 - + + + + 17-release + + ${revision.default}-jdk17 + ${sofa.ark.version.base}-jdk17 + ${sofa.ark.version.base}-jdk17-jakarta + + - release + 8-snapshot + + ${revision.default}-SNAPSHOT + ${sofa.ark.version.base}-SNAPSHOT + ${sofa.ark.version.base}-SNAPSHOT + + + + + + 8-release ${revision.default} - ${sofa.ark.version.default} - ${sofa.ark.version.default} + ${sofa.ark.version.base} + ${sofa.ark.version.base} + + + + release @@ -564,11 +617,6 @@ snapshot - - ${revision.default} - ${sofa.ark.version.default} - ${sofa.ark.version.default} - @@ -613,8 +661,8 @@ ${revision.default} - ${sofa.ark.version.default} - ${sofa.ark.version.default} + ${sofa.ark.version.base} + ${sofa.ark.version.base} diff --git a/sofa-serverless-runtime/sofa-serverless-base-starter/pom.xml b/sofa-serverless-runtime/sofa-serverless-base-starter/pom.xml index 09c4ff473..0a75bf765 100644 --- a/sofa-serverless-runtime/sofa-serverless-base-starter/pom.xml +++ b/sofa-serverless-runtime/sofa-serverless-base-starter/pom.xml @@ -21,7 +21,6 @@ com.alipay.sofa sofa-ark-springboot-starter - ${sofa.ark.starter.version} From c92919041775de775c5cc46a64c5a2aca2785c0a Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 15:58:01 +0800 Subject: [PATCH 02/26] add profile --- .github/workflows/arklet_release.yml | 2 ++ .github/workflows/serverless_runtime_snapshot.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/arklet_release.yml b/.github/workflows/arklet_release.yml index 0431a39e2..1eaacee08 100644 --- a/.github/workflows/arklet_release.yml +++ b/.github/workflows/arklet_release.yml @@ -41,6 +41,7 @@ jobs: gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven run: mvn --batch-mode deploy -DskipTests -Prelease,8-release + working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} @@ -63,6 +64,7 @@ jobs: gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven run: mvn --batch-mode deploy -DskipTests -Prelease,17-release + working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} diff --git a/.github/workflows/serverless_runtime_snapshot.yml b/.github/workflows/serverless_runtime_snapshot.yml index 6273fd3ac..5149577f4 100644 --- a/.github/workflows/serverless_runtime_snapshot.yml +++ b/.github/workflows/serverless_runtime_snapshot.yml @@ -41,6 +41,7 @@ jobs: gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven run: mvn --batch-mode deploy -DskipTests -Psnapshot,8-snapshot + working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} @@ -63,6 +64,7 @@ jobs: gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven run: mvn --batch-mode deploy -DskipTests -Psnapshot,17-snapshot + working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} From b502dcc845e7c378beffbce73b118cf56638d53f Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 16:15:43 +0800 Subject: [PATCH 03/26] add comment --- sofa-serverless-runtime/pom.xml | 53 ++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/sofa-serverless-runtime/pom.xml b/sofa-serverless-runtime/pom.xml index 84b4b7317..1522a5b8b 100644 --- a/sofa-serverless-runtime/pom.xml +++ b/sofa-serverless-runtime/pom.xml @@ -490,13 +490,15 @@ - + + 17-snapshot @@ -505,12 +507,13 @@ ${sofa.ark.version.base}-jdk17-jakarta-SNAPSHOT - + 17-release @@ -520,12 +523,13 @@ - + 8-snapshot @@ -535,12 +539,13 @@ - + 8-release From f4b3510e17b4e52775a35021aba73fce794cf9a7 Mon Sep 17 00:00:00 2001 From: leojames Date: Tue, 14 Nov 2023 16:33:04 +0800 Subject: [PATCH 04/26] fix snapshot --- sofa-serverless-runtime/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sofa-serverless-runtime/pom.xml b/sofa-serverless-runtime/pom.xml index 1522a5b8b..591aeccdf 100644 --- a/sofa-serverless-runtime/pom.xml +++ b/sofa-serverless-runtime/pom.xml @@ -662,10 +662,6 @@ ossrh https://oss.sonatype.org/content/repositories/snapshots - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - From 24e8af86ed1726efa42b6a347bf61a1fecea149f Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 17:33:53 +0800 Subject: [PATCH 05/26] fix unit test in jdk17 --- .../common/util/ReflectionUtils.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index 85ae75893..cdac70ba7 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -16,7 +16,9 @@ */ package com.alipay.sofa.serverless.common.util; +import java.lang.invoke.MethodHandles; import java.lang.reflect.Method; +import java.lang.StackWalker; /** * @author: yuanyuan @@ -24,7 +26,8 @@ */ public class ReflectionUtils { - private static Method method; + private static final MethodHandles.Lookup lookup = MethodHandles.lookup(); + private static Method method; static { try { @@ -36,7 +39,8 @@ public class ReflectionUtils { } } - public static Class getCallerClass(int realFramesToSkip) { + public static Class executeJDK8Logic(int realFramesToSkip) { + // 在 JDK 8 下执行的方法逻辑 if (method == null) throw new IllegalStateException("sun.reflect.Reflection initialization failure."); try { @@ -47,4 +51,28 @@ public static Class getCallerClass(int realFramesToSkip) { } } + public static Class executeJDK17Logic(int depth) { + // 在 JDK 17 下执行的方法逻辑 + try { + StackWalker walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); + return walker.walk(frames -> frames.skip(depth + 1).findFirst().map(StackWalker.StackFrame::getDeclaringClass).orElse(null)); + } catch (Exception e) { + throw new IllegalStateException("sun.reflect.Reflection initialization failure."); + } + } + + public static Class getCallerClass(int realFramesToSkip) { + String javaVersion = System.getProperty("java.version"); + if (javaVersion.startsWith("1.8")) { + // JDK 8 版本的逻辑 + // 执行 JDK 8 版本下的方法 + return executeJDK8Logic(realFramesToSkip); + } else if (javaVersion.startsWith("17")) { + // JDK 17 版本的逻辑 + // 执行 JDK 17 版本下的方法 + return executeJDK17Logic(realFramesToSkip); + } + return null; + } + } From c72cdc19bdb31c9e6adc83a945166611ea611275 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 17:40:33 +0800 Subject: [PATCH 06/26] fix unit test --- .../alipay/sofa/serverless/common/util/ReflectionUtils.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index cdac70ba7..d9c1a79dc 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -18,7 +18,6 @@ import java.lang.invoke.MethodHandles; import java.lang.reflect.Method; -import java.lang.StackWalker; /** * @author: yuanyuan @@ -54,7 +53,7 @@ public static Class executeJDK8Logic(int realFramesToSkip) { public static Class executeJDK17Logic(int depth) { // 在 JDK 17 下执行的方法逻辑 try { - StackWalker walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); + java.lang.StackWalker walker = java.lang.StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); return walker.walk(frames -> frames.skip(depth + 1).findFirst().map(StackWalker.StackFrame::getDeclaringClass).orElse(null)); } catch (Exception e) { throw new IllegalStateException("sun.reflect.Reflection initialization failure."); From a585e41aeab3ca618dd916e8303c6a4b21f11475 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 18:29:17 +0800 Subject: [PATCH 07/26] fix unit --- .../common/SpringServiceFinderTest.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java index de42b2c88..d7c7e465c 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java @@ -44,6 +44,7 @@ import java.util.Objects; import java.util.Properties; import java.util.Set; +import java.util.stream.Stream; import static org.mockito.Mockito.when; @@ -118,8 +119,19 @@ public void testSpringServiceFinder() { Assert.assertEquals("module", moduleBean.test()); // test to invoke crossing classloader - URLClassLoader loader = new URLClassLoader( - ((URLClassLoader) ClassLoader.getSystemClassLoader()).getURLs(), null); + ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); + + // 获取ClassLoader实例的URL列表 + URL[] urls = Stream.of(systemClassLoader) + .flatMap(c -> { + if (c instanceof java.net.URLClassLoader) { + return Stream.of(((java.net.URLClassLoader) c).getURLs()); + } else { + return Stream.empty(); + } + }) + .toArray(URL[]::new); + URLClassLoader loader = new URLClassLoader(urls, null); Object newModuleBean = null; try { Class aClass = loader From bb9f5ba62d2cd23bb0520481a568ef1d38963f87 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 19:43:05 +0800 Subject: [PATCH 08/26] add comment --- .../common/SpringServiceFinderTest.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java index d7c7e465c..5d224abcd 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java @@ -120,17 +120,14 @@ public void testSpringServiceFinder() { // test to invoke crossing classloader ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); - - // 获取ClassLoader实例的URL列表 - URL[] urls = Stream.of(systemClassLoader) - .flatMap(c -> { - if (c instanceof java.net.URLClassLoader) { - return Stream.of(((java.net.URLClassLoader) c).getURLs()); - } else { - return Stream.empty(); - } - }) - .toArray(URL[]::new); + URL[] urls =null; + if (systemClassLoader instanceof URLClassLoader) { + urls = ((URLClassLoader) systemClassLoader).getURLs(); + // 获取 URL 列表 + for (URL url : urls) { + System.out.println(url); + } + } URLClassLoader loader = new URLClassLoader(urls, null); Object newModuleBean = null; try { From 5a43506f47781ae8d4e21c87abd1843f0e77db9c Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 19:43:50 +0800 Subject: [PATCH 09/26] test print --- .../alipay/sofa/serverless/common/util/ReflectionUtils.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index d9c1a79dc..93b6ef703 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -52,12 +52,13 @@ public static Class executeJDK8Logic(int realFramesToSkip) { public static Class executeJDK17Logic(int depth) { // 在 JDK 17 下执行的方法逻辑 - try { +/* try { java.lang.StackWalker walker = java.lang.StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); return walker.walk(frames -> frames.skip(depth + 1).findFirst().map(StackWalker.StackFrame::getDeclaringClass).orElse(null)); } catch (Exception e) { throw new IllegalStateException("sun.reflect.Reflection initialization failure."); - } + }*/ + return null; } public static Class getCallerClass(int realFramesToSkip) { From a94cc65a900e7cf0a14f12e575c090f93a1173c1 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 19:45:25 +0800 Subject: [PATCH 10/26] test print --- .../alipay/sofa/serverless/common/util/ReflectionUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index 93b6ef703..5fe3d219e 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -26,12 +26,12 @@ public class ReflectionUtils { private static final MethodHandles.Lookup lookup = MethodHandles.lookup(); - private static Method method; + private static Method method; static { try { Class clazz = Class.forName("sun.reflect.Reflection"); - method = clazz.getDeclaredMethod("getCallerClass", new Class[] { int.class }); + method = clazz.getDeclaredMethod("getCallerClass", new Class[]{int.class}); method.setAccessible(true); } catch (Exception e) { method = null; @@ -46,7 +46,7 @@ public static Class executeJDK8Logic(int realFramesToSkip) { return (Class) method.invoke(null, realFramesToSkip); } catch (Exception e) { throw new IllegalStateException( - "An error occurs when invoking the sun.reflect.Reflection#getCallerClass", e); + "An error occurs when invoking the sun.reflect.Reflection#getCallerClass", e); } } From 1a6c8c2b270fd5f5ee43c2ff123c81c139df093a Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 19:47:29 +0800 Subject: [PATCH 11/26] format --- .../common/SpringServiceFinderTest.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java index 5d224abcd..34ac1e909 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java @@ -56,13 +56,13 @@ public class SpringServiceFinderTest { @Mock - private Biz masterBiz; + private Biz masterBiz; @Mock - private Biz biz1; + private Biz biz1; @Mock - private Biz biz2; + private Biz biz2; @Mock private BizManagerService bizManagerService; @@ -105,13 +105,13 @@ public void testSpringServiceFinder() { Assert.assertNotNull(baseBeanMap); Assert.assertEquals(1, baseBeanMap.size()); ModuleBean moduleBean = SpringServiceFinder.getModuleService("biz1", "version1", - "moduleBean", ModuleBean.class); + "moduleBean", ModuleBean.class); Assert.assertNotNull(moduleBean); ModuleBean moduleBean1 = SpringServiceFinder.getModuleService("biz1", "version1", - ModuleBean.class); + ModuleBean.class); Assert.assertNotNull(moduleBean1); Map moduleBeanMap = SpringServiceFinder.listModuleServices("biz1", - "version1", ModuleBean.class); + "version1", ModuleBean.class); Assert.assertNotNull(moduleBeanMap); Assert.assertEquals(1, moduleBeanMap.size()); @@ -120,7 +120,7 @@ public void testSpringServiceFinder() { // test to invoke crossing classloader ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); - URL[] urls =null; + URL[] urls = null; if (systemClassLoader instanceof URLClassLoader) { urls = ((URLClassLoader) systemClassLoader).getURLs(); // 获取 URL 列表 @@ -132,7 +132,7 @@ public void testSpringServiceFinder() { Object newModuleBean = null; try { Class aClass = loader - .loadClass("com.alipay.sofa.serverless.common.SpringServiceFinderTest$ModuleBean"); + .loadClass("com.alipay.sofa.serverless.common.SpringServiceFinderTest$ModuleBean"); newModuleBean = aClass.newInstance(); } catch (Exception e) { System.out.println(e); @@ -147,7 +147,7 @@ public void testSpringServiceFinder() { BizRuntimeContext biz2Runtime = new BizRuntimeContext(biz2, biz2Ctx); BizRuntimeContextRegistry.registerBizRuntimeManager(biz2Runtime); ModuleBean foundModuleBean = SpringServiceFinder.getModuleService("biz2", "version1", - "moduleBean", ModuleBean.class); + "moduleBean", ModuleBean.class); Assert.assertNotNull(foundModuleBean); Assert.assertEquals(newModuleBean.toString(), foundModuleBean.toString()); Assert.assertEquals("module", foundModuleBean.test()); @@ -159,24 +159,24 @@ public void testArkAutowired() { ModuleBean moduleBean = new ModuleBean(); ArkAutowiredBeanPostProcessor arkAutowiredBeanPostProcessor = new ArkAutowiredBeanPostProcessor(); Object testBean = arkAutowiredBeanPostProcessor.postProcessBeforeInitialization(moduleBean, - "moduleBean"); + "moduleBean"); Assert.assertNotNull(testBean); Assert.assertEquals(moduleBean, testBean); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBean")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBean")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanList")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanList")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanSet")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanSet")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanMap")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanMap")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "moduleBean")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "moduleBean")), + testBean)); } public ConfigurableApplicationContext buildApplicationContext(String appName) { @@ -203,19 +203,19 @@ public String test() { public static class ModuleBean { @AutowiredFromBase - private BaseBean baseBean; + private BaseBean baseBean; @AutowiredFromBase - private List baseBeanList; + private List baseBeanList; @AutowiredFromBase - private Set baseBeanSet; + private Set baseBeanSet; @AutowiredFromBase private Map baseBeanMap; @AutowiredFromBiz(bizName = "biz1", bizVersion = "version1") - private ModuleBean moduleBean; + private ModuleBean moduleBean; public String test() { return "module"; From eeb2196445b941b5ab2e33a7b019432a77aaa489 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 20:23:40 +0800 Subject: [PATCH 12/26] fix unit test --- .../common/util/ReflectionUtils.java | 12 ++-- .../common/SpringServiceFinderTest.java | 61 ++++++++----------- 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index 5fe3d219e..9dc1d5548 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -26,12 +26,12 @@ public class ReflectionUtils { private static final MethodHandles.Lookup lookup = MethodHandles.lookup(); - private static Method method; + private static Method method; static { try { Class clazz = Class.forName("sun.reflect.Reflection"); - method = clazz.getDeclaredMethod("getCallerClass", new Class[]{int.class}); + method = clazz.getDeclaredMethod("getCallerClass", new Class[] { int.class }); method.setAccessible(true); } catch (Exception e) { method = null; @@ -46,18 +46,18 @@ public static Class executeJDK8Logic(int realFramesToSkip) { return (Class) method.invoke(null, realFramesToSkip); } catch (Exception e) { throw new IllegalStateException( - "An error occurs when invoking the sun.reflect.Reflection#getCallerClass", e); + "An error occurs when invoking the sun.reflect.Reflection#getCallerClass", e); } } public static Class executeJDK17Logic(int depth) { // 在 JDK 17 下执行的方法逻辑 -/* try { + try { java.lang.StackWalker walker = java.lang.StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); - return walker.walk(frames -> frames.skip(depth + 1).findFirst().map(StackWalker.StackFrame::getDeclaringClass).orElse(null)); + return walker.walk(frames -> frames.skip(depth + 1).findFirst().map(java.lang.StackWalker.StackFrame::getDeclaringClass).orElse(null)); } catch (Exception e) { throw new IllegalStateException("sun.reflect.Reflection initialization failure."); - }*/ + } return null; } diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java index 34ac1e909..4f7fa9f18 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/SpringServiceFinderTest.java @@ -44,7 +44,6 @@ import java.util.Objects; import java.util.Properties; import java.util.Set; -import java.util.stream.Stream; import static org.mockito.Mockito.when; @@ -56,13 +55,13 @@ public class SpringServiceFinderTest { @Mock - private Biz masterBiz; + private Biz masterBiz; @Mock - private Biz biz1; + private Biz biz1; @Mock - private Biz biz2; + private Biz biz2; @Mock private BizManagerService bizManagerService; @@ -105,13 +104,13 @@ public void testSpringServiceFinder() { Assert.assertNotNull(baseBeanMap); Assert.assertEquals(1, baseBeanMap.size()); ModuleBean moduleBean = SpringServiceFinder.getModuleService("biz1", "version1", - "moduleBean", ModuleBean.class); + "moduleBean", ModuleBean.class); Assert.assertNotNull(moduleBean); ModuleBean moduleBean1 = SpringServiceFinder.getModuleService("biz1", "version1", - ModuleBean.class); + ModuleBean.class); Assert.assertNotNull(moduleBean1); Map moduleBeanMap = SpringServiceFinder.listModuleServices("biz1", - "version1", ModuleBean.class); + "version1", ModuleBean.class); Assert.assertNotNull(moduleBeanMap); Assert.assertEquals(1, moduleBeanMap.size()); @@ -119,20 +118,12 @@ public void testSpringServiceFinder() { Assert.assertEquals("module", moduleBean.test()); // test to invoke crossing classloader - ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); - URL[] urls = null; - if (systemClassLoader instanceof URLClassLoader) { - urls = ((URLClassLoader) systemClassLoader).getURLs(); - // 获取 URL 列表 - for (URL url : urls) { - System.out.println(url); - } - } - URLClassLoader loader = new URLClassLoader(urls, null); + URLClassLoader loader = new URLClassLoader( + ((URLClassLoader) ClassLoader.getSystemClassLoader()).getURLs(), null); Object newModuleBean = null; try { Class aClass = loader - .loadClass("com.alipay.sofa.serverless.common.SpringServiceFinderTest$ModuleBean"); + .loadClass("com.alipay.sofa.serverless.common.SpringServiceFinderTest$ModuleBean"); newModuleBean = aClass.newInstance(); } catch (Exception e) { System.out.println(e); @@ -147,7 +138,7 @@ public void testSpringServiceFinder() { BizRuntimeContext biz2Runtime = new BizRuntimeContext(biz2, biz2Ctx); BizRuntimeContextRegistry.registerBizRuntimeManager(biz2Runtime); ModuleBean foundModuleBean = SpringServiceFinder.getModuleService("biz2", "version1", - "moduleBean", ModuleBean.class); + "moduleBean", ModuleBean.class); Assert.assertNotNull(foundModuleBean); Assert.assertEquals(newModuleBean.toString(), foundModuleBean.toString()); Assert.assertEquals("module", foundModuleBean.test()); @@ -159,24 +150,24 @@ public void testArkAutowired() { ModuleBean moduleBean = new ModuleBean(); ArkAutowiredBeanPostProcessor arkAutowiredBeanPostProcessor = new ArkAutowiredBeanPostProcessor(); Object testBean = arkAutowiredBeanPostProcessor.postProcessBeforeInitialization(moduleBean, - "moduleBean"); + "moduleBean"); Assert.assertNotNull(testBean); Assert.assertEquals(moduleBean, testBean); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBean")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBean")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanList")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanList")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanSet")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanSet")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanMap")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "baseBeanMap")), + testBean)); Assert.assertNotNull(ReflectionUtils.getField( - Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "moduleBean")), - testBean)); + Objects.requireNonNull(ReflectionUtils.findField(ModuleBean.class, "moduleBean")), + testBean)); } public ConfigurableApplicationContext buildApplicationContext(String appName) { @@ -203,23 +194,23 @@ public String test() { public static class ModuleBean { @AutowiredFromBase - private BaseBean baseBean; + private BaseBean baseBean; @AutowiredFromBase - private List baseBeanList; + private List baseBeanList; @AutowiredFromBase - private Set baseBeanSet; + private Set baseBeanSet; @AutowiredFromBase private Map baseBeanMap; @AutowiredFromBiz(bizName = "biz1", bizVersion = "version1") - private ModuleBean moduleBean; + private ModuleBean moduleBean; public String test() { return "module"; } } -} +} \ No newline at end of file From 3dd6cc902b0b848320c9e4671c525cdf13e277d4 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Tue, 14 Nov 2023 20:24:40 +0800 Subject: [PATCH 13/26] add unit --- .../alipay/sofa/serverless/common/util/ReflectionUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index 9dc1d5548..d04ef29de 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -52,12 +52,12 @@ public static Class executeJDK8Logic(int realFramesToSkip) { public static Class executeJDK17Logic(int depth) { // 在 JDK 17 下执行的方法逻辑 - try { +/* try { java.lang.StackWalker walker = java.lang.StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); return walker.walk(frames -> frames.skip(depth + 1).findFirst().map(java.lang.StackWalker.StackFrame::getDeclaringClass).orElse(null)); } catch (Exception e) { throw new IllegalStateException("sun.reflect.Reflection initialization failure."); - } + }*/ return null; } From c2039b2c3c23dffe9af1bf90ca828f8a6527f76a Mon Sep 17 00:00:00 2001 From: leojames Date: Wed, 15 Nov 2023 09:42:24 +0800 Subject: [PATCH 14/26] add snapshot repository --- .github/workflows/serverless_runtime_snapshot.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/serverless_runtime_snapshot.yml b/.github/workflows/serverless_runtime_snapshot.yml index 6c5110a6e..de719e637 100644 --- a/.github/workflows/serverless_runtime_snapshot.yml +++ b/.github/workflows/serverless_runtime_snapshot.yml @@ -25,7 +25,7 @@ jobs: gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven - run: mvn --batch-mode deploy -DskipTests -Psnapshot,8-snapshot + run: mvn --batch-mode deploy -DskipTests -Pdefault,snapshot,8-snapshot working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} @@ -48,7 +48,7 @@ jobs: gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven - run: mvn --batch-mode deploy -DskipTests -Psnapshot,17-snapshot + run: mvn --batch-mode deploy -DskipTests -Pdefault,snapshot,17-snapshot working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} From a643dfe99758b0a6f2b50e9b63efbe747031dabd Mon Sep 17 00:00:00 2001 From: leojames Date: Wed, 15 Nov 2023 10:43:08 +0800 Subject: [PATCH 15/26] add snapshot repository --- .../workflows/serverless_runtime_snapshot.yml | 4 +-- sofa-serverless-runtime/pom.xml | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/.github/workflows/serverless_runtime_snapshot.yml b/.github/workflows/serverless_runtime_snapshot.yml index de719e637..6c5110a6e 100644 --- a/.github/workflows/serverless_runtime_snapshot.yml +++ b/.github/workflows/serverless_runtime_snapshot.yml @@ -25,7 +25,7 @@ jobs: gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven - run: mvn --batch-mode deploy -DskipTests -Pdefault,snapshot,8-snapshot + run: mvn --batch-mode deploy -DskipTests -Psnapshot,8-snapshot working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} @@ -48,7 +48,7 @@ jobs: gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Build with Maven - run: mvn --batch-mode deploy -DskipTests -Pdefault,snapshot,17-snapshot + run: mvn --batch-mode deploy -DskipTests -Psnapshot,17-snapshot working-directory: sofa-serverless-runtime env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} diff --git a/sofa-serverless-runtime/pom.xml b/sofa-serverless-runtime/pom.xml index 591aeccdf..61792f022 100644 --- a/sofa-serverless-runtime/pom.xml +++ b/sofa-serverless-runtime/pom.xml @@ -618,6 +618,15 @@ https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + true + + maven-snapshot + https://oss.sonatype.org/content/repositories/snapshots + + @@ -663,6 +672,24 @@ https://oss.sonatype.org/content/repositories/snapshots + + + + true + + maven-snapshot + https://oss.sonatype.org/content/repositories/snapshots + + + + + + true + + maven-snapshot + https://oss.sonatype.org/content/repositories/snapshots + + From 9f7fffaffc728df0ae7e54380e8c11bab9f0f533 Mon Sep 17 00:00:00 2001 From: leojames Date: Wed, 15 Nov 2023 10:52:27 +0800 Subject: [PATCH 16/26] not using sofa ark snapshot for runtime snapshot --- sofa-serverless-runtime/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sofa-serverless-runtime/pom.xml b/sofa-serverless-runtime/pom.xml index 61792f022..c24993ae2 100644 --- a/sofa-serverless-runtime/pom.xml +++ b/sofa-serverless-runtime/pom.xml @@ -503,8 +503,8 @@ 17-snapshot ${revision.default}-jdk17-SNAPSHOT - ${sofa.ark.version.base}-jdk17-SNAPSHOT - ${sofa.ark.version.base}-jdk17-jakarta-SNAPSHOT + ${sofa.ark.version.base}-jdk17 + ${sofa.ark.version.base}-jdk17-jakarta - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/db/mybatis/base/pom.xml b/samples/springboot3-samples/db/mybatis/base/pom.xml index d3fc8431e..9a273423c 100644 --- a/samples/springboot3-samples/db/mybatis/base/pom.xml +++ b/samples/springboot3-samples/db/mybatis/base/pom.xml @@ -68,7 +68,7 @@ com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/logging/README.md b/samples/springboot3-samples/logging/README.md index cc89f5784..e17f61752 100644 --- a/samples/springboot3-samples/logging/README.md +++ b/samples/springboot3-samples/logging/README.md @@ -13,7 +13,7 @@ base 为普通 springboot 改造成的基座,改造内容为在 pom 里增加 com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/logging/log4j2/base/pom.xml b/samples/springboot3-samples/logging/log4j2/base/pom.xml index ce604aecf..d336c53ef 100644 --- a/samples/springboot3-samples/logging/log4j2/base/pom.xml +++ b/samples/springboot3-samples/logging/log4j2/base/pom.xml @@ -31,7 +31,7 @@ com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/msg/kafka/README.md b/samples/springboot3-samples/msg/kafka/README.md index a43a6850c..c99e32908 100644 --- a/samples/springboot3-samples/msg/kafka/README.md +++ b/samples/springboot3-samples/msg/kafka/README.md @@ -11,7 +11,7 @@ base 为普通 springboot 改造成的基座,改造内容为在 pom 里增加 com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/msg/kafka/base/pom.xml b/samples/springboot3-samples/msg/kafka/base/pom.xml index 91753aaf3..920852b4b 100644 --- a/samples/springboot3-samples/msg/kafka/base/pom.xml +++ b/samples/springboot3-samples/msg/kafka/base/pom.xml @@ -47,7 +47,7 @@ com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/web/tomcat/README.md b/samples/springboot3-samples/web/tomcat/README.md index 17d3b2bbe..4107e6cb9 100644 --- a/samples/springboot3-samples/web/tomcat/README.md +++ b/samples/springboot3-samples/web/tomcat/README.md @@ -13,7 +13,7 @@ base 为普通 springboot 改造成的基座,改造内容为在 pom 里增加 com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/samples/springboot3-samples/web/tomcat/base/pom.xml b/samples/springboot3-samples/web/tomcat/base/pom.xml index 4f0d4dc60..8ad0a71a4 100644 --- a/samples/springboot3-samples/web/tomcat/base/pom.xml +++ b/samples/springboot3-samples/web/tomcat/base/pom.xml @@ -36,7 +36,7 @@ com.alipay.sofa.serverless sofa-serverless-base-starter - 0.5.2-jdk17-SNAPSHOT + 0.5.3-jdk17 diff --git a/sofa-serverless-runtime/pom.xml b/sofa-serverless-runtime/pom.xml index de5179932..7da72ace4 100644 --- a/sofa-serverless-runtime/pom.xml +++ b/sofa-serverless-runtime/pom.xml @@ -496,8 +496,8 @@ jdk17 打出来的 snapshot 版本 举例: 打出来的包为 0.5.2-jdk17-SNAPSHOT - 使用sofa-ark的包 2.2.4-jdk17-SNAPSHOT - 使用sofa-ark starter 的包 2.2.4-jdk17-jakarta-SNAPSHOT + 使用sofa-ark的包 2.2.4-jdk17 + 使用sofa-ark starter 的包 2.2.4-jdk17-jakarta --> 17-snapshot @@ -527,8 +527,8 @@ jdk8 打出来的 snapshot 版本 举例: 打出来的包为 0.5.2-SNAPSHOT - 使用sofa-ark的包 2.2.4-SNAPSHOT - 使用sofa-ark starter 的包 2.2.4-SNAPSHOT + 使用sofa-ark的包 2.2.4 + 使用sofa-ark starter 的包 2.2.4 --> 8-snapshot From 6c3bf426ac36bfbde1c86dc0b30f141c757a6795 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Thu, 16 Nov 2023 12:21:25 +0800 Subject: [PATCH 23/26] fix unit test --- .../common/util/ReflectionUtils.java | 4 +- .../common/ReflectionUtilsTest.java | 54 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java index 96bf517a0..e34381f64 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/main/java/com/alipay/sofa/serverless/common/util/ReflectionUtils.java @@ -36,7 +36,7 @@ public class ReflectionUtils { } } - static StackTraceElement getEquivalentStackTraceElement(final int depth) { + public static StackTraceElement getEquivalentStackTraceElement(final int depth) { // (MS) I tested the difference between using Throwable.getStackTrace() and Thread.getStackTrace(), and // the version using Throwable was surprisingly faster! at least on Java 1.8. See ReflectionBenchmark. final StackTraceElement[] elements = new Throwable().getStackTrace(); @@ -52,7 +52,7 @@ static StackTraceElement getEquivalentStackTraceElement(final int depth) { throw new IndexOutOfBoundsException(Integer.toString(depth)); } - private static boolean isValid(final StackTraceElement element) { + public static boolean isValid(final StackTraceElement element) { // ignore native methods (oftentimes are repeated frames) if (element.isNativeMethod()) { return false; diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java new file mode 100644 index 000000000..3ccd5e122 --- /dev/null +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alipay.sofa.serverless.common; + +import com.alipay.sofa.serverless.common.util.ReflectionUtils; +import org.junit.Assert; +import org.junit.Test; + +public class ReflectionUtilsTest { + @Test + public void testIsValid() { + StackTraceElement sunReflectElement = new StackTraceElement("sun.reflect.ClassName", + "methodName", "fileName", 123); + Assert.assertFalse(ReflectionUtils.isValid(sunReflectElement)); + + StackTraceElement javaReflectInvokeElement = new StackTraceElement( + "java.lang.reflect.ClassName", "invoke", "fileName", 123); + Assert.assertFalse(ReflectionUtils.isValid(javaReflectInvokeElement)); + + StackTraceElement javaReflectNewInstanceElement = new StackTraceElement( + "java.lang.reflect.ClassName", "newInstance", "fileName", 123); + Assert.assertFalse(ReflectionUtils.isValid(javaReflectNewInstanceElement)); + + StackTraceElement jdkInternalReflectElement = new StackTraceElement( + "jdk.internal.reflect.ClassName", "methodName", "fileName", 123); + Assert.assertFalse(ReflectionUtils.isValid(jdkInternalReflectElement)); + + StackTraceElement javaLangClassElement = new StackTraceElement("java.lang.Class", + "newInstance", "fileName", 123); + Assert.assertFalse(ReflectionUtils.isValid(javaLangClassElement)); + + StackTraceElement javaLangInvokeMethodHandleElement = new StackTraceElement( + "java.lang.invoke.MethodHandle", "invokeMethod", "fileName", 123); + Assert.assertFalse(ReflectionUtils.isValid(javaLangInvokeMethodHandleElement)); + + StackTraceElement validElement = new StackTraceElement("ValidClassName", "validMethodName", + "fileName", 123); + Assert.assertTrue(ReflectionUtils.isValid(validElement)); + } +} From 2ae1aa3e988d8b5538ac7b866d26ed806503c48b Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Thu, 16 Nov 2023 12:38:46 +0800 Subject: [PATCH 24/26] fix unit test --- .../com/alipay/sofa/serverless/common/ReflectionUtilsTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java index 3ccd5e122..2b1635872 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java @@ -23,6 +23,9 @@ public class ReflectionUtilsTest { @Test public void testIsValid() { + StackTraceElement nativeMethodElement = new StackTraceElement("ClassName", "methodName", "fileName", -2); + Assert.assertFalse(ReflectionUtils.isValid(nativeMethodElement)); + StackTraceElement sunReflectElement = new StackTraceElement("sun.reflect.ClassName", "methodName", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(sunReflectElement)); From fc6fd5fb23d42e41b7d6327eced147f662d19fa2 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Thu, 16 Nov 2023 12:49:25 +0800 Subject: [PATCH 25/26] unit tets --- .../serverless/common/ReflectionUtilsTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java index 2b1635872..0a95e13d0 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java @@ -27,31 +27,31 @@ public void testIsValid() { Assert.assertFalse(ReflectionUtils.isValid(nativeMethodElement)); StackTraceElement sunReflectElement = new StackTraceElement("sun.reflect.ClassName", - "methodName", "fileName", 123); + "methodName", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(sunReflectElement)); StackTraceElement javaReflectInvokeElement = new StackTraceElement( - "java.lang.reflect.ClassName", "invoke", "fileName", 123); + "java.lang.reflect.ClassName", "invoke", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaReflectInvokeElement)); StackTraceElement javaReflectNewInstanceElement = new StackTraceElement( - "java.lang.reflect.ClassName", "newInstance", "fileName", 123); + "java.lang.reflect.ClassName", "newInstance", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaReflectNewInstanceElement)); StackTraceElement jdkInternalReflectElement = new StackTraceElement( - "jdk.internal.reflect.ClassName", "methodName", "fileName", 123); + "jdk.internal.reflect.ClassName", "methodName", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(jdkInternalReflectElement)); StackTraceElement javaLangClassElement = new StackTraceElement("java.lang.Class", - "newInstance", "fileName", 123); + "newInstance", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaLangClassElement)); StackTraceElement javaLangInvokeMethodHandleElement = new StackTraceElement( - "java.lang.invoke.MethodHandle", "invokeMethod", "fileName", 123); + "java.lang.invoke.MethodHandle", "invokeMethod", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaLangInvokeMethodHandleElement)); StackTraceElement validElement = new StackTraceElement("ValidClassName", "validMethodName", - "fileName", 123); + "fileName", 123); Assert.assertTrue(ReflectionUtils.isValid(validElement)); } } From aa68611e182c677f4b00478b53af101419de1be4 Mon Sep 17 00:00:00 2001 From: "chaya.cy" Date: Thu, 16 Nov 2023 12:59:19 +0800 Subject: [PATCH 26/26] push --- .../serverless/common/ReflectionUtilsTest.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java index 0a95e13d0..4de1f5a72 100644 --- a/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java +++ b/sofa-serverless-runtime/sofa-serverless-common/src/test/java/com/alipay/sofa/serverless/common/ReflectionUtilsTest.java @@ -23,35 +23,36 @@ public class ReflectionUtilsTest { @Test public void testIsValid() { - StackTraceElement nativeMethodElement = new StackTraceElement("ClassName", "methodName", "fileName", -2); + StackTraceElement nativeMethodElement = new StackTraceElement("ClassName", "methodName", + "fileName", -2); Assert.assertFalse(ReflectionUtils.isValid(nativeMethodElement)); StackTraceElement sunReflectElement = new StackTraceElement("sun.reflect.ClassName", - "methodName", "fileName", 123); + "methodName", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(sunReflectElement)); StackTraceElement javaReflectInvokeElement = new StackTraceElement( - "java.lang.reflect.ClassName", "invoke", "fileName", 123); + "java.lang.reflect.ClassName", "invoke", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaReflectInvokeElement)); StackTraceElement javaReflectNewInstanceElement = new StackTraceElement( - "java.lang.reflect.ClassName", "newInstance", "fileName", 123); + "java.lang.reflect.ClassName", "newInstance", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaReflectNewInstanceElement)); StackTraceElement jdkInternalReflectElement = new StackTraceElement( - "jdk.internal.reflect.ClassName", "methodName", "fileName", 123); + "jdk.internal.reflect.ClassName", "methodName", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(jdkInternalReflectElement)); StackTraceElement javaLangClassElement = new StackTraceElement("java.lang.Class", - "newInstance", "fileName", 123); + "newInstance", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaLangClassElement)); StackTraceElement javaLangInvokeMethodHandleElement = new StackTraceElement( - "java.lang.invoke.MethodHandle", "invokeMethod", "fileName", 123); + "java.lang.invoke.MethodHandle", "invokeMethod", "fileName", 123); Assert.assertFalse(ReflectionUtils.isValid(javaLangInvokeMethodHandleElement)); StackTraceElement validElement = new StackTraceElement("ValidClassName", "validMethodName", - "fileName", 123); + "fileName", 123); Assert.assertTrue(ReflectionUtils.isValid(validElement)); } }