forked from j62/ctbrec
1
0
Fork 0

Fix ConcurrentModificationException

This commit is contained in:
0xb00bface 2021-08-07 14:12:49 +02:00
parent df54d1f3ec
commit f20a364f65
2 changed files with 24 additions and 7 deletions

View File

@ -17,6 +17,7 @@ import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@ -68,6 +69,7 @@ public class NextGenLocalRecorder implements Recorder {
private Config config;
private volatile boolean recording = true;
private ReentrantLock recorderLock = new ReentrantLock();
private ReentrantLock modelGroupLock = new ReentrantLock();
private RecorderHttpClient client = new RecorderHttpClient();
private Map<Model, Recording> recordingProcesses = Collections.synchronizedMap(new HashMap<>());
private RecordingManager recordingManager;
@ -808,20 +810,35 @@ public class NextGenLocalRecorder implements Recorder {
@Override
public Set<ModelGroup> getModelGroups() {
return config.getSettings().modelGroups;
modelGroupLock.lock();
try {
return new HashSet<>(config.getSettings().modelGroups);
} finally {
modelGroupLock.unlock();
}
}
@Override
public void saveModelGroup(ModelGroup group) throws IOException {
Set<ModelGroup> modelGroups = config.getSettings().modelGroups;
modelGroups.remove(group);
modelGroups.add(group);
config.save();
modelGroupLock.lock();
try {
modelGroups.remove(group);
modelGroups.add(group);
config.save();
} finally {
modelGroupLock.unlock();
}
}
@Override
public void deleteModelGroup(ModelGroup group) throws IOException {
config.getSettings().modelGroups.remove(group);
config.save();
modelGroupLock.lock();
try {
config.getSettings().modelGroups.remove(group);
config.save();
} finally {
modelGroupLock.unlock();
}
}
}

View File

@ -691,7 +691,7 @@ public class RemoteRecorder implements Recorder {
@Override
public Set<ModelGroup> getModelGroups() {
return modelGroups;
return new HashSet<>(modelGroups);
}
@Override