From a15b08904dc325f1faf10e48c5225a87a720f4b5 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 24 Jul 2020 14:53:44 -0400 Subject: [PATCH] reducing application inactivity timeout to make contollers happier --- .../io/src/main/java/com/rusefi/Timeouts.java | 1 + .../java/com/rusefi/io/tcp/BinaryProtocolProxy.java | 3 ++- .../com/rusefi/tools/NetworkConnectorStartup.java | 9 +++------ .../main/java/com/rusefi/proxy/NetworkConnector.java | 1 + .../src/main/java/com/rusefi/server/Backend.java | 11 ++++++++++- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/java_console/io/src/main/java/com/rusefi/Timeouts.java b/java_console/io/src/main/java/com/rusefi/Timeouts.java index dabbab278a..0ea6bfe7c0 100644 --- a/java_console/io/src/main/java/com/rusefi/Timeouts.java +++ b/java_console/io/src/main/java/com/rusefi/Timeouts.java @@ -5,6 +5,7 @@ package com.rusefi; */ public interface Timeouts { int SECOND = 1000; + int MINUTE = 60 * SECOND; int COMMAND_TIMEOUT_SEC = 10; // seconds /** diff --git a/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java b/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java index 8e38c7229f..d32f77e1b3 100644 --- a/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java +++ b/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java @@ -21,8 +21,9 @@ public class BinaryProtocolProxy { /** * we expect server to at least request output channels once in a while * it could be a while between user connecting authenticator and actually connecting application to authenticator + * See Backend#APPLICATION_INACTIVITY_TIMEOUT */ - public static final int USER_IO_TIMEOUT = 600 * Timeouts.SECOND; + public static final int USER_IO_TIMEOUT = 10 * Timeouts.MINUTE; public static ServerHolder createProxy(IoStream targetEcuSocket, int serverProxyPort) { Function clientSocketRunnableFactory = clientSocket -> () -> { diff --git a/java_console/ui/src/main/java/com/rusefi/tools/NetworkConnectorStartup.java b/java_console/ui/src/main/java/com/rusefi/tools/NetworkConnectorStartup.java index 8a0bc3c3e5..56290f0ca0 100644 --- a/java_console/ui/src/main/java/com/rusefi/tools/NetworkConnectorStartup.java +++ b/java_console/ui/src/main/java/com/rusefi/tools/NetworkConnectorStartup.java @@ -24,12 +24,9 @@ public class NetworkConnectorStartup { return; } - SessionDetails sessionDetails = NetworkConnector.runNetworkConnector(authToken, autoDetectedPort, Backend.SERVER_PORT_FOR_CONTROLLERS, new TcpIoStream.DisconnectListener() { - @Override - public void onDisconnect() { - System.err.println("Disconnect detected"); - System.exit(-1); - } + SessionDetails sessionDetails = NetworkConnector.runNetworkConnector(authToken, autoDetectedPort, Backend.SERVER_PORT_FOR_CONTROLLERS, () -> { + System.err.println("Disconnect detected"); + System.exit(-1); }); System.out.println("Running with " + sessionDetails.getOneTimeToken()); } diff --git a/java_tools/proxy_server/src/main/java/com/rusefi/proxy/NetworkConnector.java b/java_tools/proxy_server/src/main/java/com/rusefi/proxy/NetworkConnector.java index 3419894a22..d6a4657ade 100644 --- a/java_tools/proxy_server/src/main/java/com/rusefi/proxy/NetworkConnector.java +++ b/java_tools/proxy_server/src/main/java/com/rusefi/proxy/NetworkConnector.java @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; /** * Connector between rusEFI ECU and rusEFI server + * see NetworkConnectorStartup */ public class NetworkConnector { public static SessionDetails runNetworkConnector(String authToken, String controllerPort, int serverPortForControllers, TcpIoStream.DisconnectListener disconnectListener) throws InterruptedException, IOException { diff --git a/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java b/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java index 467e303f24..fc781d5634 100644 --- a/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java +++ b/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java @@ -2,6 +2,7 @@ package com.rusefi.server; import com.devexperts.logging.Logging; import com.rusefi.Listener; +import com.rusefi.Timeouts; import com.rusefi.binaryprotocol.BinaryProtocol; import com.rusefi.core.Sensor; import com.rusefi.io.IoStream; @@ -42,6 +43,14 @@ public class Backend implements Closeable { private static final String MAX_PACKET_GAP = "MAX_PACKET_GAP"; private static final String IS_USED = "isUsed"; + /** + * Application with exclusive access should connect tuning application within 3 minutes + * Should be at least twice less than USER_IO_TIMEOUT to prevent controller disconnect + * + * @see BinaryProtocolProxy#USER_IO_TIMEOUT + */ + private static final int APPLICATION_INACTIVITY_TIMEOUT = 3 * Timeouts.MINUTE; + private final FkRegex showOnlineControllers = new FkRegex(ProxyClient.LIST_CONTROLLERS_PATH, (Take) req -> getControllersOnline() ); @@ -69,7 +78,7 @@ public class Backend implements Closeable { public int serverPortForControllers; public Backend(UserDetailsResolver userDetailsResolver, int httpPort) { - this(userDetailsResolver, httpPort, 600 * SECOND); + this(userDetailsResolver, httpPort, APPLICATION_INACTIVITY_TIMEOUT); } public Backend(UserDetailsResolver userDetailsResolver, int httpPort, int applicationTimeout) {