Skip to content

Commit

Permalink
try to handle configs not saving on slower systems (#8277)
Browse files Browse the repository at this point in the history
  • Loading branch information
thiakil committed Dec 21, 2024
1 parent fb71dbc commit 6adc761
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 3 deletions.
35 changes: 35 additions & 0 deletions src/main/java/mekanism/common/config/BaseMekanismConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import mekanism.common.Mekanism;
import mekanism.common.config.value.CachedValue;
import net.neoforged.neoforge.common.ModConfigSpec;

public abstract class BaseMekanismConfig implements IMekanismConfig {

private static final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor();

private final List<CachedValue<?>> cachedConfigValues = new ArrayList<>();

@Override
Expand All @@ -19,4 +25,33 @@ public void clearCache(boolean unloading) {
public void addCachedValue(CachedValue<?> configValue) {
cachedConfigValues.add(configValue);
}

@Override
public void save() {
EXECUTOR.submit(new ConfigSaver(getConfigSpec()));
}

private static class ConfigSaver implements Runnable {

private final ModConfigSpec configSpec;
private int retries = 0;

private ConfigSaver(ModConfigSpec configSpec) {
this.configSpec = configSpec;
}

@Override
public void run() {
try {
configSpec.save();
} catch (Exception e) {
Mekanism.logger.error("Failed to save config", e);
if (retries++ < 3) {
EXECUTOR.submit(this);
} else {
Mekanism.logger.error("Giving up");
}
}
}
}
}
4 changes: 1 addition & 3 deletions src/main/java/mekanism/common/config/IMekanismConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ default boolean isLoaded() {

ModConfig.Type getConfigType();

default void save() {
getConfigSpec().save();
}
void save();

void clearCache(boolean unloading);

Expand Down

0 comments on commit 6adc761

Please sign in to comment.