diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/WebSessionProjectImpl.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/WebSessionProjectImpl.java index 78128b5f61..8a330a54bd 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/WebSessionProjectImpl.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/WebSessionProjectImpl.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2025 DBeaver Corp and others + * Copyright (C) 2010-2026 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -252,14 +252,14 @@ public class WebSessionProjectImpl extends WebProjectImpl implements DBPAdaptabl } case WSDataSourceEvent.UPDATED -> { if (event.getProperty() == WSDataSourceProperty.CONFIGURATION) { - WebDataSourceUtils.disconnectDataSource(webSession, ds); + WebDataSourceUtils.disconnectDataSource(webSession, ds, true); } if (event.getProperty() != WSDataSourceProperty.INTERNAL) { sendDataSourceUpdatedEvent = true; } } case WSDataSourceEvent.DELETED -> { - WebDataSourceUtils.disconnectDataSource(webSession, ds); + WebDataSourceUtils.disconnectDataSource(webSession, ds, false); if (registry instanceof DBPDataSourceRegistryCache dsrc) { dsrc.removeDataSourceFromList(ds); } @@ -345,7 +345,7 @@ public class WebSessionProjectImpl extends WebProjectImpl implements DBPAdaptabl @NotNull private WebConnectionInfo closeAndDeleteConnection(@NotNull WebConnectionInfo connectionInfo) throws DBWebException { DBPDataSourceContainer dataSourceContainer = connectionInfo.getDataSourceContainer(); - WebDataSourceUtils.disconnectDataSource(webSession, dataSourceContainer); + WebDataSourceUtils.disconnectDataSource(webSession, dataSourceContainer, false); DBPDataSourceRegistry registry = getDataSourceRegistry(); registry.removeDataSource(dataSourceContainer); removeConnection(dataSourceContainer); diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/WebDataSourceUtils.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/WebDataSourceUtils.java index 1a4bd08636..92dbd1068c 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/WebDataSourceUtils.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/utils/WebDataSourceUtils.java @@ -162,18 +162,24 @@ public class WebDataSourceUtils { } - public static boolean disconnectDataSource(@NotNull WebSession webSession, @NotNull DBPDataSourceContainer dataSource) { + public static boolean disconnectDataSource( + @NotNull WebSession webSession, + @NotNull DBPDataSourceContainer dataSource, + boolean sendDisconnectEvent + ) { if (dataSource.isConnected()) { try { dataSource.disconnect(webSession.getProgressMonitor()); - webSession.addSessionEvent( - new WSDataSourceDisconnectEvent( - dataSource.getProject().getId(), - dataSource.getId(), - webSession.getSessionId(), - webSession.getUserId() - ) - ); + if (sendDisconnectEvent) { + webSession.addSessionEvent( + new WSDataSourceDisconnectEvent( + dataSource.getProject().getId(), + dataSource.getId(), + webSession.getSessionId(), + webSession.getUserId() + ) + ); + } return true; } catch (DBException e) { log.error("Error closing connection", e); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java index 9c41c5ac47..f3399deebe 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java @@ -678,7 +678,7 @@ public class WebServiceCore implements DBWServiceCore { WebConnectionInfo connectionInfo = project.getWebConnectionInfo(connectionId); DBPDataSourceContainer dataSourceContainer = connectionInfo.getDataSourceContainer(); - WebDataSourceUtils.disconnectDataSource(webSession, dataSourceContainer); + WebDataSourceUtils.disconnectDataSource(webSession, dataSourceContainer, true); return connectionInfo; }