From 6c0882eb1abdb1c6d2efe709217c5801fffcddd5 Mon Sep 17 00:00:00 2001 From: "Alix von Schirp @ BootMedia Media Production" Date: Fri, 17 May 2024 00:13:55 +0200 Subject: [PATCH] pom.xml: OkHttp version change README.md: Updated API documentation ConfigurationValues.java: Changed default orchestrator ip SnowflakeService.java: Added instance name --- README.md | 6 ++++ pom.xml | 2 +- .../snowflake/ConfigurationValues.java | 2 +- .../services/snowflake/SnowflakeService.java | 35 ++++++++++++++++++- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7d5f217..474b29a 100644 --- a/README.md +++ b/README.md @@ -90,11 +90,17 @@ Http Status: 200 } ``` Response on error: +If the version of the client and the orchestrator do not match the orchestrator will respond with a HTTP code 426. The required version will be | Value name | Value description | |:-------------------------|:--------------------------| | Http Status | 426 - Upgrade required | | `Upgrade` Header content | required software version | + +| Value name | Value description | +|:-------------------------|:--------------------------| +| Http Status | 409 - Conflict | +| `Upgrade` Header content | required software version | #### Worker heartbeat (internal) ```http request GET /orchestra/heartbeat diff --git a/pom.xml b/pom.xml index fd4e955..d1a36da 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,7 @@ com.squareup.okhttp3 okhttp - 6.1.3 + 4.12.0 diff --git a/src/main/java/space/b00tload/services/snowflake/ConfigurationValues.java b/src/main/java/space/b00tload/services/snowflake/ConfigurationValues.java index 728dfcd..42909f3 100644 --- a/src/main/java/space/b00tload/services/snowflake/ConfigurationValues.java +++ b/src/main/java/space/b00tload/services/snowflake/ConfigurationValues.java @@ -7,7 +7,7 @@ public enum ConfigurationValues implements ConfigValues { SEQUENCE_BITS("sequencebits", "S", "SEQUENCE_BITS", "bitcount.sequence", "12"), EPOCH("epoch", "E", "EPOCH", "epoch", "1704067200000"), MACHINE_ID("machineid", "I", "MACHINE_ID", "machineid", "-1"), - ORCHESTRATOR_IP("orchestrator", "O", "ORCHESTRATOR_IP", "orchestrator.ip", "localhost"), + ORCHESTRATOR_IP("orchestrator", "O", "ORCHESTRATOR_IP", "orchestrator.ip", "http://disabled"), ; private final String cliFlag; diff --git a/src/main/java/space/b00tload/services/snowflake/SnowflakeService.java b/src/main/java/space/b00tload/services/snowflake/SnowflakeService.java index 39f352b..9d4fbdd 100644 --- a/src/main/java/space/b00tload/services/snowflake/SnowflakeService.java +++ b/src/main/java/space/b00tload/services/snowflake/SnowflakeService.java @@ -4,13 +4,16 @@ import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException; import ch.qos.logback.core.util.StatusPrinter2; +import okhttp3.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import space.b00tload.utils.configuration.Configuration; +import java.io.IOException; import java.nio.file.Paths; import java.util.List; import java.util.Objects; +import java.util.Random; public class SnowflakeService { @@ -18,12 +21,14 @@ public class SnowflakeService { private static String APPLICATION_BASE; private static String USER_AGENT; private static Logger LOGGER; + private static String INSTANCE_NAME; public static void main(String[] args) { //Set up constants SOFTWARE_VERSION = Objects.requireNonNullElse(SnowflakeService.class.getPackage().getImplementationVersion(), "0.0.1-indev"); USER_AGENT = "SnowflakeService " + SOFTWARE_VERSION + "(" + System.getProperty("os.name") + "; " + System.getProperty("os.arch") + ") Java/" + System.getProperty("java.version"); APPLICATION_BASE = List.of(args).contains("--docker") ? Paths.get("data", "b00tload-tools", "snowflake").toString() : Paths.get(System.getProperty("user.home"), ".b00tload-tools", "snowflake").toString(); + INSTANCE_NAME = getHostname() + "_" + getPid() + "_" + new Random().nextInt(9999); //Set up logger LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); @@ -50,8 +55,24 @@ public class SnowflakeService { long machineBits; long epoch; - if(!Configuration.getInstance().get(ConfigurationValues.ORCHESTRATOR_IP).equals("localhost")){ + if(!Configuration.getInstance().get(ConfigurationValues.ORCHESTRATOR_IP).equals(ConfigurationValues.ORCHESTRATOR_IP.getDefaultValue())){ + OkHttpClient httpClient = new OkHttpClient(); + try { + try (Response r = httpClient.newCall( + new Request.Builder() + .url(Configuration.getInstance().get(ConfigurationValues.ORCHESTRATOR_IP)) + .post( + new FormBody.Builder().addEncoded("name", INSTANCE_NAME).build() + ) + .build() + ).execute()){ + if(r.code() == 200){ + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } } else if((Long.parseLong(Configuration.getInstance().get(ConfigurationValues.MACHINE_ID))) != -1L) { } else { @@ -60,4 +81,16 @@ public class SnowflakeService { } + private static String getHostname(){ + String hostname = System.getenv("COMPUTERNAME"); // On Windows + if (hostname == null || hostname.isEmpty()) { + hostname = System.getenv("HOSTNAME"); // On Unix/Linux + } + return hostname; + } + + private static long getPid(){ + return ProcessHandle.current().pid(); + } + }