jaeger cum fuck love get fucked you mother fucker

main
Brett 2023-11-17 14:43:19 -05:00
parent 8cf701d408
commit 3f23240ded
19 changed files with 242 additions and 64 deletions

View File

@ -0,0 +1,8 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,io.opentelemetry.context.ImplicitContextKeyed,makeCurrent" />
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="0f41691c-0555-42fa-871c-696e835fdcc1" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 1
}</component>
<component name="ProjectId" id="2XzrKhWhzn1ftuh1BdX52WhmbVY" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;last_opened_file_path&quot;: &quot;/home/brett/Documents/Brock/CS 3P95/Assignments/Assignment 2 Java/libs&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;project.structure.last.edited&quot;: &quot;Modules&quot;,
&quot;project.structure.proportion&quot;: &quot;0.15&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;reference.settings.project.maven.repository.indices&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/in" />
</key>
</component>
<component name="RunManager" selected="Maven.Maven Client">
<configuration name="Maven Client" type="MavenRunConfiguration" factoryName="Maven">
<MavenSettings>
<option name="myGeneralSettings" />
<option name="myRunnerSettings" />
<option name="myRunnerParameters">
<MavenRunnerParameters>
<option name="cmdOptions" />
<option name="profiles">
<set />
</option>
<option name="goals">
<list>
<option value="compile" />
<option value="exec:java" />
<option value="-Dexec.mainClass=client.Client" />
</list>
</option>
<option name="pomFileName" />
<option name="profilesMap">
<map />
</option>
<option name="projectsCmdOptionValues">
<list />
</option>
<option name="resolveToWorkspace" value="false" />
<option name="workingDirPath" value="$PROJECT_DIR$" />
</MavenRunnerParameters>
</option>
</MavenSettings>
<method v="2" />
</configuration>
<configuration name="Maven Server" type="MavenRunConfiguration" factoryName="Maven">
<MavenSettings>
<option name="myGeneralSettings" />
<option name="myRunnerSettings" />
<option name="myRunnerParameters">
<MavenRunnerParameters>
<option name="cmdOptions" />
<option name="profiles">
<set />
</option>
<option name="goals">
<list>
<option value="compile" />
<option value="exec:java" />
<option value="-Dexec.mainClass=server.Server" />
</list>
</option>
<option name="pomFileName" />
<option name="profilesMap">
<map />
</option>
<option name="projectsCmdOptionValues">
<list />
</option>
<option name="resolveToWorkspace" value="false" />
<option name="workingDirPath" value="$PROJECT_DIR$" />
</MavenRunnerParameters>
</option>
</MavenSettings>
<method v="2" />
</configuration>
<list>
<item itemvalue="Maven.Maven Server" />
<item itemvalue="Maven.Maven Client" />
</list>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="0f41691c-0555-42fa-871c-696e835fdcc1" name="Changes" comment="" />
<created>1699642690668</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1699642690668</updated>
<workItem from="1699642691698" duration="1780000" />
<workItem from="1699644554205" duration="4483000" />
<workItem from="1699649046958" duration="1659000" />
<workItem from="1699753268434" duration="7789000" />
<workItem from="1699771695888" duration="8878000" />
<workItem from="1699855895607" duration="8075000" />
<workItem from="1699982150005" duration="1160000" />
<workItem from="1699983647788" duration="7319000" />
<workItem from="1700071773870" duration="526000" />
<workItem from="1700158706429" duration="3509000" />
<workItem from="1700165455778" duration="4488000" />
<workItem from="1700178396414" duration="4007000" />
<workItem from="1700184489732" duration="1251000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>

View File

@ -100,5 +100,10 @@
<artifactId>lz4-java</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk-trace</artifactId>
<version>1.32.0</version>
</dependency>
</dependencies>
</project>

View File

@ -28,7 +28,7 @@ public class ChunkedCompressedChecksumFileReader {
}
public FileHeader readChunk(Tracer trace, Span sp) throws IOException {
Span gf = trace.spanBuilder("Chunk Read").setParent(Context.current().with(sp)).startSpan();
Span gf = trace.spanBuilder("Chunk Read").startSpan();
FileHeader header = readHeader();
try (Scope scope = gf.makeCurrent()) {
if (header.getUncompressed() == 0)

View File

@ -1,5 +1,6 @@
package server;
import client.Client;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.api.trace.Tracer;
@ -18,10 +19,10 @@ public class Connection implements Runnable {
private final Server server;
private DataOutputStream out;
private DataInputStream in;
private Tracer trace;
private Span fileSend;
private final Tracer trace;
private final Span fileSend;
public Connection(Server server, Tracer trace, Span parent, Socket clientSocket) {
public Connection(Server server, Tracer trace, Socket clientSocket) {
this.server = server;
this.clientSocket = clientSocket;
this.trace = trace;
@ -31,12 +32,12 @@ public class Connection implements Runnable {
} catch (Exception e) {
ExceptionLogger.log(e);
}
parent.addEvent("Connection Established");
SpanBuilder sb = trace.spanBuilder("New Connection");
SpanBuilder sb = trace.spanBuilder("New Client Connection");
sb.setAttribute("INetAddress", clientSocket.getInetAddress().toString());
sb.setAttribute("Port", clientSocket.getPort());
sb.setAttribute("LocalPort", clientSocket.getLocalPort());
fileSend = sb.startSpan();
fileSend.addEvent("Connection Established");
}
@Override
@ -66,6 +67,7 @@ public class Connection implements Runnable {
}
}
} catch (IOException e) {
fileSend.recordException(e);
throw new RuntimeException(e);
}
}
@ -76,9 +78,16 @@ public class Connection implements Runnable {
out.close();
in.close();
clientSocket.close();
} catch (Exception ignored) {}
} catch (Exception e) {
ExceptionLogger.log(e);
}
System.out.println("Client Disconnected");
Server.running = false;
Server.close();
// try {
// // evil hack
// new Client("localhost", Server.SERVER_PORT).close();
// } catch (IOException ignored) {
// }
}
}

View File

@ -11,9 +11,10 @@ public class FileHeader {
private int compressed;
private long hash;
public FileHeader() {}
public FileHeader() {
}
public FileHeader read(DataInputStream reader) throws IOException{
public FileHeader read(DataInputStream reader) throws IOException {
uncompressed = reader.readInt();
if (uncompressed == 0)
return this;

View File

@ -11,6 +11,7 @@ import shared.OTelUtils;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@ -27,39 +28,32 @@ public class Server {
public Server() {
Tracer main = ot.getTracer("Main Server", "0.69");
Span sbs = main.spanBuilder("Start Server").setAttribute("Server Port", SERVER_PORT).startSpan();
try (Scope scope = sbs.makeCurrent()) {
try {
System.out.println("Starting server");
sbs.addEvent("Server Start", System.nanoTime(), TimeUnit.NANOSECONDS);
ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("Closing Server");
running = false;
sbs.end();
executor.shutdown();
try {
serverSocket.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
System.out.println("Server Started");
while (running)
executor.execute(new Connection(this, main, sbs, serverSocket.accept()));
executor.execute(new Connection(this, main, serverSocket.accept()));
serverSocket.close();
} catch (IOException e) {
sbs.recordException(e);
ExceptionLogger.log(e);
} finally {
sbs.end();
}
System.out.println("Closing thread pool");
executor.shutdown();
try {
if (!executor.awaitTermination(1, TimeUnit.SECONDS)){
List<Runnable> runs = executor.shutdownNow();
System.out.println("Hello runs " + runs.size());
if (!executor.awaitTermination(1, TimeUnit.SECONDS))
System.out.println("Unable to terminate");
}
} catch (InterruptedException e) {
executor.shutdownNow();
Thread.currentThread().interrupt();
ExceptionLogger.log(e);
}
System.out.println("Server exited!");
}
@ -74,7 +68,8 @@ public class Server {
}
public static void close(){
srv.notifyAll();
if (srv != null)
srv.notifyAll();
}
}

View File

@ -3,6 +3,7 @@ package shared;
import client.ChunkedCompressedChecksumFileWriter;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope;
import net.jpountz.lz4.LZ4Compressor;
import net.jpountz.lz4.LZ4Factory;
import net.jpountz.lz4.LZ4FastDecompressor;
@ -70,7 +71,7 @@ public class FileUtil {
ChunkedCompressedChecksumFileReader reader = new ChunkedCompressedChecksumFileReader(dataIn, path, FileUtil.SEED);
// ugh I want while(reader.readChunk().getUncompressed()); but it makes warnings!!!
while(true) {
while (true) {
if (reader.readChunk(trace, sp).getUncompressed() == 0) {
sp.addEvent("Chunk Read");
break;

View File

@ -16,6 +16,7 @@ import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import io.opentelemetry.semconv.ResourceAttributes;
@ -30,20 +31,10 @@ public class OTelUtils {
.setResource(resource)
.build();
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(LoggingMetricExporter.create()).build())
.setResource(resource)
.build();
SdkLoggerProvider sdkLoggerProvider = SdkLoggerProvider.builder()
.addLogRecordProcessor(BatchLogRecordProcessor.builder(SystemOutLogRecordExporter.create()).build())
.setResource(resource)
.build();
return OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setMeterProvider(sdkMeterProvider)
.setLoggerProvider(sdkLoggerProvider)
.setMeterProvider(createLoggingMeter(resource))
.setLoggerProvider(createLoggerProvider(resource))
.setPropagators(ContextPropagators.create(TextMapPropagator.composite(W3CTraceContextPropagator.getInstance(), W3CBaggagePropagator.getInstance())))
.buildAndRegisterGlobal();
}
@ -53,29 +44,39 @@ public class OTelUtils {
SpanExporter otlpExporter = OtlpGrpcSpanExporter.builder()
.setEndpoint("http://sc.on.underlying.skynet.tpgc.me:4317")
.setCompression("gzip")
.build();
BatchSpanProcessor batchSpanProcessor = BatchSpanProcessor.builder(otlpExporter)
.setMaxQueueSize(2048)
.setMaxExportBatchSize(512) // Example max export batch size
.build();
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(otlpExporter))
.setResource(resource)
.build();
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(LoggingMetricExporter.create()).build())
.setResource(resource)
.build();
SdkLoggerProvider sdkLoggerProvider = SdkLoggerProvider.builder()
.addLogRecordProcessor(BatchLogRecordProcessor.builder(SystemOutLogRecordExporter.create()).build())
.addSpanProcessor(batchSpanProcessor)
.setResource(resource)
.build();
return OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setMeterProvider(sdkMeterProvider)
.setLoggerProvider(sdkLoggerProvider)
.setMeterProvider(createLoggingMeter(resource))
.setLoggerProvider(createLoggerProvider(resource))
.setPropagators(ContextPropagators.create(TextMapPropagator.composite(W3CTraceContextPropagator.getInstance(), W3CBaggagePropagator.getInstance())))
.buildAndRegisterGlobal();
}
private static SdkMeterProvider createLoggingMeter(Resource resource){
return SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(LoggingMetricExporter.create()).build())
.setResource(resource)
.build();
}
private static SdkLoggerProvider createLoggerProvider(Resource resource){
return SdkLoggerProvider.builder()
.addLogRecordProcessor(BatchLogRecordProcessor.builder(SystemOutLogRecordExporter.create()).build())
.setResource(resource)
.build();
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,13 +1,12 @@
shared/ExceptionLogger.class
server/Server$1.class
shared/FileUtil$InvalidUsageException.class
shared/FileUtil.class
shared/OTelUtils.class
client/Client.class
server/Server.class
server/Connection.class
server/FileHeader.class
shared/FileUtil$COMMAND.class
shared/ArrayData.class
server/ChunkedCompressedChecksumFileReader.class
client/ChunkedCompressedChecksumFileWriter.class
shared/FileUtil$InvalidUsageException.class
shared/OTelUtils.class
client/Client.class
server/FileHeader.class
shared/FileUtil$COMMAND.class