kangarko / ChatControl-Red

Issue tracker and documentation for the next generation ChatControl Red, the most advanced chat management plugin.
48 stars 23 forks source link

1.20.4: Error player not connected in velocity #2756

Closed zestian56 closed 1 month ago

zestian56 commented 1 month ago

Error log (if applicable)

https://i.imgur.com/ahisdyF.png

"/chc debug" output (strongly recommended)

https://ufile.io/neywlcbh

Information about the issue/bug

It says the player is not connected, in bungeecord. Also autocompleting is only listing the players in the server not in the velocity network. This only happens in this server, not in the others. Is incosistent across the servers

kangarko commented 1 month ago

Thanks, I'm out of office for the week, I'll look into this with highest priority when I come back. How is that one server different from the other servers? Does it have bungee.yml file configured and enabled?

zestian56 commented 1 month ago

@kangarko Updating the issue: This is happening intermitently on my others servers. It happens with high player count, like 300+. Some servers just stops working the msg. but when the server is with low population it works.

JerichoTorrent commented 1 month ago

Experiencing the same issue

JerichoTorrent commented 1 month ago

I think a possible vector to look into is how RedisBungee can be so finicky, especially when the system time of each proxy server is not synced. It tends to desync player data fairly often, causing the message [redisbungee]: De-synced playerS set detected correcting.... to occur. I'm not sure what all VelocityControl can even do to combat this, when this very much seems to be a redis/RedisBungee issue. Finally have a useful error message:


java.lang.RuntimeException: unable to get network players
        at com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager.networkPlayers(ProxyDataManager.java:154) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI.getPlayersOnline(AbstractRedisBungeeAPI.java:86) ~[?:?]
        at org.mineacademy.velocitycontrol.model.Redis.getServers(Redis.java:156) ~[?:?]
        at org.mineacademy.velocitycontrol.VelocityControl.lambda$onPluginStart$0(VelocityControl.java:70) ~[?:?]
        at org.mineacademy.velocitycontrol.lib.remain.Remain.getServers(Remain.java:112) ~[?:?]
        at org.mineacademy.velocitycontrol.lib.remain.Remain.getOnlinePlayers(Remain.java:123) ~[?:?]
        at org.mineacademy.velocitycontrol.SyncedCache.updateForOnlinePlayers(SyncedCache.java:355) ~[?:?]
        at org.mineacademy.velocitycontrol.listener.VelocityControlListener.lambda$scheduleSyncTask$0(VelocityControlListener.java:85) ~[?:?]
        at org.mineacademy.velocitycontrol.lib.Common$2.run(Common.java:2221) ~[?:?]
        at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$0(VelocityScheduler.java:285) ~[server.jar:3.3.0-SNAPSHOT (git-9d25d309-b400)]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: com.imaginarycode.minecraft.redisbungee.internal.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.util.RedisInputStream.ensureFill(RedisInputStream.java:248) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.util.RedisInputStream.readByte(RedisInputStream.java:47) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.Protocol.process(Protocol.java:136) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.Protocol.read(Protocol.java:222) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:350) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.Connection.getMany(Connection.java:365) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.jedis.Pipeline.sync(Pipeline.java:64) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager$1.doPooledPipeline(ProxyDataManager.java:127) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager$1.doPooledPipeline(ProxyDataManager.java:120) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.tasks.RedisPipelineTask.unifiedJedisTask(RedisPipelineTask.java:33) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask.execute(RedisTask.java:59) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask.call(RedisTask.java:35) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager.networkPlayers(ProxyDataManager.java:152) ~[?:?]
        ... 12 more
        Suppressed: com.imaginarycode.minecraft.redisbungee.internal.jedis.exceptions.JedisConnectionException: Attempting to read from a broken connection
                at com.imaginarycode.minecraft.redisbungee.internal.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:346) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.internal.jedis.Connection.getMany(Connection.java:365) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.internal.jedis.Pipeline.sync(Pipeline.java:64) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.internal.jedis.Pipeline.close(Pipeline.java:49) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.api.tasks.RedisPipelineTask.unifiedJedisTask(RedisPipelineTask.java:32) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask.execute(RedisTask.java:59) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask.call(RedisTask.java:35) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.api.ProxyDataManager.networkPlayers(ProxyDataManager.java:152) ~[?:?]
                at com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI.getPlayersOnline(AbstractRedisBungeeAPI.java:86) ~[?:?]
                at org.mineacademy.velocitycontrol.model.Redis.getServers(Redis.java:156) ~[?:?]
                at org.mineacademy.velocitycontrol.VelocityControl.lambda$onPluginStart$0(VelocityControl.java:70) ~[?:?]
                at org.mineacademy.velocitycontrol.lib.remain.Remain.getServers(Remain.java:112) ~[?:?]
                at org.mineacademy.velocitycontrol.lib.remain.Remain.getOnlinePlayers(Remain.java:123) ~[?:?]
                at org.mineacademy.velocitycontrol.SyncedCache.updateForOnlinePlayers(SyncedCache.java:355) ~[?:?]
                at org.mineacademy.velocitycontrol.listener.VelocityControlListener.lambda$scheduleSyncTask$0(VelocityControlListener.java:85) ~[?:?]
                at org.mineacademy.velocitycontrol.lib.Common$2.run(Common.java:2221) ~[?:?]
                at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$0(VelocityScheduler.java:285) ~[server.jar:3.3.0-SNAPSHOT (git-9d25d309-b400)]
                at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
                at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
                at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]```
JerichoTorrent commented 1 month ago

Fixed this issue by using the Redis pterodactyl egg instead of the manual install. But new issues cropped up (separate Github issue)

zestian56 commented 1 month ago

For my issue im not using redis btw

kangarko commented 1 month ago

I'm rewriting the chat sync in the upcoming ChatControl 11 to use more compression. It should no longer happen in the next version. No ETA, but should be out by the end of next week.