Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unstable/rewrite #6

Open
wants to merge 270 commits into
base: unstable/rewrite
Choose a base branch
from

Conversation

wasn325
Copy link
Owner

@wasn325 wasn325 commented Apr 8, 2022

This pull request includes:

  • breaking changes
  • no breaking changes

Changes made to the repository:

Documentation of test results:

Related issues/discussions:

derklaro and others added 30 commits March 28, 2022 20:44
#648)

* chore: Replace the usage of Verify with Preconditions to prevent relocation issues

* chore: Fix missing reimports

* chore: Replace some missleading docs

* chore: Fix indent in the factory
* New translations en_US.properties (German)
[ci skip]

* Update source file en_US.properties
[ci skip]

* New translations en_US.properties (German)
[ci skip]

* Update source file en_US.properties
[ci skip]

* New translations en_US.properties (German)
[ci skip]
Also disable compiler warnings properly :)
This prevents accidental deadlocks of an event loop.
This prevents unexpected connection failures of the wrapper which obviously cannot connect to 0.0.0.0
0utplay and others added 22 commits August 6, 2022 14:57
### Motivation
Currently there is a lot of redundant and duplicated code in the task command.

### Modifications
Replaced the duplicated code by abstracting the logic as much as possible.

### Result
The redundant and duplicated code is not present anymore.
### Motivation
Currently we inject the permission function into all players when the proxy is started, we don't have to do that as we dont support reloading it anyways.

### Modifications
Removed the injection of the permission function.

### Result
We don't use the reflection based injection anymore.
### Motivation
Currently there are some places where we are still using types we don't need.

### Modifications
Ran the intellij cleanup and removed some types we don't need.

### Result
Cleanup
### Motivation
Currently the game profile on fabric servers is not correct and therefore the skin is not applied.

### Modifications
Moved our own packet mixin to the handleAcceptedLogin method.

### Result
The game profile has the correct uuid and the skin is applied.
### Motivation
Currently there is no way to modify the node selection for a service which is about to be created.

### Modifications
Added a new event allowing the cancellation of the service creation process and giving the option to select a different node to pick up the service.

### Result
The node selection is now modifiable using the mentioned event.
### Motivation
Currently all command descriptions are hardcoded and therefore only available in English.

### Modifications
Added a new translatable property to the description annotation which allows the opt-out of a translatable description.

### Result
Our descriptions can be translated to different languages on crowdin.
…757)

### Motivation
Currently not all of our plugins unregister everything they register on the start leading to problems when they are reloaded.

### Modifications
Added a util method to unregister everything and call it when disabling the plugins.

### Result
All plugins unregister their stuff.
### Motivation
Some command descriptions are currently spelled in a very confusing way.

### Modification
Improve the spelling of some command descriptions.

### Result
Better command descriptions.
### Motivation
Currently there is no way for a plugin to automatically schedule the retry of a service creation if the initial request failed. 

### Modification
Added the possibility to specify a retry configuration in the service configuration which allows the retry of a service creation. The creation has a fixed amount of max retries (there is no way to schedule forever) and the possibility to backoff the service re-creation according to the current retry count.

Once the creation process suceeded, an event will be fired on previously added listeners for the state of the service creation. The deferred creation can be associated with the service by either using the creation id of the CreationResult or by (for example) adding a marker to the supplied service configuration when creating the service initially.

### Result
API users now have a much easier way to define how a service creation should be retried.
### Motivation
JDK 19 added the virtual thread feature as a preview feature. As these "threads" are not backed by a platform thread, and are even sleeping while waiting for some operations (like file system aceess) they are the perfect fit for our packet processing work with can require a lot of threads which are sometimes just waiting for background work to complete.

### Modification
Added a util class which can detect when runnning on Java 19+ with preview features enabled, and build virtual thread executors when needed. These are for now only used for packet dispatching. If virtual threads are not available, then the caller can specify a fallback thread factory to use.

### Result
Packet dispatching is optimized for users which are using newer jvms with preview features enabled.

##### Other context
Some nice stuff to read:
 * https://openjdk.org/jeps/425
 * https://blogs.oracle.com/javamagazine/post/java-loom-virtual-threads-platform-threads
### Motivation
The translation entry for the key 'command-tasks-setup-question-host-address' was missing,

### Modification
Added the english translation for 'command-tasks-setup-question-host-address'

### Result
All translations are present.
### Motivation
Applies all pending dependency updates to ensure that all dependencies are up-to-date. The netty dependency was bumped to snapshot again, as netty recently fixed an issue observed by us which was rarely visible when shutting down a running service - this prevents us from getting reports which are false-positive.

### Modification
Apply all pending dependency updates and bump netty to 5.0.0-Alpha5-SNAPSHOT.

### Result
All dependencies are up-to-date again and no more netty exceptions are thrown during jvm shutdowns.
### Motivation
Currently the module path parser successfully parses paths to a directory. But a directory is never a module and therefore can't get loaded.

### Modification
Check if the specified path points to a directory and if so abort the parsing process.

### Result
Only files are parsed sucessfully.
### Motivation
The interrupted state of a thread will be reset in case an InterruptedException is thrown. As we need catch these exceptions any upper layer of the method call is unable to respond to the interuption and `Thread.currentThread().isInterrupted()` will falsely return false.

### Modification
Call `Thread.currentThread().interrupt()` to mark threads as interrupted when catching an InterruptedException. This PR also removes the usages of `Thread.interrupted()` which check if a thread is interrupted but also resets the interrupted state of the thread.

### Result
No more accidental wrong marks of threads which should be marked as interrupted.

##### Other context
A bit more context is given (for example) here: https://dzone.com/articles/why-do-we-need-threadcurrentthreadinterrupt-in-int
### Motivation
All tests should run on the latest lts version of java (currently 17) and the latest available version (currently 19-ea). The change of the distribution to zulu was needed as temurin had no 20-ea builds, but we're currently limited by mockito which only supports up to java 19. To make later updates easier the distribution should be zulu anyway.

### Modification
Use java 19-ea as the latest test version instead of 18, replaced temurin with zulu jdk distribution.

### Result
Faster updates to newer java versions & tests are running on jdk 19 which makes it easier to determine if we need to do something in order to support a newer java version.
)

### Motivation
Currently everybody that wants to use a Minestom implementation is forced to shade google-guava. As the dependency system of Minestom did not seem to work.

### Modification
Added the cloudperms dependency to simplenametags & chat. Furthermore added a new service loader file to point to the correct maven resolver, basically fixing the minestom extension dependency resolving system...

### Result
Minestom dependency resolving works and Minestom implementations are lo longer forced to shade guava.
### Motivation
The usage of wildcard types in the changed places is not needed and can lead to exceptions, for example when used in combination with our rpc system.

### Modification
Remove uneeded wildcard types when they are exposed by our api.

### Result
No more usages of wildcard types.

##### Other context
Closes #775
### Motivation
Currently we state that we support Glowstone by providing downloads in our installer but due to the usage of ASM6 in Glowstone we are unable to support it.

### Modification
Removed the Glowstone downloads and ServiceEnvironmentType.

### Result
Glowstone is not supported anymore (at least until they update to ASM9).
0utplay and others added 5 commits August 13, 2022 21:00
### Motivation
Currently we use some immutable sets in the node configuration leading to UnsupportedOperationExceptions

### Modification
Use mutable sets instead of immutable ones.

### Result
No UnsupportedOperationException.
…#779)

### Motivation
While testing the upgrade of a CloudNet 3.4 instance I noticed that the LabyMod module config is not converted correctly.

### Modification
Rearranged the module task order and actually write the labymod config to the file instead of the builder.

### Result
The conversion works how its intended.
…711)

### Motivation
There were already occurrences of accidental pull request merges into wrong branches.

### Modification
Add an action that will fail when the target branch is not "nightly"

### Result
Less more likely to accidentaly merge a pull request into the wrong branch.
### Motivation
Currently rpc does not travel the interfaces of all extending classes and therefore misses some interfaces. Furthermore the constructor generation was not correct in a way that the channelSupplier field is not initialized at all.

### Modification
Travel all interfaces on every extending class and write the channelSupplier field.

### Result
RPC generates all methods and constructors correctly.

## Other context
Closes #780
### Motivation
One of the translations in the template command has to parameters but 0 are supplied in the runtime.

### Modification
Added the missing parameters for a correct translation.

### Result
The translation is displayed correctly.
@derklaro derklaro deleted the branch wasn325:unstable/rewrite August 14, 2022 19:00
@derklaro derklaro deleted the unstable/rewrite branch August 14, 2022 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants