mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
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:
co-authored by
kseniaguzeeva
ShadelessFox
parent
22cfdb7b4b
commit
18cb9e5956
+3
-2
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user