fix: properly account for MetaCache mutation when removing old keys
This commit is contained in:
parent
6dffd405c9
commit
436ef1a966
@ -68,7 +68,7 @@ public class MetaCache {
|
||||
Respackopts.LOGGER.warn("Duplicate pack id: {0}", pack.meta().id);
|
||||
}
|
||||
}
|
||||
PACK_STATES.keySet().stream().filter(s -> !newKeys.contains(s)).forEach(MetaCache::remove);
|
||||
PACK_STATES.keySet().stream().filter(s -> !newKeys.contains(s)).toList().forEach(MetaCache::remove);
|
||||
save(SaveHook.Arguments.DO_NOTHING);
|
||||
}
|
||||
|
||||
@ -184,20 +184,20 @@ public class MetaCache {
|
||||
|
||||
public static Scope getScope(int version) {
|
||||
Scope scope = MuScriptScope.fork(version);
|
||||
return populate(scope);
|
||||
return populate(scope, null);
|
||||
}
|
||||
|
||||
public static Scope getScope(@NotNull CacheKey key, RespackoptsFS fs) {
|
||||
CachedPackState state = MetaCache.getState(key);
|
||||
Scope scope = state.executionScope().fork();
|
||||
return populate(MuScriptScope.configureFS(scope, state, fs));
|
||||
return populate(MuScriptScope.configureFS(scope, state, fs), state);
|
||||
}
|
||||
|
||||
private static Scope populate(Scope scope) {
|
||||
private static Scope populate(Scope scope, @Nullable CachedPackState pack) {
|
||||
forEach((id, state) -> {
|
||||
if (!scope.has(state.packId())) {
|
||||
scope.set(state.packId(), state.configBranch());
|
||||
}
|
||||
if (scope.has(state.packId())) return;
|
||||
if (pack != null && pack.packId().equals(state.packId()) && !pack.equals(state)) return;
|
||||
scope.set(state.packId(), state.configBranch());
|
||||
});
|
||||
return scope;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user