DBObject является не потокобезопасным;вы отправляете объект DBObject с вашим сообщением актера.Вполне вероятно, что позже он снова будет изменен, что вызовет эту проблему одновременной модификации.
Я бы предложил начать с попытки использовать clone()
для объекта DBObject, когда он входит в субъект, и поместить его вваш буфер.Это только поверхностная копия, но, по крайней мере, ее должно быть достаточно, чтобы вызвать проблемы с одновременной модификацией в LinkedHashMap, который поддерживает ключи в DBObject (который хранится в порядке, благодаря LHM).
Я бы попробовал:
def act() {
loop {
react {
case info: DBObject => add(info.clone())
case msg if msg == "closeConnection" =>
println("Close connection")
add()
mongoConn.close
}
}
}
Если это не сработает, посмотрите где-либо еще, где вы модифицируете объект DBObject после его отправки в Actor.