plan-player-analytics / Plan

Player Analytics plugin for Minecraft Server platforms - View player activity of your server with ease. :calendar:
https://www.spigotmc.org/resources/plan-player-analytics.32536/
GNU Lesser General Public License v3.0
858 stars 170 forks source link

Every 60s: "Plugin Plan v5.6 build 2883 generated an exception while executing task x" #3676

Closed tesdai closed 3 months ago

tesdai commented 3 months ago

Describe the issue

Once every 60 seconds, Plan is throwing a Warning "Plugin Plan v5.6 build 2883 generated an exception while executing task x" in the console. x is a different number everytime the server restarts it seems. Starts while the server in launching:

[01:33:19 INFO]: [Plan] You're using the latest version.
[01:33:19 INFO]: [Plan] Storing sessions that were preserved before previous shutdown.
[01:33:19 WARN]: [Plan] Plugin Plan v5.6 build 2883 generated an exception while executing task 35
java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 1

Exceptions & Other Logs

First two are pulled from a Discord SRV console channel. Second two are pulled directly from the console. It has a different task error after every server restart.

[Sun 23:55:00 WARN  Plan] Plugin Plan v5.6 build 2883 generated an exception while executing task 3577391
java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 1
    at java.base/jdk.internal.util.Preconditions$1.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions$1.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions$4.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions$4.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Unknown Source)
    at java.base/java.lang.String.checkBoundsBeginEnd(Unknown Source)
    at java.base/java.lang.String.substring(Unknown Source)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigValueParser$StringParser.compose(ConfigValueParser.java:91)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigValueParser$StringListParser.compose(ConfigValueParser.java:191)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:277)
    at java.base/java.util.Optional.map(Unknown Source)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:315)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:42)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:30)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.PlanConfig.get(PlanConfig.java:80)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.updateDnsEntries(AddressAllowList.java:79)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.delivery.webserver.configuration.AddressAllow
[Mon 00:24:50 WARN  Plan] Plugin Plan v5.6 build 2883 generated an exception while executing task 22
java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 1
    at java.base/jdk.internal.util.Preconditions$1.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions$1.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions$4.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions$4.apply(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Unknown Source)
    at java.base/java.lang.String.checkBoundsBeginEnd(Unknown Source)
    at java.base/java.lang.String.substring(Unknown Source)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigValueParser$StringParser.compose(ConfigValueParser.java:91)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigValueParser$StringListParser.compose(ConfigValueParser.java:191)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:277)
    at java.base/java.util.Optional.map(Unknown Source)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:315)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:42)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:30)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.settings.config.PlanConfig.get(PlanConfig.java:80)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.updateDnsEntries(AddressAllowList.java:79)
    at Plan-5.6-build-2883.jar//com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.
[01:22:44 WARN]: [Plan] Plugin Plan v5.6 build 2883 generated an exception while executing task 25
java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 1
        at jdk.internal.util.Preconditions$1.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions$1.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions$4.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions$4.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions.outOfBounds(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions.checkFromToIndex(Unknown Source) ~[?:?]
        at java.lang.String.checkBoundsBeginEnd(Unknown Source) ~[?:?]
        at java.lang.String.substring(Unknown Source) ~[?:?]
        at com.djrapitops.plan.settings.config.ConfigValueParser$StringParser.compose(ConfigValueParser.java:91) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.ConfigValueParser$StringListParser.compose(ConfigValueParser.java:191) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:277) ~[Plan-5.6-build-2883.jar:?]
        at java.util.Optional.map(Unknown Source) ~[?:?]
        at com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:315) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:42) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:30) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.PlanConfig.get(PlanConfig.java:80) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.updateDnsEntries(AddressAllowList.java:79) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.run(AddressAllowList.java:75) ~[Plan-5.6-build-2883.jar:?]
        at net.playeranalytics.plugin.scheduling.UnscheduledBukkitTask.run(UnscheduledBukkitTask.java:22) ~[Plan-5.6-build-2883.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.4.jar:git-Paper-497]
        at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.20.4.jar:git-Paper-497]
        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.20.4.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
[01:39:22 WARN]: [Plan] Plugin Plan v5.6 build 2883 generated an exception while executing task 35
java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 1
        at jdk.internal.util.Preconditions$1.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions$1.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions$4.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions$4.apply(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions.outOfBounds(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Unknown Source) ~[?:?]
        at jdk.internal.util.Preconditions.checkFromToIndex(Unknown Source) ~[?:?]
        at java.lang.String.checkBoundsBeginEnd(Unknown Source) ~[?:?]
        at java.lang.String.substring(Unknown Source) ~[?:?]
        at com.djrapitops.plan.settings.config.ConfigValueParser$StringParser.compose(ConfigValueParser.java:91) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.ConfigValueParser$StringListParser.compose(ConfigValueParser.java:191) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:277) ~[Plan-5.6-build-2883.jar:?]
        at java.util.Optional.map(Unknown Source) ~[?:?]
        at com.djrapitops.plan.settings.config.ConfigNode.getStringList(ConfigNode.java:315) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:42) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.paths.key.StringListSetting.getValueFrom(StringListSetting.java:30) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.settings.config.PlanConfig.get(PlanConfig.java:80) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.updateDnsEntries(AddressAllowList.java:79) ~[Plan-5.6-build-2883.jar:?]
        at com.djrapitops.plan.delivery.webserver.configuration.AddressAllowList.run(AddressAllowList.java:75) ~[Plan-5.6-build-2883.jar:?]
        at net.playeranalytics.plugin.scheduling.UnscheduledBukkitTask.run(UnscheduledBukkitTask.java:22) ~[Plan-5.6-build-2883.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.4.jar:git-Paper-497]
        at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.20.4.jar:git-Paper-497]
        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.20.4.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]

Plugin versions

Plan v5.6 build 2883

Additional information

Paper version: git-Paper-497 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: d8d54d9 on ver/1.20.4) Using Java 21

AuroraLS3 commented 3 months ago

Webserver.Security.IP_whitelist.Whitelist setting is set incorrectly, it is expecting a string list: (doesn't have to be these addresses, but it needs at least one, even if it is - "")

      Whitelist:
        - "192.168.0.0"
        - "0:0:0:0:0:0:0:1"
tesdai commented 3 months ago

Thank you, that seems to have resolved it. I had put my own comments (#) on the same line as the IP strings (outside of the strings) to denote who's was who's and looks like all the texts on those lines were wiped out, so it just had multiple lines without strings after the -.

AuroraLS3 commented 3 months ago

Ah, so root cause is this bug https://github.com/plan-player-analytics/Plan/issues/2297

AuroraLS3 commented 3 months ago

I'll mark this as closed even though the root cause hasn't been fixed.