Skip to content

Commit 640e9b6

Browse files
committed
Merge pull request 'Fix #18198: extend the lifetime of the session when a websocket connection is active' (#54) from feature/18198_final into develop
LGTM
2 parents e2e45b8 + f49758b commit 640e9b6

13 files changed

Lines changed: 474 additions & 217 deletions

src/main/java/eu/openanalytics/containerproxy/ContainerProxyApplication.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
package eu.openanalytics.containerproxy;
2222

2323
import com.fasterxml.jackson.datatype.jsr353.JSR353Module;
24+
import eu.openanalytics.containerproxy.service.hearbeat.ActiveProxiesService;
25+
import eu.openanalytics.containerproxy.service.hearbeat.HeartbeatService;
26+
import eu.openanalytics.containerproxy.service.hearbeat.SessionReActivatorService;
2427
import eu.openanalytics.containerproxy.util.ProxyMappingManager;
2528
import io.undertow.Handlers;
2629
import io.undertow.server.handlers.SameSiteCookieHandler;
@@ -42,6 +45,8 @@
4245
import org.springframework.context.annotation.ComponentScan;
4346
import org.springframework.core.env.Environment;
4447
import org.springframework.data.redis.connection.RedisConnectionFactory;
48+
import org.springframework.scheduling.annotation.EnableAsync;
49+
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
4550
import org.springframework.security.core.session.SessionRegistry;
4651
import org.springframework.security.web.session.HttpSessionEventPublisher;
4752
import org.springframework.session.FindByIndexNameSessionRepository;
@@ -56,9 +61,12 @@
5661
import java.net.UnknownHostException;
5762
import java.nio.file.Files;
5863
import java.nio.file.Paths;
64+
import java.util.Arrays;
5965
import java.util.Objects;
6066
import java.util.Properties;
67+
import java.util.concurrent.Executor;
6168

69+
@EnableAsync
6270
@SpringBootApplication
6371
@ComponentScan("eu.openanalytics")
6472
public class ContainerProxyApplication {
@@ -199,6 +207,20 @@ public HttpSessionEventPublisher httpSessionEventPublisher() {
199207
return new HttpSessionEventPublisher();
200208
}
201209

210+
@Bean
211+
public Executor taskExecutor() {
212+
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
213+
executor.setCorePoolSize(2);
214+
executor.setMaxPoolSize(4);
215+
executor.initialize();
216+
return executor;
217+
}
218+
219+
@Bean
220+
public HeartbeatService heartbeatService(ActiveProxiesService activeProxiesService, SessionReActivatorService sessionReActivatorService) {
221+
return new HeartbeatService(Arrays.asList(activeProxiesService, sessionReActivatorService));
222+
}
223+
202224
public static Properties getDefaultProperties() {
203225
Properties properties = new Properties();
204226

src/main/java/eu/openanalytics/containerproxy/backend/strategy/impl/DefaultProxyLogoutStrategy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import javax.inject.Inject;
2424

2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
26+
import org.springframework.context.annotation.Lazy;
2627
import org.springframework.stereotype.Component;
2728

2829
import eu.openanalytics.containerproxy.backend.strategy.IProxyLogoutStrategy;

src/main/java/eu/openanalytics/containerproxy/event/UserLogoutEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class UserLogoutEvent extends ApplicationEvent {
3333
* @param source
3434
* @param userId
3535
* @param sessionId
36-
* @param wasExpired whether the user is logged autoamtically because the session has expired
36+
* @param wasExpired whether the user is logged automatically because the session has expired
3737
*/
3838
public UserLogoutEvent(Object source, String userId, String sessionId, Boolean wasExpired) {
3939
super(source);

src/main/java/eu/openanalytics/containerproxy/service/AppRecoveryService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.UserIdKey;
3232
import eu.openanalytics.containerproxy.model.spec.ContainerSpec;
3333
import eu.openanalytics.containerproxy.model.spec.ProxySpec;
34+
import eu.openanalytics.containerproxy.service.hearbeat.HeartbeatService;
3435
import eu.openanalytics.containerproxy.spec.IProxySpecProvider;
3536
import eu.openanalytics.containerproxy.spec.expression.ExpressionAwareContainerSpec;
3637
import eu.openanalytics.containerproxy.spec.expression.SpecExpressionResolver;
@@ -139,7 +140,7 @@ public void recoverRunningApps() throws Exception {
139140

140141
for (Proxy proxy: proxies.values()) {
141142
proxyService.addExistingProxy(proxy);
142-
heartbeatService.heartbeatReceived(proxy);
143+
heartbeatService.heartbeatReceived(HeartbeatService.HeartbeatSource.INTERNAL, proxy.getId(), null);
143144
}
144145

145146
} else {

src/main/java/eu/openanalytics/containerproxy/service/HeartbeatService.java

Lines changed: 0 additions & 213 deletions
This file was deleted.

0 commit comments

Comments
 (0)