This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new 65de49d CAY-2713 ConcurrentModificationException when Inserting
65de49d is described below
commit 65de49d46e97be837dd4d10d7526bf502fb6f961
Author: Nikita Timofeev <[email protected]>
AuthorDate: Mon Jun 21 11:49:12 2021 +0300
CAY-2713 ConcurrentModificationException when Inserting
---
RELEASE-NOTES.txt | 1 +
.../apache/cayenne/access/flush/DefaultDataDomainFlushAction.java | 2 +-
.../org/apache/cayenne/access/flush/operation/DbRowOpMerger.java | 5 -----
3 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 52f65a9..9d353a2 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -27,6 +27,7 @@ CAY-2708 Gradle build plugin fails on Java 16
CAY-2709 Modeler: Cgen fails to generate code for a new unsaved project with
all settings set to default
CAY-2710 Modeler: modeler throws IllegalArgumentsException when root and rel
paths have different root
CAY-2712 Shouldn't run batch inserts with generated keys if there is reflexive
dependency
+CAY-2713 ConcurrentModificationException when Inserting
----------------------------------
Release: 4.2.M3
diff --git
a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/DefaultDataDomainFlushAction.java
b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/DefaultDataDomainFlushAction.java
index c42f819..5a673f2 100644
---
a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/DefaultDataDomainFlushAction.java
+++
b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/DefaultDataDomainFlushAction.java
@@ -130,7 +130,7 @@ public class DefaultDataDomainFlushAction implements
DataDomainFlushAction {
protected List<DbRowOp> mergeSameObjectIds(List<DbRowOp> dbRowOps) {
Map<ObjectId, DbRowOp> index = new HashMap<>(dbRowOps.size());
// new EffectiveOpId()
- dbRowOps.forEach(row -> index.merge(row.getChangeId(), row,
DbRowOpMerger.INSTANCE));
+ dbRowOps.forEach(row -> index.merge(row.getChangeId(), row, new
DbRowOpMerger()));
// reuse list
dbRowOps.clear();
dbRowOps.addAll(index.values());
diff --git
a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
index d17eb8a..7a7dedf 100644
---
a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
+++
b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
@@ -28,13 +28,8 @@ import java.util.function.BiFunction;
*/
public class DbRowOpMerger implements DbRowOpVisitor<DbRowOp>,
BiFunction<DbRowOp, DbRowOp, DbRowOp> {
- public static final DbRowOpMerger INSTANCE = new DbRowOpMerger();
-
private DbRowOp dbRow;
- DbRowOpMerger() {
- }
-
@Override
public DbRowOp apply(DbRowOp oldValue, DbRowOp newValue) {
this.dbRow = oldValue;