From 070b80f448396514f0e068ce4da6e7d9fde04838 Mon Sep 17 00:00:00 2001 From: Marcos Marx Date: Mon, 27 Jun 2022 09:04:01 -0400 Subject: [PATCH] remove VersionMismatchServer (#14076) * remove VersionMismatchServer * remove VersionMismatchServerTest * revert intended changes --- .../VersionMismatchServer.java | 95 ------------------- .../VersionMismatchServerTest.java | 67 ------------- 2 files changed, 162 deletions(-) delete mode 100644 airbyte-server/src/main/java/io/airbyte/server/version_mismatch/VersionMismatchServer.java delete mode 100644 airbyte-server/src/test/java/io/airbyte/server/version_mismatch/VersionMismatchServerTest.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/version_mismatch/VersionMismatchServer.java b/airbyte-server/src/main/java/io/airbyte/server/version_mismatch/VersionMismatchServer.java deleted file mode 100644 index b15bf640424a..000000000000 --- a/airbyte-server/src/main/java/io/airbyte/server/version_mismatch/VersionMismatchServer.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server.version_mismatch; - -import com.google.common.collect.ImmutableMap; -import io.airbyte.commons.json.Jsons; -import io.airbyte.commons.version.AirbyteVersion; -import io.airbyte.server.CorsFilter; -import io.airbyte.server.ServerRunnable; -import java.io.IOException; -import java.util.Map; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Serves an error for any call. This is only used if the server has a different version than the - * stored version in the database, which means that there is a "version mismatch". When a version - * mismatch occurs, a migration is required to upgrade the database. Until then, we show errors - * using this server in order to prevent getting into a bad state. - */ -public class VersionMismatchServer implements ServerRunnable { - - private static final Logger LOGGER = LoggerFactory.getLogger(VersionMismatchServer.class); - private final AirbyteVersion version1; - private final AirbyteVersion version2; - private final int port; - - public VersionMismatchServer(final AirbyteVersion version1, final AirbyteVersion version2, final int port) { - this.version1 = version1; - this.version2 = version2; - this.port = port; - } - - @Override - public void start() throws Exception { - final Server server = getServer(); - server.start(); - server.join(); - } - - protected Server getServer() { - final String errorMessage = AirbyteVersion.getErrorMessage(version1, version2); - LOGGER.error(errorMessage); - final Server server = new Server(port); - VersionMismatchServlet.ERROR_MESSAGE = errorMessage; - final ServletContextHandler handler = new ServletContextHandler(); - handler.addServlet(VersionMismatchServlet.class, "/*"); - server.setHandler(handler); - - return server; - } - - public static class VersionMismatchServlet extends HttpServlet { - - // this error message should be overwritten before any requests are served - public static String ERROR_MESSAGE = "Versions don't match!"; - - public void doPost(final HttpServletRequest request, final HttpServletResponse response) throws IOException { - this.serveDefaultRequest(response); - } - - public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException { - this.serveDefaultRequest(response); - } - - public void doOptions(final HttpServletRequest request, final HttpServletResponse response) throws IOException { - this.addCorsHeaders(response); - } - - private void serveDefaultRequest(final HttpServletResponse response) throws IOException { - final var outputMap = ImmutableMap.of("error", ERROR_MESSAGE); - - this.addCorsHeaders(response); - - response.setContentType("application/json"); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.getWriter().println(Jsons.serialize(outputMap)); - } - - private void addCorsHeaders(final HttpServletResponse response) { - for (final Map.Entry entry : CorsFilter.MAP.entrySet()) { - response.setHeader(entry.getKey(), entry.getValue()); - } - } - - } - -} diff --git a/airbyte-server/src/test/java/io/airbyte/server/version_mismatch/VersionMismatchServerTest.java b/airbyte-server/src/test/java/io/airbyte/server/version_mismatch/VersionMismatchServerTest.java deleted file mode 100644 index 635f1bbbf162..000000000000 --- a/airbyte-server/src/test/java/io/airbyte/server/version_mismatch/VersionMismatchServerTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server.version_mismatch; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import com.google.common.net.HttpHeaders; -import io.airbyte.commons.version.AirbyteVersion; -import java.net.HttpURLConnection; -import java.net.ServerSocket; -import java.net.URI; -import java.net.URL; -import org.eclipse.jetty.http.HttpStatus; -import org.eclipse.jetty.server.Server; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -public class VersionMismatchServerTest { - - private static final AirbyteVersion VERSION1 = new AirbyteVersion("0.1.0-alpha"); - private static final AirbyteVersion VERSION2 = new AirbyteVersion("0.2.0-alpha"); - - private static URI rootUri; - private static Server server; - - @BeforeAll - public static void startServer() throws Exception { - // get any available local port - final ServerSocket socket = new ServerSocket(0); - final int port = socket.getLocalPort(); - socket.close(); - - server = new VersionMismatchServer(VERSION1, VERSION2, port).getServer(); - rootUri = new URI("http://localhost:" + port + "/"); - - server.start(); - } - - @AfterAll - public static void stopServer() throws Exception { - server.stop(); - } - - @ParameterizedTest - @ValueSource(strings = { - "/", - "/api/v1/health", - "/random_path" - }) - public void testIt(final String relativePath) throws Exception { - final URL url = rootUri.resolve(relativePath).toURL(); - final HttpURLConnection http = (HttpURLConnection) url.openConnection(); - - http.connect(); - - assertEquals(HttpStatus.INTERNAL_SERVER_ERROR_500, http.getResponseCode()); - - assertEquals(http.getHeaderField(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN), "*"); - assertEquals(http.getHeaderField(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS), "Origin, Content-Type, Accept, Content-Encoding"); - assertEquals(http.getHeaderField(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS), "GET, POST, PUT, DELETE, OPTIONS, HEAD"); - } - -}