diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/WebServiceBindingCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/WebServiceBindingCore.java index 69ddff7e10..a07b5a263e 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/WebServiceBindingCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/WebServiceBindingCore.java @@ -22,6 +22,7 @@ import graphql.schema.idl.TypeRuntimeWiring; import io.cloudbeaver.DBWebException; import io.cloudbeaver.WebServiceUtils; import io.cloudbeaver.model.WebConnectionConfig; +import io.cloudbeaver.model.session.WebSession; import io.cloudbeaver.model.session.WebSessionManager; import io.cloudbeaver.server.CBPlatform; import io.cloudbeaver.server.graphql.GraphQLEndpoint; @@ -29,6 +30,8 @@ import io.cloudbeaver.service.DBWBindingContext; import io.cloudbeaver.service.WebServiceBindingBase; import io.cloudbeaver.service.core.impl.WebServiceCore; +import java.util.Collections; + /** * Web service implementation */ @@ -56,10 +59,17 @@ public class WebServiceBindingCore extends WebServiceBindingBase .dataFetcher("connectionState", env -> getService(env).getConnectionState(getWebSession(env), env.getArgument("id"))) .dataFetcher("connectionInfo", env -> getService(env).getConnectionState(getWebSession(env), env.getArgument("id"))) - .dataFetcher("readSessionLog", env -> getService(env).readSessionLog( - getWebSession(env), - env.getArgument("maxEntries"), - env.getArgument("clearEntries"))) + .dataFetcher("readSessionLog", env -> { + // CB-90. Log read mustn't extend session lifetime and mustn't fail if there is no session. + WebSession session = findWebSession(env); + if (session == null) { + return Collections.emptyList(); + } + return getService(env).readSessionLog( + getWebSession(env), + env.getArgument("maxEntries"), + env.getArgument("clearEntries")); + }) ; model.getMutationType()