PaperMC / PaperMC/Paper

ConcurrentModificationException caused by async command sending patch

Open
#11,101 17 comments 0 reactions 0 assignees View on GitHub

@Gerrygames is already working on this.

Since Feb 11, 2026.

  • #13626 by @Gerrygames — open
status: accepted type: bug version: 1.21
Dominant language
Java
Stars
12.7k
Forks
3.5k
Avg merge
3d 13h
Merged PRs (30d)
11

Description

Expected behavior

No errors and a clean reload.

Observed/Actual behavior

A ConcurrentModificationException.

Steps/models to reproduce

Start server
Reload until you see the error. ( it's at the bottom kinda )

Plugin and Datapack List

Plugins (all Bukkit) : FacilisCommon, MultiWorld and SkinsRestorer
Datapacks: vanilla (built-in), file/bukkit (world), bundle (feature), paper (built-in)

Paper version

[19:56:32 INFO]: Checking version, please wait...
[19:56:32 INFO]: This server is running Paper version 1.21-83-master@967f98a (2024-07-17T14:55:35Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-81-ceeb8c1 (MC: 1.21)

Other

I noticed that every time I start my server, reload it a couple of times ( because I am developing my own plugin ) and look at the console ( to check for bugs ), I see a ConcurrentModificationException with a number that increments every time I see the error ( not every time I reload ).

So, I remove my plugin from the list and I see that it's still happening every couple of reloads. So I test it a bit more and then it starts happening every 2 reloads.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing linked pull request #13626 and the issue's reload reproduction steps. Trace the reported ConcurrentModificationException in the server's reload and async command-sending paths; done means repeated reloads no longer produce the exception or an unclean reload.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.