Fix ConcurrentModificationException
This commit is contained in:
parent
df54d1f3ec
commit
f20a364f65
|
@ -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;
|
||||
modelGroupLock.lock();
|
||||
try {
|
||||
modelGroups.remove(group);
|
||||
modelGroups.add(group);
|
||||
config.save();
|
||||
} finally {
|
||||
modelGroupLock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteModelGroup(ModelGroup group) throws IOException {
|
||||
modelGroupLock.lock();
|
||||
try {
|
||||
config.getSettings().modelGroups.remove(group);
|
||||
config.save();
|
||||
} finally {
|
||||
modelGroupLock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -691,7 +691,7 @@ public class RemoteRecorder implements Recorder {
|
|||
|
||||
@Override
|
||||
public Set<ModelGroup> getModelGroups() {
|
||||
return modelGroups;
|
||||
return new HashSet<>(modelGroups);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue