Commit Graph

1345 Commits

Author SHA1 Message Date
Dane Everitt
9f985ae044 Check for error before prefix; fixes abandoned routine; closes pterodactyl/panel#3911
Due to the order of the previous logic in ScanReader, an error not caused by EOF would effectively get ignored since an error will always be returned with `isPrefix` equal to false, thus triggering the first break, and error checking is not performed beyond that point.

Thus, canceling an installation process for a server while this process was running would hang the routine and cause the loop to run endlessly, even with a canceled context.
2022-02-05 11:56:17 -05:00
Dane Everitt
1372eba84e Remove unused function 2022-02-05 11:14:48 -05:00
Dane Everitt
879dcd8df5 Don't trigger a panic condition decoding event stats; closes pterodactyl/panel#3941 2022-02-05 11:06:11 -05:00
Dane Everitt
72476c61ec Simplify the event bus system; address pterodactyl/panel#3903
If my debugging is correct, this should address pterodactyl/panel#3903 in its entirety by addressing a few areas where it was possible for a channel to lock up and cause everything to block
2022-02-02 21:03:53 -05:00
Dane Everitt
0f2e9fcc0b Move the sink pool to be a shared tool 2022-02-02 19:16:34 -05:00
Dane Everitt
5c3e2c2c94 Fix failing test 2022-01-31 19:33:32 -05:00
Dane Everitt
7051feee01 Add additional debug points to server start process 2022-01-31 19:30:07 -05:00
Dane Everitt
cd67e5fdb9 Fix logic for context based environment stopping
Uses dual contexts to handle stopping using a timed context, and also terminating the entire process loop if the parent context gets canceled.
2022-01-31 19:09:08 -05:00
Dane Everitt
84bbefdadc Pass a context through to the start/stop/terminate actions 2022-01-31 18:40:15 -05:00
Dane Everitt
6a4178648f Return context cancelations as a locker locked error 2022-01-31 18:39:41 -05:00
Dane Everitt
1e52ffef64 Fix panic condition when no response is returned 2022-01-31 18:37:02 -05:00
Dane Everitt
0f9f80c181 Improve support for block/mutex contention in pprof 2022-01-30 21:02:18 -05:00
Dane Everitt
4b702052c7 Update CHANGELOG.md 2022-01-30 20:27:26 -05:00
Dane Everitt
7ee6c48fb0 Use a more efficient logging format for containers
JSON has a huge amount of overhead from Docker when we're trying to process large amounts of log data. It makes more sense to just use a better format.
2022-01-30 19:51:23 -05:00
Dane Everitt
2b2b5200eb Rewrite console throttling logic; drop complex timer usage and use a very simple throttle
This also removes server process termination logic when a server is breaching the output limits. It simply continues to efficiently throttle the console output.
2022-01-30 19:31:04 -05:00
Dane Everitt
fb73d5dbbf Always run pprof when running debug through makefile 2022-01-30 15:11:17 -05:00
Dane Everitt
fd7ec2aaac Generate normal and debug artifacts 2022-01-30 15:06:56 -05:00
Dane Everitt
c3df8d2309 Add support for proper use of pprof 2022-01-30 14:50:37 -05:00
Dane Everitt
1965e68a78 Include debug symbols in non-release binaries 2022-01-30 14:05:55 -05:00
Dane Everitt
3208b8579b Add test coverage 2022-01-30 13:58:36 -05:00
Dane Everitt
c4ee82c4dc Code cleanup, providing better commentary to decisions 2022-01-30 12:56:25 -05:00
Dane Everitt
0ec0fffa4d Handle future scenarios where we forgot to add a listener 2022-01-30 11:58:53 -05:00
Dane Everitt
57daf0889a Cleanup logic for updating stats to avoid calling mutex outside of file 2022-01-30 11:55:59 -05:00
Dane Everitt
d7c7155802 Make the powerlocker logic a little more idiomatic 2022-01-30 11:46:27 -05:00
Dane Everitt
11ae5e69ed Improve performance of console output watcher; work directly with bytes rather than string conversions 2022-01-30 11:28:06 -05:00
Dane Everitt
fab88a380e Use buffered channels and ring-buffer logic when processing console data
This change fixes pterodactyl/panel#3921 by implementing logic to drop the oldest message in a channel and push the newest message onto the channel when the channel buffer is full.

This is distinctly different than the previous implementation which just dropped the newest messages, leading to confusing behavior on the client side when a large amount of data was sent over the connection.

Up to 10ms per channel is allowed for blocking before falling back to the drop logic.
2022-01-30 10:55:45 -05:00
Matthew Penner
68d4fb454f
actions(test): fix caching, run tests with race detector 2022-01-24 19:06:14 -07:00
Matthew Penner
136540111d
docker: attach to container before starting 2022-01-24 19:01:33 -07:00
Dane Everitt
de04e73e82 Reduce the size of the buffered reader to improve CPU performance 2022-01-23 18:31:53 -05:00
Dane Everitt
d701b35954 Update CHANGELOG.md 2022-01-23 17:23:02 -05:00
Dane Everitt
34ecf20467
Re-implement ContainerInspect call in Wings to use more performant json encoder (#119)
* First pass at re-implementing the Docker inspect call to use more efficient json parser

* Improve logic
2022-01-23 14:13:49 -08:00
Dane Everitt
34c0db9dff Replace encoding/json with goccy/go-json for cpu and memory usage improvement
This new package has significant better resource usage, and we do a _lot_ of JSON parsing in this application, so any amount of improvement becomes significant
2022-01-23 15:17:40 -05:00
Dane Everitt
301788805c Ensure a file uploaded using SFTP is properly owned at the end; closes pterodactyl/panel#3689 2022-01-23 13:14:02 -05:00
Dane Everitt
4c8f5c21a3
Improve power lock logic (#118) 2022-01-23 09:49:35 -08:00
Dane Everitt
c52db4eec0 Add test coverage for sinks; prevent panic on nil channels 2022-01-23 10:41:12 -05:00
Dane Everitt
a4904365c9 Sink pool cleanup and organization; better future support when we add more sinks 2022-01-23 09:57:25 -05:00
Dane Everitt
2a9c9e893e Add test for scan reader 2022-01-22 14:52:24 -05:00
Dane Everitt
1591d86e23 Quick note about the importance of the copy 2022-01-22 14:33:49 -05:00
Dane Everitt
b5536dfc77 Prevent excessive memory usage when large lines are sent over the console 2022-01-22 14:33:03 -05:00
Matthew Penner
45418c86dd
Update CHANGELOG.md 2022-01-20 09:58:47 -07:00
Matthew Penner
71e56c7da6
events: remove debug log 2022-01-20 09:50:13 -07:00
Matthew Penner
4ba5fe2866
events: don't explode when destroying a bus
Only attempt to close channels once, rather than per topic
they are subscribed to.
2022-01-20 09:48:18 -07:00
Matthew Penner
6d8c1d2225
diagnostics: properly redact endpoints 2022-01-20 09:12:24 -07:00
Matthew Penner
a6b77a31dc fix send on closed channel for logging; closes #3895 2022-01-20 07:00:00 -07:00
Matthew Penner
c27e06bcb9
server: ensure last lines are always logged 2022-01-19 18:22:34 -07:00
Noah van der Aa
13a9ee9474
Use GID from config for container (#106) 2022-01-19 17:05:53 -08:00
Dane Everitt
760554f8f4 Update CHANGELOG.md 2022-01-19 20:03:11 -05:00
Matthew Penner
bb7ee24087
router: support the Access-Control-Request-Private-Network header (#117) 2022-01-19 09:27:13 -07:00
Matthew Penner
649dc9663e
Server Event Optimizations (#116) 2022-01-17 20:23:29 -07:00
TacticalCatto
521cc2aef2
Don't turn SSL into lowercase (#114) 2022-01-17 20:22:13 -07:00