Skip to content

Transient ConcurrentModificationException on server start-up #727

@SlimeDog

Description

@SlimeDog

Confirmation

  • My issue isn't already found on the Issue tracker.
  • My issue is about PlaceholderAPI and not any expansion or external plugin
  • The issue isn't already fixed in a Spigot Release or Development Build.

Type

Plugin Bug

What happens?

On server start-up, only 29 of 33 hooks were loaded

[17:11:37] [Server thread/ERROR]: [PlaceholderAPI] failed to load class files of expansions
java.util.concurrent.CompletionException: java.util.ConcurrentModificationException
        at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$6(LocalExpansionManager.java:383) ~[PlaceholderAPI-2.10.10-b133.jar:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1764) ~[?:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1756) ~[?:?]
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:295) ~[?:?]
        at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016) ~[?:?]
        at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665) ~[?:?]
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598) ~[?:?]
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) ~[?:?]
Caused by: java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1584) ~[?:?]
        at java.util.HashMap$EntryIterator.next(HashMap.java:1617) ~[?:?]
        at java.util.HashMap$EntryIterator.next(HashMap.java:1615) ~[?:?]
        at com.google.common.graph.DirectedGraphConnections$2$1.computeNext(DirectedGraphConnections.java:145) ~[patched_1.17.1.jar:git-Paper-311]
        at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:141) ~[patched_1.17.1.jar:git-Paper-311]
        at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:136) ~[patched_1.17.1.jar:git-Paper-311]
        at com.google.common.graph.Graphs.reachableNodes(Graphs.java:201) ~[patched_1.17.1.jar:git-Paper-311]
        at org.bukkit.plugin.SimplePluginManager.isTransitiveDepend(SimplePluginManager.java:893) ~[patched_1.17.1.jar:git-Paper-311]
        at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:235) ~[patched_1.17.1.jar:git-Paper-311]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:121) ~[patched_1.17.1.jar:git-Paper-311]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103) ~[patched_1.17.1.jar:git-Paper-311]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:573) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at me.clip.placeholderapi.util.FileUtil.findClass(FileUtil.java:62) ~[PlaceholderAPI-2.10.10-b133.jar:?]
        at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$6(LocalExpansionManager.java:359) ~[PlaceholderAPI-2.10.10-b133.jar:?]
        ... 7 more

Expected Behaviour

Error-free start-up, which is the usual case. Usually, 33 hooks are loaded

>papi list
[18:55:27] [Server thread/INFO]: A total of 33 placeholder hook(s) are active: 
[18:55:27] [Server thread/INFO]: bentobox, biomeremap, bskyblock, cmil, combatlogx, coordinatetool, deluxemenus, denizen, disease, essentials
[18:55:27] [Server thread/INFO]: extrahardmode, frp, insights, level, luckperms, mobhunting, multiverse, ocm, plan, player
[18:55:27] [Server thread/INFO]: pyroweatherpro, quests, residence, server, spark, stat, statistic, str, thirst, vault
[18:55:27] [Server thread/INFO]: viaversion, wesv, worldguard

How to Reproduce

  • Start server with no changes from previous start
  • Note error (above) in console/log
  • Note that 4 hooks failed to load, per papi list output
    • insights
    • mob hunting
    • ocm (oldcombatmechanics)
    • stat

Unfortunately, as mentioned in the title, the error was transient. Subsequent server start-up did not throw the error.

/papi dump Output

N/A

Console Log

See above

Errors

See above

Additional Info

Paper 1.17.1-311
PlaceholderAPI 2.10.10-DEV-133
all placeholders up-to-date

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: Issue (Unconfirmed)Issue is not reproducable and therefore not confirmed to exist.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions