CloudNetService / CloudNet

A modern application that can dynamically and easily deliver Minecraft oriented software
https://cloudnetservice.eu
Apache License 2.0
376 stars 119 forks source link

non blocking output reader #1521

Open DasBabyPixel opened 4 days ago

DasBabyPixel commented 4 days ago

Motivation

Logging had some issues with blocking when a full line wasn't written in output.

Modification

Fixed those issues by implementing a custom readLine() which calls ready() before every read()

Result

Logging works with the new system (and very little delay, which is very nice, as opposed to 1 second polling alternative)

Other context

@0utplay or @GiantTreeLP please review this derklaro is fed up with this problem Still based on the old logging to better highlight modifications. This is the reason why this is a conflict As soon as this is reviewed I can rebase/merge and revert the revered new logging system to make this mergeable

0utplay commented 3 days ago

Does this catch jvm crashes?

DasBabyPixel commented 3 days ago

Does this catch jvm crashes?

Catches invalid jvm arguments image

Also catches everything in a shutdown hook image (Used FileDescriptor, because logging frameworks don't print everything to console, probably some issue with async logging on shutdown)