sisby-folk / antique-atlas

A minecraft mod adding a hand-drawn client-side minecraft world map with biomes, structures, waypoints, and less! A fourth-generation rewrite of Hunternif's Antique Atlas utilizing Surveyor.
https://modrinth.com/mod/antique-atlas-4
Other
33 stars 14 forks source link

Error on joining server #98

Closed spencer012 closed 6 months ago

spencer012 commented 6 months ago

Me and some friends have been trying to create and play a modpack and everything was fine at first. We shared our maps with surveyor but after a while we started having trouble getting in to the server. It's pretty random what issue happens, sometimes we can get in but it kicks us shortly after joining, or sometimes a random part of the network stack throws an error. Originally we could delete the surveyor data and be able to get in but now we are getting a "Payload may not be larger than 1048576 bytes". We have tried installing a updated version of surveyor and that doesn't work. The only thing that fixes it is not sharing the map, but that's a part of the mod we really want to use.

If this is better suited over at the surveyor github, tell me and I can move it over.

https://mclo.gs/0sv5dHQ

I can provide the server surveyor files if need be.

sisby-folk commented 6 months ago

That error means surveyor is trying to send a packet from the server to the client that's larger than the S2C limit (1MB).

We knew this might happen with terrain packets, so we implemented automatic packet splitting for those - I'm guessing the structure packet is too large here, so I've implemented splitting for that in 0.4.1 - give that a try and let me know.

spencer012 commented 6 months ago

Thanks for the quick response and update! Sadly I'm still having timeout errors, although the max packet error has gone. Now we are able to load into the server, but after that finishes then the network stops sending anything and times out shortly after. We have around 6 people sharing the map together if that helps.

https://mclo.gs/EiqlPVt

sisby-folk commented 6 months ago

Interesting - the timeout isn't giving me any information in the log, which is difficult - maybe try a spark profile on the server with spark profiler --only-ticks-over 300 and then try to join? then send that.

huntingtiger1004 commented 6 months ago

Hello, I'm the one who put together the pack and has access to the server. I would've had info for ya sooner, but I was a bit busy. I went ahead and did that spark profiler thing. I'm hoping I got it setup and did it right, I'm not quite as good with this kind of stuff as Spencer is. I just started it, attempted a connection, and then stopped it once I had been fully kicked out. Here's what it spat out once all was said and done.

https://spark.lucko.me/E6aIo9EIgd

Spencer had to call it a night, but I'll still be on for a few more hours if you need anything else.

Oh and just in case it helps, I just wanted to say that we are using a very abnormally large amount of structure mods, so if that might have to do with that structure packet issue you were guessing at earlier then I just want to say sorry in advance for causing a weird fringe case. 😅

sisby-folk commented 6 months ago

Hmm, does the hang stop if you remove surveyor from the server? I'm having trouble seeing anything problematic in the profile.

If it only happens when surveyor is installed, a server log might help?

huntingtiger1004 commented 6 months ago

So the hang stops if we go into the world/data/surveyor folder and remove sharing.dat. We can reinitiate a surveyor share just fine after the fact and everything is fine, but I believe it's just the buildup of data it's sending.

Here are the logs from the server end: https://mclo.gs/AEG06C3

Here's the logs from my client: https://mclo.gs/cbC2DQx

And just in case here's a spark profiler from the client side: https://spark.lucko.me/dwkR4323p6

I'm not sure it worked right, as chat doesn't work properly on the server, but I joined and left a few times, then went to my singleplayer world to stop it and grab the link. This may very well be redundant, but I figured I'd include as much information as I can.

Also, for clarity, the current issue we're experiencing is when we get on the server we can load into the world (and since we have simple voice chat enabled we're able to connect fully to the voicechat server), but we are only able to walk around and can't interact with anything before we eventually get a simple "timed out" message and are forced to disconnect. I should also note that it will not communicate data from Exposure to show pictures we have on the wall, so all the pictures are blank during this time.

huntingtiger1004 commented 6 months ago

Update: Had a friend who was unable to join despite the sharing.dat being removed, had to just clear the surveyor data in the world file to get it to where he could join in.

sisby-folk commented 6 months ago

looks like there's an infinite loop in the new structures added packet splitter under some condition - I'll give it a look today

sisby-folk commented 6 months ago

Fixed the loop in AA 2.7.2 - could you give that a try so we can see if there's another underlying issue? It might have just been hidden by that one. https://modrinth.com/mod/antique-atlas-4/version/2.7.2+1.20

huntingtiger1004 commented 6 months ago

As of yet we've experienced no issues joining or connecting, and it occurred rather immediately. It does appear in the course of our personal troubleshooting and trying to figure out what we needed to do to get back to doing things that some of our collective old map data is lost on some of our games, though one of our friends has it all compiled somehow and yet most of that does not appear on our maps. (We're primarily missing previous exploration and a TON of map markers)

We ended up sharing that friend's surveyor folder among us all and it remembered relevant marker ownership and what have you, even if we are lacking our individual exploration it's at least better than it was.

spencer012 commented 6 months ago

Thanks for the bug fixes!

sisby-folk commented 6 months ago

Happy to help!

Surveyor data is portable between the client and the server (the format is the same) - so you can actually drop your surveyor saves (region files, landmark files, etc) from a client directly to the server if needed (though i've never told anyone to do that before, so maybe don't poke the bull!) - you'll just be overriding anything the server does have.