forked from j62/ctbrec
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.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
@ -68,6 +69,7 @@ public class NextGenLocalRecorder implements Recorder {
|
||||||
private Config config;
|
private Config config;
|
||||||
private volatile boolean recording = true;
|
private volatile boolean recording = true;
|
||||||
private ReentrantLock recorderLock = new ReentrantLock();
|
private ReentrantLock recorderLock = new ReentrantLock();
|
||||||
|
private ReentrantLock modelGroupLock = new ReentrantLock();
|
||||||
private RecorderHttpClient client = new RecorderHttpClient();
|
private RecorderHttpClient client = new RecorderHttpClient();
|
||||||
private Map<Model, Recording> recordingProcesses = Collections.synchronizedMap(new HashMap<>());
|
private Map<Model, Recording> recordingProcesses = Collections.synchronizedMap(new HashMap<>());
|
||||||
private RecordingManager recordingManager;
|
private RecordingManager recordingManager;
|
||||||
|
@ -808,20 +810,35 @@ public class NextGenLocalRecorder implements Recorder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<ModelGroup> getModelGroups() {
|
public Set<ModelGroup> getModelGroups() {
|
||||||
return config.getSettings().modelGroups;
|
modelGroupLock.lock();
|
||||||
|
try {
|
||||||
|
return new HashSet<>(config.getSettings().modelGroups);
|
||||||
|
} finally {
|
||||||
|
modelGroupLock.unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveModelGroup(ModelGroup group) throws IOException {
|
public void saveModelGroup(ModelGroup group) throws IOException {
|
||||||
Set<ModelGroup> modelGroups = config.getSettings().modelGroups;
|
Set<ModelGroup> modelGroups = config.getSettings().modelGroups;
|
||||||
modelGroups.remove(group);
|
modelGroupLock.lock();
|
||||||
modelGroups.add(group);
|
try {
|
||||||
config.save();
|
modelGroups.remove(group);
|
||||||
|
modelGroups.add(group);
|
||||||
|
config.save();
|
||||||
|
} finally {
|
||||||
|
modelGroupLock.unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteModelGroup(ModelGroup group) throws IOException {
|
public void deleteModelGroup(ModelGroup group) throws IOException {
|
||||||
config.getSettings().modelGroups.remove(group);
|
modelGroupLock.lock();
|
||||||
config.save();
|
try {
|
||||||
|
config.getSettings().modelGroups.remove(group);
|
||||||
|
config.save();
|
||||||
|
} finally {
|
||||||
|
modelGroupLock.unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -691,7 +691,7 @@ public class RemoteRecorder implements Recorder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<ModelGroup> getModelGroups() {
|
public Set<ModelGroup> getModelGroups() {
|
||||||
return modelGroups;
|
return new HashSet<>(modelGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue