From fa3ca0d25734a9625eb0d1e34e27790d52edd3d5 Mon Sep 17 00:00:00 2001 From: Zzm0809 <934230207@qq.com> Date: Tue, 30 Jan 2024 09:07:20 +0800 Subject: [PATCH] [Feature] Implementation to obtain the list of jar files loaded by the class loader (#3087) Co-authored-by: Zzm0809 --- .github/ISSUE_TEMPLATE/bug-report.yml | 2 +- .github/ISSUE_TEMPLATE/document-request.yml | 2 +- .github/ISSUE_TEMPLATE/feature-request.yml | 2 +- .../ISSUE_TEMPLATE/optimization-request.yml | 2 +- .github/workflows/add-assignees.yml | 4 +- .github/workflows/auto-realease-ci.yml | 123 ++++++++++++++++++ .github/workflows/issue-title-check.yml | 28 ++++ .github/workflows/pr-reviewer-assign.yml | 18 +-- ...oController.java => SystemController.java} | 8 +- .../java/org/dinky/service/SystemService.java | 2 + .../dinky/service/impl/SystemServiceImpl.java | 22 ++++ .../src/main/resources/db/db-h2-dml.sql | 1 + dinky-web/config/routes.ts | 6 + dinky-web/src/locales/en-US/menu.ts | 1 + dinky-web/src/locales/en-US/pages.ts | 5 +- dinky-web/src/locales/zh-CN/menu.ts | 1 + dinky-web/src/locales/zh-CN/pages.ts | 5 +- .../HeaderContainer/Explain/index.tsx | 2 +- .../SettingCenter/ClassLoaderJars/index.tsx | 41 ++++++ .../SettingCenter/ClassLoaderJars/service.ts | 24 ++++ script/sql/dinky-mysql.sql | 1 + script/sql/dinky-pg.sql | 1 + .../upgrade/1.0.0_schema/mysql/dinky_dml.sql | 1 + 23 files changed, 283 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/auto-realease-ci.yml create mode 100644 .github/workflows/issue-title-check.yml rename dinky-admin/src/main/java/org/dinky/controller/{SystemInfoController.java => SystemController.java} (91%) create mode 100644 dinky-web/src/pages/SettingCenter/ClassLoaderJars/index.tsx create mode 100644 dinky-web/src/pages/SettingCenter/ClassLoaderJars/service.ts diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 161d66a49e..e0b0ecd7a0 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -18,7 +18,7 @@ name: Bug report title: "[Bug] [Module Name] Bug title " description: Problems and issues with code of Dinky -labels: [ "bug", "Waiting for reply" ] +labels: [ "Bug", "Waiting for reply" ] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/document-request.yml b/.github/ISSUE_TEMPLATE/document-request.yml index 52c92e70dd..179569f268 100644 --- a/.github/ISSUE_TEMPLATE/document-request.yml +++ b/.github/ISSUE_TEMPLATE/document-request.yml @@ -17,7 +17,7 @@ name: Document request description: Modify the document title: "[Document][doc] Document title" -labels: [ "documentation", "Waiting for reply" ] +labels: [ "Doc", "Waiting for reply" ] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index dc23a9a53a..59f67527b1 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -17,7 +17,7 @@ name: Feature request description: Suggest an idea for this project title: "[Feature][Module Name] Feature title" -labels: [ "new feature", "Waiting for reply" ] +labels: [ "New Feature", "Waiting for reply" ] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/optimization-request.yml b/.github/ISSUE_TEMPLATE/optimization-request.yml index 184badabb1..43cdd68c73 100644 --- a/.github/ISSUE_TEMPLATE/optimization-request.yml +++ b/.github/ISSUE_TEMPLATE/optimization-request.yml @@ -17,7 +17,7 @@ name: Optimization request description: Suggest a optimization for this project title: "[Optimization][Module Name] Optimization title" -labels: [ "optimization", "Waiting for reply" ] +labels: [ "Optimization", "Waiting for reply" ] body: - type: markdown attributes: diff --git a/.github/workflows/add-assignees.yml b/.github/workflows/add-assignees.yml index 32f716f50f..62c5ede38f 100644 --- a/.github/workflows/add-assignees.yml +++ b/.github/workflows/add-assignees.yml @@ -22,7 +22,7 @@ on: jobs: assign-udf-problem-to-developer: runs-on: ubuntu-latest - if: contains(github.event.issue.labels.*.name, 'bug') + if: contains(github.event.issue.title, 'udf') == true || contains(github.event.issue.title, 'udtf') == true || contains(github.event.issue.body, 'udaf') == true steps: - name: assign problem to developer of udf uses: actions-cool/issues-helper@v3 @@ -85,7 +85,7 @@ jobs: assign-cdc-problem-to-developer: runs-on: ubuntu-latest - if: contains(github.event.issue.title, 'cdc') == true || contains(github.event.issue.title, 'cdcsource') == true || contains(github.event.issue.body, 'cdcsource') == true + if: contains(github.event.issue.title, 'cdc') == true || contains(github.event.issue.title, 'cdcsource') == true || contains(github.event.issue.body, 'pipeline') == true steps: - name: assign problem to developer of cdc and cdcsource uses: actions-cool/issues-helper@v3 diff --git a/.github/workflows/auto-realease-ci.yml b/.github/workflows/auto-realease-ci.yml new file mode 100644 index 0000000000..b0354c383c --- /dev/null +++ b/.github/workflows/auto-realease-ci.yml @@ -0,0 +1,123 @@ +# 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. + +name: "Release Dinky" + +on: + workflow_dispatch: + inputs: + version: + type: string + description: 'Dinky version' + required: true + prerelease: + type: boolean + description: 'Is this a pre-release?' + required: true + release_notes: + type: string + description: 'Release notes' + required: true + +jobs: + release: + name: ${{ inputs.prerelease == 'true' && 'Pre Release' || 'Release' }} + runs-on: "ubuntu-latest" + + steps: + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: 8 + distribution: 'adopt' + + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: '18.x' + registry-url: 'https://registry.npmjs.org' + + + - name: "Checkout Dinky" + uses: actions/checkout@v3 + + + - name: "Build Dinky ${{ inputs.version }} with Fink 1.14 Pre Release/Release Artifact" + id: build_dinky1_14 + run: | + ./mvnw -B clean package \ + -Dmaven.test.skip=false \ + -Dspotless.check.skip=true \ + -Denforcer.skip=false \ + -Dmaven.javadoc.skip=true \ + -Pprod,scala-2.12,flink-single-version,flink-1.14,maven-central,web,fast \ + --no-snapshot-updates + - name: "Build Dinky ${{ inputs.version }} with Fink 1.15 Pre Release/Release Artifact" + id: build_dinky1_15 + run: | + ./mvnw -B clean package \ + -Dmaven.test.skip=false \ + -Dspotless.check.skip=true \ + -Denforcer.skip=false \ + -Dmaven.javadoc.skip=true \ + -Pprod,scala-2.12,flink-single-version,flink-1.15,maven-central,web,fast \ + --no-snapshot-updates + + - name: "Build Dinky ${{ inputs.version }} with Fink 1.16 Pre Release/Release Artifact" + id: build_dinky1_16 + run: | + ./mvnw -B clean package \ + -Dmaven.test.skip=false \ + -Dspotless.check.skip=true \ + -Denforcer.skip=false \ + -Dmaven.javadoc.skip=true \ + -Pprod,scala-2.12,flink-single-version,flink-1.16,maven-central,web,fast \ + --no-snapshot-updates + + - name: "Build Dinky ${{ inputs.version }} with Fink 1.17 Pre Release/Release Artifact" + id: build_dinky1_17 + run: | + ./mvnw -B clean package \ + -Dmaven.test.skip=false \ + -Dspotless.check.skip=true \ + -Denforcer.skip=false \ + -Dmaven.javadoc.skip=true \ + -Pprod,scala-2.12,flink-single-version,flink-1.17,maven-central,web,fast \ + --no-snapshot-updates + + - name: "Build Dinky ${{ inputs.version }} with Fink 1.18 Pre Release/Release Artifact" + id: build_dinky1_18 + run: | + ./mvnw -B clean package \ + -Dmaven.test.skip=false \ + -Dspotless.check.skip=true \ + -Denforcer.skip=false \ + -Dmaven.javadoc.skip=true \ + -Pprod,scala-2.12,flink-single-version,flink-1.18,maven-central,web,fast \ + --no-snapshot-updates + + - name: Automatic Upload Releases to GitHub Releases Page + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: false + draft: false + upload_url: https://github.com/DataLinkDC/dinky/releases + title: "Dinky ${{ inputs.version }} Release" + body: | + ${{ inputs.release_notes }} + files: | + ./build/dinky-release-*.tar.gz \ No newline at end of file diff --git a/.github/workflows/issue-title-check.yml b/.github/workflows/issue-title-check.yml new file mode 100644 index 0000000000..0f07191381 --- /dev/null +++ b/.github/workflows/issue-title-check.yml @@ -0,0 +1,28 @@ +name: Issue Title Standard Check + +on: + issues: + types: [opened, edited] + +jobs: + check-issue: + runs-on: ubuntu-latest + steps: + - uses: actions-cool/issues-helper@v2.2.0 + id: check + name: Check Issue Title + with: + actions: 'check-issue' + issue-number: ${{ github.event.issue.number }} + title-excludes: '[Bug],[Feature],[Doc],[Refactor],[Optimization],[Improvement]' + + - if: steps.check.outputs.check-result == 'false' && github.event.issue.state == 'open' + uses: actions-cool/issues-helper@v2.2.0 + name: Create Comment + with: + actions: 'create-comment' + issue-number: ${{ github.event.issue.number }} + body: | + Hi @${{ github.event.issue.user.login }}, It is detected that the current Issue title is not standardized. Please refer to [Issue Notes](http://www.dinky.org.cn/docs/next/developer_guide/contribution/issue) to modify it. + + 你好 @${{ github.event.issue.user.login }}, 检测到当前 Issue 标题不规范, 请参考 [Issue 须知](http://www.dinky.org.cn/docs/next/developer_guide/contribution/issue) 进行修改 \ No newline at end of file diff --git a/.github/workflows/pr-reviewer-assign.yml b/.github/workflows/pr-reviewer-assign.yml index aa5f2ef8b7..ffdae85ac5 100644 --- a/.github/workflows/pr-reviewer-assign.yml +++ b/.github/workflows/pr-reviewer-assign.yml @@ -24,12 +24,12 @@ jobs: reviewers: 'zackyoungh,gaoyan1998,Zzm0809,aiwenmo' review-creator: false -# -# - name: Add project -# if: "github.event_name == 'pull_request_target'" -# uses: alex-page/github-project-automation-plus@v0.8.1 -# with: -# project: Dinky Roadmap -# column: Doing -# repo-token: ${{ secrets.GITHUB_TOKEN }} -# action: 'add-project-column' \ No newline at end of file + + - name: Add project + if: "github.event_name == 'pull_request_target'" + uses: alex-page/github-project-automation-plus@v0.8.1 + with: + project: Dinky Roadmap + column: RoadMap + repo-token: ${{ secrets.GITHUB_TOKEN }} + action: add diff --git a/dinky-admin/src/main/java/org/dinky/controller/SystemInfoController.java b/dinky-admin/src/main/java/org/dinky/controller/SystemController.java similarity index 91% rename from dinky-admin/src/main/java/org/dinky/controller/SystemInfoController.java rename to dinky-admin/src/main/java/org/dinky/controller/SystemController.java index a3f457cc08..253555cc69 100644 --- a/dinky-admin/src/main/java/org/dinky/controller/SystemInfoController.java +++ b/dinky-admin/src/main/java/org/dinky/controller/SystemController.java @@ -43,7 +43,7 @@ @Api(tags = "System Controller") @RequestMapping("/api/system") @RequiredArgsConstructor -public class SystemInfoController { +public class SystemController { private final SystemService systemService; @@ -83,4 +83,10 @@ public Result getRootLog() { public Result readFile(@RequestParam String path) { return Result.data(systemService.readFile(path)); } + + @GetMapping("/queryAllClassLoaderJarFiles") + @ApiOperation("Query All ClassLoader Jar Files") + public Result> queryAllClassLoaderJarFiles() { + return Result.succeed(systemService.queryAllClassLoaderJarFiles()); + } } diff --git a/dinky-admin/src/main/java/org/dinky/service/SystemService.java b/dinky-admin/src/main/java/org/dinky/service/SystemService.java index a7ed3507ae..1da97a4213 100644 --- a/dinky-admin/src/main/java/org/dinky/service/SystemService.java +++ b/dinky-admin/src/main/java/org/dinky/service/SystemService.java @@ -45,4 +45,6 @@ public interface SystemService { * @return {@link String} */ String readFile(String path); + + List queryAllClassLoaderJarFiles(); } diff --git a/dinky-admin/src/main/java/org/dinky/service/impl/SystemServiceImpl.java b/dinky-admin/src/main/java/org/dinky/service/impl/SystemServiceImpl.java index 04b3c66e29..cfd853dbe9 100644 --- a/dinky-admin/src/main/java/org/dinky/service/impl/SystemServiceImpl.java +++ b/dinky-admin/src/main/java/org/dinky/service/impl/SystemServiceImpl.java @@ -26,10 +26,15 @@ import org.dinky.utils.TreeUtil; import java.io.File; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Service; +import cn.hutool.core.util.ClassLoaderUtil; + /** * SystemServiceImpl * @@ -48,4 +53,21 @@ public List listLogDir() { public String readFile(String path) { return DirUtil.readFile(path); } + + /** + * @return + */ + @Override + public List queryAllClassLoaderJarFiles() { + List jarFiles = new ArrayList<>(); + ClassLoader systemClassLoader = ClassLoaderUtil.getSystemClassLoader(); + if (systemClassLoader instanceof URLClassLoader) { + URLClassLoader urlClassLoader = (URLClassLoader) systemClassLoader; + URL[] urlClassLoaderURLs = urlClassLoader.getURLs(); + for (URL url : urlClassLoaderURLs) { + jarFiles.add(url.getFile()); + } + } + return jarFiles; + } } diff --git a/dinky-admin/src/main/resources/db/db-h2-dml.sql b/dinky-admin/src/main/resources/db/db-h2-dml.sql index aa1e36dcc9..785c578659 100644 --- a/dinky-admin/src/main/resources/db/db-h2-dml.sql +++ b/dinky-admin/src/main/resources/db/db-h2-dml.sql @@ -189,6 +189,7 @@ insert into dinky_sys_menu values (153, 150, '查询', '/registration/datasource insert into dinky_sys_menu values (154, 150, '生成 SQL', '/registration/datasource/detail/gensql', null, 'registration:datasource:detail:gensql', 'ConsoleSqlOutlined', 'F', 0, 152, '2024-01-18 21:52:06', '2024-01-18 22:10:29', null); insert into dinky_sys_menu values (155, 150, ' 控制台', '/registration/datasource/detail/console', null, 'registration:datasource:detail:console', 'ConsoleSqlOutlined', 'F', 0, 153, '2024-01-18 21:52:47', '2024-01-18 22:10:37', null); insert into dinky_sys_menu values (156, 150, ' 刷新', '/registration/datasource/detail/refresh', null, 'registration:datasource:detail:refresh', 'ReloadOutlined', 'F', 0, 154, '2024-01-18 22:13:47', '2024-01-18 22:13:47', null); +insert into dinky_sys_menu values (157, 6, '类加载器 Jars', '/settings/classloaderjars', './SettingCenter/ClassLoaderJars', 'settings:classloaderjars', 'CodeSandboxOutlined', 'C', 0, 155, '2024-01-29 16:51:51', '2024-01-29 16:51:51', null); -- ---------------------------- -- Records of dinky_alert_rule diff --git a/dinky-web/config/routes.ts b/dinky-web/config/routes.ts index 396110c245..e29e7f003a 100644 --- a/dinky-web/config/routes.ts +++ b/dinky-web/config/routes.ts @@ -275,6 +275,12 @@ export default [ name: 'alertrulelist', icon: 'ReconciliationOutlined', component: './SettingCenter/AlertRule' + }, + { + path: '/settings/classloaderjars', + name: 'classloaderjars', + icon: 'CodepenOutlined', + component: './SettingCenter/ClassLoaderJars' } ] }, diff --git a/dinky-web/src/locales/en-US/menu.ts b/dinky-web/src/locales/en-US/menu.ts index 57ee945f4f..f15a58706a 100644 --- a/dinky-web/src/locales/en-US/menu.ts +++ b/dinky-web/src/locales/en-US/menu.ts @@ -80,6 +80,7 @@ export default { 'menu.settings': 'Setting Center', 'menu.settings.globalsetting': 'Global Settings', 'menu.settings.systemlog': 'System Log', + 'menu.settings.classloaderjars': 'ClassLoader Jars', 'menu.settings.process': 'Process List', 'menu.settings.services': 'Servers List', 'menu.settings.alertrulelist': 'Alert Rules', diff --git a/dinky-web/src/locales/en-US/pages.ts b/dinky-web/src/locales/en-US/pages.ts index fde0d14a44..dd4ea89dd7 100644 --- a/dinky-web/src/locales/en-US/pages.ts +++ b/dinky-web/src/locales/en-US/pages.ts @@ -1215,5 +1215,8 @@ export default { 'lineage.collapseUpstream': 'Collapse Upstream(UnSupported)', 'lineage.showMap': 'Show Map', 'lineage.hideMap': 'Hide Map', - 'lineage.refresh': 'Refresh' + 'lineage.refresh': 'Refresh', + + 'sys.classLoaderJars.tips': + 'The following content shows the list of jar packages loaded by the system class loader inside the Dinky service. In this way, you can visually view all Jar files that have been loaded inside the service to help troubleshoot Jar package conflicts and other issues.' }; diff --git a/dinky-web/src/locales/zh-CN/menu.ts b/dinky-web/src/locales/zh-CN/menu.ts index c79e49faa4..685b054bde 100644 --- a/dinky-web/src/locales/zh-CN/menu.ts +++ b/dinky-web/src/locales/zh-CN/menu.ts @@ -80,6 +80,7 @@ export default { 'menu.settings': '配置中心', 'menu.settings.globalsetting': '全局配置', 'menu.settings.systemlog': '系统日志', + 'menu.settings.classloaderjars': '类加载器 Jars', 'menu.settings.process': '进程列表', 'menu.settings.services': '服务器列表', 'menu.settings.alertrulelist': '告警策略', diff --git a/dinky-web/src/locales/zh-CN/pages.ts b/dinky-web/src/locales/zh-CN/pages.ts index 7209ca0dc7..2f13cd35c4 100644 --- a/dinky-web/src/locales/zh-CN/pages.ts +++ b/dinky-web/src/locales/zh-CN/pages.ts @@ -1171,5 +1171,8 @@ export default { 'lineage.collapseUpstream': '收起上游(暂未实现)', 'lineage.showMap': '显示小地图', 'lineage.hideMap': '隐藏小地图', - 'lineage.refresh': '刷新血缘' + 'lineage.refresh': '刷新血缘', + + 'sys.classLoaderJars.tips': + '下述内容展示了 Dinky 服务内部的系统类加载器加载的 jar 包列表,可以通过此种方式直观的查看服务内部已经加载的所有 Jar 文件,以助于排查 Jar 包冲突等问题' }; diff --git a/dinky-web/src/pages/DataStudio/HeaderContainer/Explain/index.tsx b/dinky-web/src/pages/DataStudio/HeaderContainer/Explain/index.tsx index 9cb1d5ff0f..4c942cd43f 100644 --- a/dinky-web/src/pages/DataStudio/HeaderContainer/Explain/index.tsx +++ b/dinky-web/src/pages/DataStudio/HeaderContainer/Explain/index.tsx @@ -228,7 +228,7 @@ const Explain: React.FC = (props: any) => { style={{ alignItems: 'inherit' }} code={explainInfo} language='java' - height='500px' + height='92vh' /> diff --git a/dinky-web/src/pages/SettingCenter/ClassLoaderJars/index.tsx b/dinky-web/src/pages/SettingCenter/ClassLoaderJars/index.tsx new file mode 100644 index 0000000000..8a865ee3bc --- /dev/null +++ b/dinky-web/src/pages/SettingCenter/ClassLoaderJars/index.tsx @@ -0,0 +1,41 @@ +/* + * + * 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. + * + */ + +import CodeShow from '@/components/CustomEditor/CodeShow'; +import { queryClassLoaderJars } from '@/pages/SettingCenter/ClassLoaderJars/service'; +import { l } from '@/utils/intl'; +import { Alert, Space } from 'antd'; +import { useEffect, useState } from 'react'; + +export default () => { + const [data, setData] = useState(''); + + useEffect(() => { + queryClassLoaderJars().then((res) => { + if (res && res.length > 0) setData(res.join('\n')); + }); + }, []); + + return ( + + + + + ); +}; diff --git a/dinky-web/src/pages/SettingCenter/ClassLoaderJars/service.ts b/dinky-web/src/pages/SettingCenter/ClassLoaderJars/service.ts new file mode 100644 index 0000000000..c5284c4cc9 --- /dev/null +++ b/dinky-web/src/pages/SettingCenter/ClassLoaderJars/service.ts @@ -0,0 +1,24 @@ +/* + * + * 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. + * + */ + +import { queryDataByParams } from '@/services/BusinessCrud'; + +export const queryClassLoaderJars = async () => { + return (await queryDataByParams('/api/system/queryAllClassLoaderJarFiles')) ?? []; +}; diff --git a/script/sql/dinky-mysql.sql b/script/sql/dinky-mysql.sql index 5b44eeb6c4..78a5e15e66 100644 --- a/script/sql/dinky-mysql.sql +++ b/script/sql/dinky-mysql.sql @@ -1927,6 +1927,7 @@ insert into dinky_sys_menu values (153, 150, '查询', '/registration/datasource insert into dinky_sys_menu values (154, 150, '生成 SQL', '/registration/datasource/detail/gensql', null, 'registration:datasource:detail:gensql', 'ConsoleSqlOutlined', 'F', 0, 152, '2024-01-18 21:52:06', '2024-01-18 22:10:29', null); insert into dinky_sys_menu values (155, 150, ' 控制台', '/registration/datasource/detail/console', null, 'registration:datasource:detail:console', 'ConsoleSqlOutlined', 'F', 0, 153, '2024-01-18 21:52:47', '2024-01-18 22:10:37', null); insert into dinky_sys_menu values (156, 150, ' 刷新', '/registration/datasource/detail/refresh', null, 'registration:datasource:detail:refresh', 'ReloadOutlined', 'F', 0, 154, '2024-01-18 22:13:47', '2024-01-18 22:13:47', null); +insert into dinky_sys_menu values (157, 6, '类加载器 Jars', '/settings/classloaderjars', './SettingCenter/ClassLoaderJars', 'settings:classloaderjars', 'CodeSandboxOutlined', 'C', 0, 155, '2024-01-29 16:51:51', '2024-01-29 16:51:51', null); COMMIT; diff --git a/script/sql/dinky-pg.sql b/script/sql/dinky-pg.sql index 7a7233f1ee..f9f03511aa 100644 --- a/script/sql/dinky-pg.sql +++ b/script/sql/dinky-pg.sql @@ -3751,6 +3751,7 @@ insert into public.dinky_sys_menu values (153, 150, '查询', '/registration/dat insert into public.dinky_sys_menu values (154, 150, '生成 SQL', '/registration/datasource/detail/gensql', null, 'registration:datasource:detail:gensql', 'ConsoleSqlOutlined', 'F', 0, 152, '2024-01-18 21:52:06', '2024-01-18 22:10:29', null); insert into public.dinky_sys_menu values (155, 150, ' 控制台', '/registration/datasource/detail/console', null, 'registration:datasource:detail:console', 'ConsoleSqlOutlined', 'F', 0, 153, '2024-01-18 21:52:47', '2024-01-18 22:10:37', null); insert into public.dinky_sys_menu values (156, 150, ' 刷新', '/registration/datasource/detail/refresh', null, 'registration:datasource:detail:refresh', 'ReloadOutlined', 'F', 0, 154, '2024-01-18 22:13:47', '2024-01-18 22:13:47', null); +insert into public.dinky_sys_menu values (157, 6, '类加载器 Jars', '/settings/classloaderjars', './SettingCenter/ClassLoaderJars', 'settings:classloaderjars', 'CodeSandboxOutlined', 'C', 0, 155, '2024-01-29 16:51:51', '2024-01-29 16:51:51', null); select setval('dinky_sys_menu_id_seq', (select max(id) from "public"."dinky_sys_menu")); diff --git a/script/sql/upgrade/1.0.0_schema/mysql/dinky_dml.sql b/script/sql/upgrade/1.0.0_schema/mysql/dinky_dml.sql index 455a12651d..5b1e95da01 100644 --- a/script/sql/upgrade/1.0.0_schema/mysql/dinky_dml.sql +++ b/script/sql/upgrade/1.0.0_schema/mysql/dinky_dml.sql @@ -216,6 +216,7 @@ insert into dinky_sys_menu values (153, 150, '查询', '/registration/datasource insert into dinky_sys_menu values (154, 150, '生成 SQL', '/registration/datasource/detail/gensql', null, 'registration:datasource:detail:gensql', 'ConsoleSqlOutlined', 'F', 0, 152, '2024-01-18 21:52:06', '2024-01-18 22:10:29', null); insert into dinky_sys_menu values (155, 150, ' 控制台', '/registration/datasource/detail/console', null, 'registration:datasource:detail:console', 'ConsoleSqlOutlined', 'F', 0, 153, '2024-01-18 21:52:47', '2024-01-18 22:10:37', null); insert into dinky_sys_menu values (156, 150, ' 刷新', '/registration/datasource/detail/refresh', null, 'registration:datasource:detail:refresh', 'ReloadOutlined', 'F', 0, 154, '2024-01-18 22:13:47', '2024-01-18 22:13:47', null); +insert into dinky_sys_menu values (157, 6, '类加载器 Jars', '/settings/classloaderjars', './SettingCenter/ClassLoaderJars', 'settings:classloaderjars', 'CodeSandboxOutlined', 'C', 0, 155, '2024-01-29 16:51:51', '2024-01-29 16:51:51', null); -- ----------------------------