Skip to content

Commit 302dd3f

Browse files
authored
Maintain strong reference for online users (#6247)
Possibly fixes #6241
1 parent 69fd7bc commit 302dd3f

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.earth2me.essentials.textreader.KeywordReplacer;
77
import com.earth2me.essentials.textreader.TextInput;
88
import com.earth2me.essentials.textreader.TextPager;
9+
import com.earth2me.essentials.userstorage.ModernUserMap;
910
import com.earth2me.essentials.utils.AdventureUtil;
1011
import com.earth2me.essentials.utils.CommonPlaceholders;
1112
import com.earth2me.essentials.utils.DateUtil;
@@ -346,6 +347,7 @@ public void delayedJoin(final Player player, final String message) {
346347

347348
ess.getBackup().onPlayerJoin();
348349
final User dUser = ess.getUser(player);
350+
((ModernUserMap) ess.getUsers()).getOnlineUserCache().put(player.getUniqueId(), dUser);
349351
dUser.update(player);
350352

351353
dUser.startTransaction();

Essentials/src/main/java/com/earth2me/essentials/UserData.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public final void reset() {
7474

7575
public final void cleanup() {
7676
config.blockingSave();
77+
ess.getUsers().invalidate(getConfigUUID());
7778
}
7879

7980
@Override

Essentials/src/main/java/com/earth2me/essentials/userstorage/ModernUserMap.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class ModernUserMap extends CacheLoader<UUID, User> implements IUserMap {
2424
private final transient IEssentials ess;
2525
private final transient ModernUUIDCache uuidCache;
2626
private final transient LoadingCache<UUID, User> userCache;
27+
private final transient ConcurrentMap<UUID, User> onlineUserCache;
2728

2829
private final boolean debugPrintStackWithWarn;
2930
private final long debugMaxWarnsPerType;
@@ -50,6 +51,7 @@ public ModernUserMap(final IEssentials ess) {
5051
this.debugPrintStackWithWarn = Boolean.parseBoolean(printStackProperty);
5152
this.debugLogCache = Boolean.parseBoolean(logCacheProperty);
5253
this.debugNonPlayerWarnCounts = new ConcurrentHashMap<>();
54+
this.onlineUserCache = new ConcurrentHashMap<>();
5355
}
5456

5557
@Override
@@ -91,6 +93,10 @@ public User getUser(final Player base) {
9193
return user;
9294
}
9395

96+
public ConcurrentMap<UUID, User> getOnlineUserCache() {
97+
return onlineUserCache;
98+
}
99+
94100
@Override
95101
public User getUser(final String name) {
96102
if (name == null) {
@@ -207,6 +213,7 @@ public void blockingSave() {
207213
public void invalidate(final UUID uuid) {
208214
userCache.invalidate(uuid);
209215
uuidCache.removeCache(uuid);
216+
onlineUserCache.remove(uuid);
210217
}
211218

212219
private File getUserFile(final UUID uuid) {
@@ -215,6 +222,7 @@ private File getUserFile(final UUID uuid) {
215222

216223
public void shutdown() {
217224
uuidCache.shutdown();
225+
onlineUserCache.clear();
218226
}
219227

220228
private void debugLogCache(final User user) {

0 commit comments

Comments
 (0)