Skip to content

Commit 1ea9c73

Browse files
committed
Fix #33340: throw error when app recovery is used together with pre-initialization
1 parent 0ae45c0 commit 1ea9c73

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

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

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

2323
import com.fasterxml.jackson.datatype.jsr353.JSR353Module;
24+
import eu.openanalytics.containerproxy.backend.dispatcher.proxysharing.ProxySharingDispatcher;
25+
import eu.openanalytics.containerproxy.model.spec.ProxySpec;
2426
import eu.openanalytics.containerproxy.service.hearbeat.ActiveProxiesService;
2527
import eu.openanalytics.containerproxy.service.hearbeat.HeartbeatService;
2628
import eu.openanalytics.containerproxy.service.hearbeat.IHeartbeatProcessor;
29+
import eu.openanalytics.containerproxy.spec.IProxySpecProvider;
2730
import eu.openanalytics.containerproxy.util.LoggingConfigurer;
2831
import eu.openanalytics.containerproxy.util.ProxyMappingManager;
2932
import io.undertow.Handlers;
@@ -106,6 +109,8 @@ public class ContainerProxyApplication {
106109
private DefaultCookieSerializer defaultCookieSerializer;
107110
@Autowired(required = false)
108111
private SessionManagerFactory sessionManagerFactory;
112+
@Inject
113+
private IProxySpecProvider proxySpecProvider;
109114

110115
public static void main(String[] args) {
111116
SpringApplication app = new SpringApplication(ContainerProxyApplication.class);
@@ -247,6 +252,14 @@ public void init() {
247252
log.warn("WARNING: Invalid configuration detected: user sessions are stored in Redis and App Recovery is enabled. Instead of using App Recovery, change store-mode so that app sessions are stored in Redis!");
248253
}
249254
}
255+
if (environment.getProperty(PROPERTY_RECOVER_RUNNING_PROXIES, Boolean.class, false) ||
256+
environment.getProperty(PROPERTY_RECOVER_RUNNING_PROXIES_FROM_DIFFERENT_CONFIG, Boolean.class, false)) {
257+
for (ProxySpec proxySpec : proxySpecProvider.getSpecs()) {
258+
if (ProxySharingDispatcher.supportSpec(proxySpec)) {
259+
throw new IllegalStateException("Cannot use App Recovery together with container pre-initialization or sharing");
260+
}
261+
}
262+
}
250263

251264
boolean hideSpecDetails = environment.getProperty(PROP_API_SECURITY_HIDE_SPEC_DETAILS, Boolean.class, true);
252265
if (!hideSpecDetails) {

0 commit comments

Comments
 (0)