dbeaver/pro#3465 udbt reconnect improve (#3029)

* dbeaver/pro#3465 udbt reconnect improve

* dbeaver/pro#3465 Make use of `java.time.Duration` in `PeriodicJob`

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: ShadelessFox <yanuari.channel@gmail.com>
This commit is contained in:
Alexander Skoblikov
2024-11-05 14:20:06 +01:00
committed by GitHub
co-authored by kseniaguzeeva ShadelessFox
parent 22cfdb7b4b
commit 18cb9e5956
3 changed files with 15 additions and 5 deletions
@@ -23,13 +23,14 @@ import org.jkiss.dbeaver.model.app.DBPPlatform;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.PeriodicJob;
import java.time.Duration;
public class SessionStateJob extends PeriodicJob {
private static final Log log = Log.getLog(SessionStateJob.class);
private static final int PERIOD_MS = 30_000; // once per 30 seconds
private final WebSessionManager sessionManager;
public SessionStateJob(@NotNull DBPPlatform platform, WebSessionManager sessionManager) {
super("Session state sender", platform, PERIOD_MS);
super("Session state sender", platform, Duration.ofSeconds(30));
this.sessionManager = sessionManager;
}
@@ -23,16 +23,17 @@ import org.jkiss.dbeaver.model.app.DBPPlatform;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.PeriodicJob;
import java.time.Duration;
/**
* WebSessionMonitorJob
*/
public class WebSessionMonitorJob extends PeriodicJob {
private static final Log log = Log.getLog(WebSessionMonitorJob.class);
private static final int MONITOR_INTERVAL = 10000; // once per 10 seconds
private final WebSessionManager sessionManager;
public WebSessionMonitorJob(@NotNull DBPPlatform platform, @NotNull WebSessionManager sessionManager) {
super("Web session monitor", platform, MONITOR_INTERVAL);
super("Web session monitor", platform, Duration.ofSeconds(10));
this.sessionManager = sessionManager;
}
@@ -18,10 +18,10 @@ package io.cloudbeaver.service.session;
import io.cloudbeaver.DBWebException;
import io.cloudbeaver.auth.SMTokenCredentialProvider;
import io.cloudbeaver.server.AppWebSessionManager;
import io.cloudbeaver.model.session.*;
import io.cloudbeaver.registry.WebHandlerRegistry;
import io.cloudbeaver.registry.WebSessionHandlerDescriptor;
import io.cloudbeaver.server.AppWebSessionManager;
import io.cloudbeaver.server.CBApplication;
import io.cloudbeaver.server.CBConstants;
import io.cloudbeaver.server.events.WSWebUtils;
@@ -315,6 +315,14 @@ public class WebSessionManager implements AppWebSessionManager {
var existSession = sessionMap.get(sessionId);
if (existSession instanceof WebHeadlessSession) {
var creds = existSession.getUserContext().getActiveUserCredentials();
if (creds == null || !smAccessToken.equals(creds.getSmAccessToken())) {
existSession.getUserContext().refresh(
smAccessToken,
null,
authPermissions
);
}
return (WebHeadlessSession) existSession;
}
if (existSession != null) {