diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java index f59026ed6b..504ca37fd3 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java @@ -1,6 +1,7 @@ package io.dataease.datasource.provider; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jcraft.jsch.Session; import io.dataease.dataset.utils.FieldUtils; import io.dataease.datasource.dao.auto.entity.CoreDatasource; import io.dataease.datasource.dao.auto.entity.CoreDriver; @@ -1380,6 +1381,13 @@ public class CalciteProvider extends Provider { if (rootSchema.getSubSchema(datasourceSchemaDTO.getSchemaAlias()) == null) { buildSchema(datasourceRequest, calciteConnection); } + DatasourceConfiguration configuration = JsonUtil.parseObject(datasourceDTO.getConfiguration(), DatasourceConfiguration.class); + if(configuration.isUseSSH()){ + Session session =Provider.getSessions().get(datasourceDTO.getId()); + session.disconnect(); + Provider.getSessions().remove(datasourceDTO.getId()); + startSshSession(configuration, null, datasourceDTO.getId()); + } } catch (Exception e) { DEException.throwException(e.getMessage()); } diff --git a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/provider/Provider.java b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/provider/Provider.java index a3a54d6625..72365c00f2 100644 --- a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/provider/Provider.java +++ b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/provider/Provider.java @@ -283,7 +283,7 @@ public abstract class Provider { Integer lport = Provider.getLPorts().get(datasourceId); if (lport != null) { configuration.setLPort(lport); - if (Provider.getSessions().get(datasourceId) == null || !Provider.getSessions().get(datasourceId).isConnected()) { + if (Provider.getSessions().get(datasourceId) == null || !Provider.getSessions().get(datasourceId).isConnected()) { Session session = initSession(configuration); Provider.getSessions().put(datasourceId, session); }