Hi!

Thanks for the information and even more for the debugging you already did.
There was a commit a bit after 4.2.RC2 was released that could be
related to your problem.
Would be great if you could try it and see if it helps.

https://github.com/apache/cayenne/commit/53c9408e026d926601baf6e68b9761489c273397

On Wed, Mar 8, 2023 at 6:26 PM Henrique Gomes <h...@farol.pt> wrote:
>
>
> Hello,
>
> I want to ask for help debugging an issue:
>
> On January I updated Cayenne from 4.2.RC1 to 4.2.RC2.
> Immediately after that, we had an issue of objects not being persisted to the 
> db; an http endpoint on our service accepts a batch of records and creates 
> objects to save:
>
> ObjectContext ctx = server.newContext();
>
> for (Aggregation post : request.getEntries()) {
>
>         MyDataObject dbo = ctx.newObject(MyDataObject.class);
>
>         dbo.setValueDate(post.getValueDate());
>
>         dbo.setVersion(post.getVersion());
>
>         dbo.setUuid(post.getUuidBytes());
>
>                         ... etc ...
>         }
>
> try {
>
>         ctx.commitChanges();
>
>
> The endpoint is called with up to 250 items at a time, and we store ~4000 on 
> each daily run of that job.
> We found that after the update, a small number, like 2 sometime more, records 
> would be missing from the db, but not always.
>
>
> Rolling back seemed to solve the issue. Puzzled, I tried git bisecting 
> Cayenne from RC1 to RC2.
> This is was the result:
>
>
> 7bc235f92e2e61d3f4f04d3bebb65a1756d2e092 is the first bad commit
> commit 7bc235f92e2e61d3f4f04d3bebb65a1756d2e092
> Author: Nikita Timofeev <stari...@gmail.com>
> Date:   Mon Nov 21 12:59:45 2022 +0300
>
>     CAY-2777 Reverse relationship is not set with single table inheritance
>
>  .../access/flush/DefaultDataDomainFlushAction.java |   3 +-
>  .../apache/cayenne/access/flush/EffectiveOpId.java |   2 +-
>  .../access/flush/operation/OpIdFactory.java        | 113 ++++++++++++++++++
>  .../org/apache/cayenne/map/ObjRelationship.java    |  13 +-
>  .../java/org/apache/cayenne/ManyToManyJoinIT.java  |  27 +++++
>  .../SelfRelationship.java                          |  28 +++++
>  .../SelfRelationshipSub.java                       |  28 +++++
>  .../auto/_Author.java                              |   7 +-
>  .../auto/_SelfRelationship.java                    | 132 
> +++++++++++++++++++++
>  .../auto/_SelfRelationshipSub.java                 |  91 ++++++++++++++
>  .../auto/_Song.java                                |  10 +-
>  .../relationships-many-to-many-join.map.xml        |  37 +++++-
>  12 files changed, 472 insertions(+), 19 deletions(-)
>  create mode 100644 
> cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/OpIdFactory.java
>  create mode 100644 
> cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_many_to_many_join/SelfRelationship.java
>  create mode 100644 
> cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_many_to_many_join/SelfRelationshipSub.java
>  create mode 100644 
> cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_many_to_many_join/auto/_SelfRelationship.java
>  create mode 100644 
> cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships_many_to_many_join/auto/_SelfRelationshipSub.java
>
> I also tried reverting this commit on top of RC2 and that also seems to have 
> solved it.
>
> The entity is quite simple, no relationships at all.
> The database is MySQL 8.
> The PK is regular mysql generated ID:
>
>                 <db-attribute name="id" type="BIGINT" isPrimaryKey="true" 
> isGenerated="true" isMandatory="true" length="20"/>
>
> I can share more info, code etc, with someone who wants help debugging it, 
> but can not expose too much company info here, sorry.
> It is of course possible that the bug is outside Cayenne, on our code, db, 
> etc, and somehow only triggered if that commit is present.
> I can not say with 100% certainty that it is an issue with Cayenne.
>
> The issue is sporadic, but quite frequent. If there are any ideas on how I 
> can further debug this, do let me know.
>
> Thanks for the attention given, I really would like to get the bottom of this.
>
> Kind regards,
>
> Henrique Gomes
>
>
>


-- 
Best regards,
Nikita Timofeev

Reply via email to