[
https://issues.apache.org/jira/browse/CAY-2896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nikita Timofeev reassigned CAY-2896:
------------------------------------
Assignee: Nikita Timofeev
> Inserting two identical objects into two datamaps stores both objects in the
> last used datamap
> ----------------------------------------------------------------------------------------------
>
> Key: CAY-2896
> URL: https://issues.apache.org/jira/browse/CAY-2896
> Project: Cayenne
> Issue Type: Bug
> Components: Core Library
> Affects Versions: 4.2, 4.2.1, 4.2.2, 5.0-M1
> Reporter: Christopher Thonfeld-Guckes
> Assignee: Nikita Timofeev
> Priority: Major
> Labels: newbie, patch, pull-request-available
> Fix For: 4.2.3, 5.0-M2
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> After upgrading from 4.1.1 to 4.2 we've noticed a regression. We have two
> identical tables in two separate databases. Our integration test tries
> storing one object in each table like so:
> {code:java}
> createObject in DbContext1
> createObject in DbContext2
> flush{code}
> In all versions before 4.2 this worked fine. Internally the entities have
> different names (CommonLog and PluginLog), but they're the same Java class
> and the table names are the same in both databases.
> From version 4.2 on Cayenne started batching those requests which resulted in
> both entities being written to the PluginLog table. We've tried different
> orders of execution, the last table always wins. If we flush in between the
> create tasks, it works as before.
> We found an issue in the *DbRowOp classes, that lead to this behaviour. The
> isSameBatch functions don't check for different datamaps, when batching up
> insert, update and delete statements.
> I've created a PR for it which I will link after creating this ticket. I do
> need some feedback, whether that's actually enough to fix the issue.
> https://github.com/apache/cayenne/pull/630
--
This message was sent by Atlassian Jira
(v8.20.10#820010)