Ban Management

Ban Management

193k Downloads

Random Exception

Wolf2323 opened this issue ยท 8 comments

commented

Issue report

Tell us about your environment

  • Server Software: git-Tuinity-"8056d13"

  • Server Version: 1.15.4

  • BanManager Version: 7.2.2

  • Online/Offline mode: online

  • Bungeecoord online/offline mode (if applicable): none bungeecord

BanManager config.yml:

# 
# Aliases will be found and blocked automatically, e.g. msg will block tell
debug: false
databases:
  local:
    enabled: true
    storageType: mysql
    host: 
    port: 
    name: 
    user: 
    password: 
    maxConnections: 10
    useSSL: false
    verifyServerCertificate: false
    leakDetection: 3000
    tables:
      players: bm_players
      playerBans: bm_player_bans
      playerBanRecords: bm_player_ban_records
      playerMutes: bm_player_mutes
      playerMuteRecords: bm_player_mute_records
      playerKicks: bm_player_kicks
      playerNotes: bm_player_notes
      playerHistory: bm_player_history
      playerReports: bm_player_reports
      playerReportLocations: bm_player_report_locations
      playerReportStates: bm_player_report_states
      playerReportCommands: bm_player_report_commands
      playerReportComments: bm_player_report_comments
      playerWarnings: bm_player_warnings
      ipBans: bm_ip_bans
      ipBanRecords: bm_ip_ban_records
      ipMutes: bm_ip_mutes
      ipMuteRecords: bm_ip_mute_records
      ipRangeBans: bm_ip_range_bans
      ipRangeBanRecords: bm_ip_range_ban_records
      rollbacks: bm_rollbacks
      nameBans: bm_name_bans
      nameBanRecords: bm_name_ban_records
  global:
    enabled: false
    storageType: mysql
    host: 
    port: 
    name: 
    user: 
    password: 
    maxConnections: 10
    useSSL: false
    verifyServerCertificate: false
    leakDetection: 3000
    tables:
      playerBans: bm_player_ban_all
      playerUnbans: bm_player_unban_all
      playerMutes: bm_player_mute_all
      playerUnmutes: bm_player_unmute_all
      playerNotes: bm_player_note_all
      ipBans: bm_ip_ban_all
      ipUnbans: bm_ip_unban_all
mutedCommandBlacklist:
- msg
softMutedCommandBlacklist:
- msg
duplicateIpCheck: true
bypassDuplicateChecks:
- 0.0.0.0
- 127.0.0.1
logKicks: false
logIps: true
displayNotifications: true
broadcastOnSync: true
timeLimits: {}
cooldowns:
  ban: 10
  tempban: 10
  mute: 10
  tempmute: 10
  banip: 10
  tempbanip: 10
  warn: 10
  tempwarn: 10
  report: 10
warningCooldown: 10
warningActions:
  enabled: false
warningMute: false
hooks:
  enabled: false
checkForUpdates: true
offlineAutoComplete: true
punishAlts: false
denyAlts: true
cleanUp:
  kicks: 30
  banRecords: 0
  ipBanRecords: 0
  ipMuteRecords: 0
  muteRecords: 0
  readWarnings: 0
  unreadWarnings: 0
  playerHistory: 0
maxOnlinePerIp: 2
maxMultiaccountsRecently: 0
multiaccountsTime: 300
checkOnJoin: true
createNoteReasons: false
onlineMode: true
chatPriority: normal
blockInvalidReasons: false

Describe your issue:
I found this exception in the log, there is no more context to this exception:

[12:51:01] [Craft Scheduler Thread - 218 - BanManager/WARN]: [BanManager] Plugin BanManager v7.2.2 generated an exception while executing task 24
java.lang.NullPointerException: Nodes must be provided.
	at me.confuser.banmanager.common.snakeyaml.nodes.NodeTuple.<init>(NodeTuple.java:28) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.representer.BaseRepresenter.representMapping(BaseRepresenter.java:164) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.representer.SafeRepresenter$RepresentMap.representData(SafeRepresenter.java:320) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:95) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.representer.BaseRepresenter.represent(BaseRepresenter.java:65) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.Yaml.dumpAll(Yaml.java:271) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.Yaml.dumpAll(Yaml.java:262) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.Yaml.dumpAll(Yaml.java:234) ~[?:?]
	at me.confuser.banmanager.common.snakeyaml.Yaml.dump(Yaml.java:209) ~[?:?]
	at me.confuser.banmanager.common.configuration.file.YamlConfiguration.saveToString(YamlConfiguration.java:83) ~[?:?]
	at me.confuser.banmanager.common.configuration.file.FileConfiguration.save(FileConfiguration.java:54) ~[?:?]
	at me.confuser.banmanager.common.configs.Config.save(Config.java:86) ~[?:?]
	at me.confuser.banmanager.common.runnables.SaveLastChecked.run(SaveLastChecked.java:16) ~[?:?]
	at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:99) ~[patched_1.16.4.jar:git-Tuinity-"f06591a"]
	at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:58) ~[patched_1.16.4.jar:git-Tuinity-"f06591a"]
	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[patched_1.16.4.jar:git-Tuinity-"f06591a"]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

How to replicate:

Further information:

commented

Can you provide a copy of your schedules.yml contents please?

commented

Of course ;)

# Scheduler intervals in seconds, recommended to leave as default values.
# Setting to 0 disables the scheduler from running.
# Only change if you know what you are doing!
scheduler:
  expiresCheck: 0
  playerBans: 0
  playerMutes: 0
  playerWarnings: 0
  ipBans: 0
  ipRangeBans: 0
  rollbacks: 0
  nameBans: 0
  externalPlayerBans: 0
  externalPlayerMutes: 0
  externalPlayerNotes: 0
  externalIpBans: 0
  saveLastChecked: 0
lastChecked:
  externalPlayerNotes: 0
  playerMutes: 1610377562
  ipRangeBans: 1610377562
  expiresCheck: 1610377562
  nameBans: 1610377562
  externalPlayerMutes: 0
  rollbacks: 1610377562
  playerBans: 1610377562
  externalPlayerBans: 0
  externalIpBans: 0
  playerWarnings: 1610377562
  ipBans: 1610377562

commented

We got one more exception maybe that helps:

[19:02:32] [bm-local housekeeper/WARN]: [bm-local housekeeper] WARN me.confuser.banmanager.common.hikari.pool.ProxyLeakTask - Connection leak detection triggered for me.confuser.banmanager.common.mysql.cj.jdbc.ConnectionImpl@5bc5d24b on thread Craft Scheduler Thread - 1139 - BanManager, stack trace follows
[19:02:32] [bm-local housekeeper/WARN]: java.lang.Exception: Apparent connection leak detected
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.jdbc.DataSourceConnectionSource.getReadWriteConnection(DataSourceConnectionSource.java:147)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.jdbc.DataSourceConnectionSource.getReadOnlyConnection(DataSourceConnectionSource.java:127)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:243)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.dao.BaseDaoImpl.createIterator(BaseDaoImpl.java:1108)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:611)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:605)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.stmt.QueryBuilder.iterator(QueryBuilder.java:394)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.storage.PlayerBanRecordStorage.findUnbans(PlayerBanRecordStorage.java:66)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.runnables.BanSync.newUnbans(BanSync.java:85)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.runnables.BanSync.run(BanSync.java:27)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.runnables.Runner.run(Runner.java:27)
[19:02:32] [bm-local housekeeper/WARN]: 	at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:99)
[19:02:32] [bm-local housekeeper/WARN]: 	at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:58)
[19:02:32] [bm-local housekeeper/WARN]: 	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[19:02:32] [bm-local housekeeper/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[19:02:32] [bm-local housekeeper/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[19:02:32] [bm-local housekeeper/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:834)
commented

We got one more exception maybe that helps:

[19:02:32] [bm-local housekeeper/WARN]: [bm-local housekeeper] WARN me.confuser.banmanager.common.hikari.pool.ProxyLeakTask - Connection leak detection triggered for me.confuser.banmanager.common.mysql.cj.jdbc.ConnectionImpl@5bc5d24b on thread Craft Scheduler Thread - 1139 - BanManager, stack trace follows
[19:02:32] [bm-local housekeeper/WARN]: java.lang.Exception: Apparent connection leak detected
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.jdbc.DataSourceConnectionSource.getReadWriteConnection(DataSourceConnectionSource.java:147)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.jdbc.DataSourceConnectionSource.getReadOnlyConnection(DataSourceConnectionSource.java:127)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:243)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.dao.BaseDaoImpl.createIterator(BaseDaoImpl.java:1108)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:611)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:605)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.ormlite.stmt.QueryBuilder.iterator(QueryBuilder.java:394)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.storage.PlayerBanRecordStorage.findUnbans(PlayerBanRecordStorage.java:66)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.runnables.BanSync.newUnbans(BanSync.java:85)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.runnables.BanSync.run(BanSync.java:27)
[19:02:32] [bm-local housekeeper/WARN]: 	at me.confuser.banmanager.common.runnables.Runner.run(Runner.java:27)
[19:02:32] [bm-local housekeeper/WARN]: 	at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:99)
[19:02:32] [bm-local housekeeper/WARN]: 	at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:58)
[19:02:32] [bm-local housekeeper/WARN]: 	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[19:02:32] [bm-local housekeeper/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[19:02:32] [bm-local housekeeper/WARN]: 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[19:02:32] [bm-local housekeeper/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:834)

Set leakDetection to 0 in your config

commented

So this should solve my secons stacktrace. What is with the first exception?

commented

So this should solve my secons stacktrace. What is with the first exception?

saveLastChecked: 0 is likely the cause, any particular reason you have them all set to 0?

commented

Our case it, that we do not have multiple servers. So we do not need a scheduler, that pull the bans again from the database. So i tryed to disable them with the value 0. And i could not find any other way to disable them.

commented

Reset them back to the defaults, otherwise you'll experience somewhat odd behaviour, such as bans not expiring etc