ProxioDev/ValioBungee

ServerId is null while connection is in initial state

Closed this issue · 0 comments

intended behavior

It should infact be null but there should be a check when fetching online players for a server

what the behavior you actually saw

When trying to fetch online players, if there is a connection that is still in the initial state (not connected yet) its serverid is null and there are no checks related to it being null and this causes an exception on multimap

Steps to reproduce

Somehow force a client to stay in "connecting..." and fetch online players

Velocity or Bungeecord Versions

Velocity 3.3.0-SNAPSHOT (git-9e42049a-b376)

RedisBungee Version & Redis Version

redis_version:7.2.4
ValioBungee: 0.12.4

Other

ham1255 edit: included thrown error

[00:35:04 INFO]: Exception occurred while running command for HyperionDev
java.util.concurrent.CompletionException: java.lang.RuntimeException: Unable to invoke command queue test-1 for [connected player] HyperionDev (/195.175.104.130:63610)
        at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
        at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770) ~[?:?]
        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: java.lang.RuntimeException: Unable to invoke command queue test-1 for [connected player] HyperionDev (/195.175.104.130:63610)
        at com.velocitypowered.proxy.command.VelocityCommandManager.executeImmediately0(VelocityCommandManager.java:252) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.lambda$executeImmediatelyAsync$1(VelocityCommandManager.java:279) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 3 more
Caused by: java.lang.RuntimeException: java.lang.NullPointerException: null key in entry: null=a2aded80-15d4-38c5-8a6f-e532eedf9bde
        at com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager.serversToPlayersBuilder(PlayerDataManager.java:270) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$3(LocalLoadingCache.java:183) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2688) ~[?:?]
        at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2686) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2669) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:112) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:58) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager.serversToPlayers(PlayerDataManager.java:238) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI.getServerToPlayers(AbstractRedisBungeeAPI.java:116) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI.getPlayersOnServer(AbstractRedisBungeeAPI.java:126) ~[?:?]
        at tr.com.efekurban.queue.server.QueueManager.getCurrentPlayers(QueueManager.java:128) ~[?:?]
        at tr.com.efekurban.queue.server.QueueManager.getCurrentPlayersOnGroup(QueueManager.java:140) ~[?:?]
        at tr.com.efekurban.queue.server.QueueManager.addPlayer(QueueManager.java:194) ~[?:?]
        at tr.com.efekurban.queue.command.QueueCommand.execute(QueueCommand.java:63) ~[?:?]
        at tr.com.efekurban.queue.command.QueueCommand.execute(QueueCommand.java:15) ~[?:?]
        at com.velocitypowered.proxy.command.registrar.InvocableCommandRegistrar.lambda$createLiteral$1(InvocableCommandRegistrar.java:81) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:262) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.executeImmediately0(VelocityCommandManager.java:230) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.lambda$executeImmediatelyAsync$1(VelocityCommandManager.java:279) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 3 more
Caused by: java.lang.NullPointerException: null key in entry: null=a2aded80-15d4-38c5-8a6f-e532eedf9bde
        at com.google.common.collect.CollectPreconditions.checkEntryNotNull(CollectPreconditions.java:31) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.google.common.collect.ImmutableMultimap$Builder.put(ImmutableMultimap.java:171) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager$1.lambda$doPooledPipeline$0(PlayerDataManager.java:254) ~[?:?]
        at java.base/java.util.HashMap.forEach(HashMap.java:1429) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager$1.doPooledPipeline(PlayerDataManager.java:254) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager$1.doPooledPipeline(PlayerDataManager.java:243) ~[?:?]
        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.PlayerDataManager.serversToPlayersBuilder(PlayerDataManager.java:268) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$3(LocalLoadingCache.java:183) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2688) ~[?:?]
        at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2686) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2669) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:112) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.internal.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:58) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.api.PlayerDataManager.serversToPlayers(PlayerDataManager.java:238) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI.getServerToPlayers(AbstractRedisBungeeAPI.java:116) ~[?:?]
        at com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI.getPlayersOnServer(AbstractRedisBungeeAPI.java:126) ~[?:?]
        at tr.com.efekurban.queue.server.QueueManager.getCurrentPlayers(QueueManager.java:128) ~[?:?]
        at tr.com.efekurban.queue.server.QueueManager.getCurrentPlayersOnGroup(QueueManager.java:140) ~[?:?]
        at tr.com.efekurban.queue.server.QueueManager.addPlayer(QueueManager.java:194) ~[?:?]
        at tr.com.efekurban.queue.command.QueueCommand.execute(QueueCommand.java:63) ~[?:?]
        at tr.com.efekurban.queue.command.QueueCommand.execute(QueueCommand.java:15) ~[?:?]
        at com.velocitypowered.proxy.command.registrar.InvocableCommandRegistrar.lambda$createLiteral$1(InvocableCommandRegistrar.java:81) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:262) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.executeImmediately0(VelocityCommandManager.java:230) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.lambda$executeImmediatelyAsync$1(VelocityCommandManager.java:279) ~[velocity.jar:3.3.0-SNAPSHOT (git-07f1f9e7-b396)]
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 3 more

Discussed on the discord. my discord: @efekurban