* Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.
* - Added better fallback to default port range when a custom range fails
- Updated config to be clearer
* Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.
* - Added better fallback to default port range when a custom range fails
- Updated config to be clearer
* Updated soft-fail message
* Removed dead import from customserver.py
* Update requirements.txt
Settings requirements to main core branch
* fix what reviewers said and add some improvements
* remove unused argument
* try fixing test with try
* use yaml lists instead of string for config
* fix value type bug on ephemeral type
* reuse sockets with websockets api instead of opening and closing them
* add used ports cache and filter used ports when looking for ports
* fix port randomizer
* Apply suggestions from code review
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
* fix some reviews
* use weights for random port and remove more-itertools
* fix net_connections not working on macOS
* rename variables and functions
* lazy init `get_used_ports`
* change `game_ports` to be `tuple`
* fix last_used_ports not being updated locally
* fix random choices and move game_port conversion into tuple
* Apply suggestions from code review
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
* use a named tuple on parse_game_ports
* only use ranges
* do it the duck way
* this should check all usable ports before failing
* fix while loop
* add return type to weighted random
* Update WebHostLib/customserver.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* simplify tuple conversion check
* add tests
* reformat file and change `create_random_port_socket` test
* add more test cases for parse_game_ports
* try to prevent busy-looping on create random port socket when doing test
* simplify parse game port tests to one assertListEqual
* make the range lesser for port test
* reduce range on macOS
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update WebHostLib/customserver.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* remove unused import
* Update WebHostLib/customserver.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* use generator expressions
* check for 0-tuple
* use some kind of shuffled queue
* update tests
* refactor new port handling into a class (#1)
* change time to monotonic
* Update docs/webhost configuration sample.yaml
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* add psutil 7.2.2 as requirement
* Update WebHostLib/requirements.txt
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
---------
Co-authored-by: Lexipherous <jasonnlelong@gmail.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Test: add hosting simulation test
* WebHost: add weak typing to get_app()
* MultiServer: add typing to auto_saver_thread
* MultiServer: don't cancel task, properly end it
* customserver: stop auto-save thread from saving after shutdown
and make sure it stops, another potential memory leak
* MultiServer, customserver: make datapackage small again
* customserver: collect/finish room tasks
Hopefully fixes the memory leak we are seeing
* CI: test hosting
* Test: hosting: verify autohoster saves on Ctrl+C
* customserver: save when stopping via Ctrl+C
when switching to multiple rooms per process, we ended up modifying the static server data
because that's how _load works and the data is now shared between multiple rooms.
Currently when a room shuts down while clients are connected it instantly spins back up. This fixes that behaviour categorically.
I still don't know why or when this problem started, but it's certainly wreaking havok on prod.
* Core: lazy-load worlds in unpickler
this should hopefully fix customserver's memory consumption
* WebHost: move imports around to save memory in MP
* MultiServer: prefer loading _speedups without pyximport
This saves ~15MB per MP and speeds up module import if it was built in-place.
* Tests: fix tests for changed WebHost imports
* CustomServer: run GC after setup
* CustomServer: cleanup exception handling
* WebHost: Make custom server prefer ipv4 for display
* WebHost: Make server retry saving in case of connection issues
* WebHost: fix autolaunch guardians getting stuck waiting for the oldest two rooms.
Probably not related to the issues of the system itself getting stuck, but should be fixed anyway.
* WebHost: logfile is meant to be guarded by access cookie
* WebHost: set patch target to null if port is not valid, disabling auto-connect