Andrus Adamchik created CAY-2735:
------------------------------------
Summary: Missing events in CommitLogListener in
"excludeFromTransaction" mode
Key: CAY-2735
URL: https://issues.apache.org/jira/browse/CAY-2735
Project: Cayenne
Issue Type: Bug
Affects Versions: 4.2.B1
Reporter: Andrus Adamchik
I have a Persistent object X with the following {{@PostPersist}}
{noformat}
@PostPersist
public void postPersist() {
setPropX(...calculation_based_on_id_);
getObjectContext().commitChanges();
}
{noformat}
And a CommitLogListener in "excludeFromTransaction" mode, used to be able to
see the value of "propX" in the same transaction as the main object creation:
{noformat}
CommitLogModule.extend()
.addListener(listener)
.excludeFromTransaction()
.module());
{noformat}
When I create and commit a new X, it results in two commits in a single
transaction (one from the user code, and another one - from PostPersist), with
one INSERT event and one - UPDATE respectively. But my "listener" only receives
the update and 2 ObjectId change events (the latter are not expected; they are
not seen on a regular commit)...
Removing "excludeFromTransaction", results in the listener correctly receiving
first an INSERT and then an UPDATE events. But since those come as separate
calls, it is hard to match them together and make sense of the overall change.
While I can probably find a workaround for my case, we need to think how the
CommitLogFilter should behave when multiple operations occur in a single
transaction.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)