Skip to content

Commit c345e80

Browse files
authored
Remove trailing slash from proxyTo and externalUrl
1 parent d582094 commit c345e80

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

gateway-ha/src/main/java/io/trino/gateway/ha/router/HaGatewayManager.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,23 @@ public void activateBackend(String backendName)
9494
@Override
9595
public ProxyBackendConfiguration addBackend(ProxyBackendConfiguration backend)
9696
{
97-
dao.create(backend.getName(), backend.getRoutingGroup(), backend.getProxyTo(), backend.getExternalUrl(), backend.isActive());
97+
String backendProxyTo = removeTrailingSlash(backend.getProxyTo());
98+
String backendExternalUrl = removeTrailingSlash(backend.getExternalUrl());
99+
dao.create(backend.getName(), backend.getRoutingGroup(), backendProxyTo, backendExternalUrl, backend.isActive());
98100
return backend;
99101
}
100102

101103
@Override
102104
public ProxyBackendConfiguration updateBackend(ProxyBackendConfiguration backend)
103105
{
106+
String backendProxyTo = removeTrailingSlash(backend.getProxyTo());
107+
String backendExternalUrl = removeTrailingSlash(backend.getExternalUrl());
104108
GatewayBackend model = dao.findFirstByName(backend.getName());
105109
if (model == null) {
106-
dao.create(backend.getName(), backend.getRoutingGroup(), backend.getProxyTo(), backend.getExternalUrl(), backend.isActive());
110+
dao.create(backend.getName(), backend.getRoutingGroup(), backendProxyTo, backendExternalUrl, backend.isActive());
107111
}
108112
else {
109-
dao.update(backend.getName(), backend.getRoutingGroup(), backend.getProxyTo(), backend.getExternalUrl(), backend.isActive());
113+
dao.update(backend.getName(), backend.getRoutingGroup(), backendProxyTo, backendExternalUrl, backend.isActive());
110114
}
111115
return backend;
112116
}
@@ -130,4 +134,9 @@ private static List<ProxyBackendConfiguration> upcast(List<GatewayBackend> gatew
130134
}
131135
return proxyBackendConfigurations;
132136
}
137+
138+
public static String removeTrailingSlash(String url)
139+
{
140+
return url.replaceAll("/$", "");
141+
}
133142
}

gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaGatewayManager.java

+26
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,30 @@ void testGatewayManager()
8383
.extracting(ProxyBackendConfiguration::getRoutingGroup)
8484
.containsExactly("adhoc");
8585
}
86+
87+
@Test
88+
void testRemoveTrailingSlashInUrl()
89+
{
90+
ProxyBackendConfiguration etl = new ProxyBackendConfiguration();
91+
etl.setActive(false);
92+
etl.setRoutingGroup("etl");
93+
etl.setName("new-etl1");
94+
etl.setProxyTo("https://etl1.trino.gateway.io:443/");
95+
etl.setExternalUrl("https://etl1.trino.gateway.io:443/");
96+
haGatewayManager.addBackend(etl);
97+
98+
assertThat(haGatewayManager.getBackendByName("new-etl1").map(ProxyBackendConfiguration::getProxyTo).orElseThrow()).isEqualTo("https://etl1.trino.gateway.io:443");
99+
assertThat(haGatewayManager.getBackendByName("new-etl1").map(ProxyBackendConfiguration::getExternalUrl).orElseThrow()).isEqualTo("https://etl1.trino.gateway.io:443");
100+
101+
ProxyBackendConfiguration etl2 = new ProxyBackendConfiguration();
102+
etl2.setActive(false);
103+
etl2.setRoutingGroup("etl2");
104+
etl2.setName("new-etl1");
105+
etl2.setProxyTo("https://etl2.trino.gateway.io:443/");
106+
etl2.setExternalUrl("https://etl2.trino.gateway.io:443/");
107+
haGatewayManager.updateBackend(etl2);
108+
109+
assertThat(haGatewayManager.getBackendByName("new-etl1").map(ProxyBackendConfiguration::getProxyTo).orElseThrow()).isEqualTo("https://etl2.trino.gateway.io:443");
110+
assertThat(haGatewayManager.getBackendByName("new-etl1").map(ProxyBackendConfiguration::getExternalUrl).orElseThrow()).isEqualTo("https://etl2.trino.gateway.io:443");
111+
}
86112
}

0 commit comments

Comments
 (0)