Finally understood what's going on. It was a regression in the new FlushAction [1]. Old one didn't sort updates in any way. So two issues later (and one optimization), it should be better now.
[1] https://issues.apache.org/jira/browse/CAY-2868 On Thu, Aug 15, 2024 at 3:49 PM Hugi Thordarson <h...@godurkodi.is> wrote: > Hi Nikita, > > again, thanks for looking into this! And yeah, totally understand how > we're not about to insert everything in one commit. Well, at least until > the universe decides it's time everyone move to app generated UUID PKs and > deferred constraint checks :). > > Cheers, > - hugi > > > > > On 14 Aug 2024, at 11:27, Nikita Timofeev <ntimof...@objectstyle.com> > wrote: > > > > In this case it seems like a true cycle, the Person entity has two > > relationships to self. And that particular case Cayenne didn't handle > well > > historically. > > But looking at it, I want to try and tweak the new Graph-based sorter, > > because two updates generated shouldn't depend on each other. So maybe it > > could be fixed now. > > It still won't be able to insert all the data in one go though. > > > > On Wed, Aug 14, 2024 at 11:33 AM Hugi Thordarson <h...@godurkodi.is> > wrote: > > > >> Hi again Nikita! > >> > >> saw the fix you made yesterday and it works great for the test I > created, > >> so thanks for that! > >> > >> However, turns out that for the more complex case in our actual project, > >> the operation still fails. > >> I've added a new example to the test project that models that case a > >> little more closely: > >> > >> > >> > https://github.com/hugithordarson/xx-c42/blob/main/src/main/java/family/MainWithAddedBackReference.java > >> > >> Any thoughts? > >> > >> Cheers, > >> - hugi > >> > >> > >> > >>> On 12 Aug 2024, at 13:52, Nikita Timofeev <ntimof...@objectstyle.com> > >> wrote: > >>> > >>> Hi Hugi, > >>> > >>> Thanks for the perfect example, that's always my main problem. > >>> I've found the issue with the new flush logic [1]. The last operation > >>> creates two logical changes (DbRowOps), and one of them is later > >> discarded > >>> as there's nothing to flush to the DB. > >>> However it's discarded only after the sorting, so it fails. > >>> I'm already testing a fix for that. > >>> > >>> Also wanted to mention that in this exact case GraphBasedDbRowOpSorter > >>> helps, as it checks operation internals and ignores it. > >>> > >>> [1] https://issues.apache.org/jira/browse/CAY-2866 > >>> > >>> On Fri, Aug 9, 2024 at 12:58 PM Hugi Thordarson <h...@godurkodi.is> > >> wrote: > >>> > >>>> Hi Andrus, > >>>> I've been taking a look at this with Maik, here's a runnable example > >>>> project containing a commit that works on v4.1 but fails in v4.2: > >>>> > >>>> https://github.com/hugithordarson/xx-c42/ > >>>> > >>>> Quick link to the code actually demonstrating the failure: > >>>> > >>>> > >> > https://github.com/hugithordarson/xx-c42/blob/main/src/main/java/family/Main.java > >>>> > >>>> The last commit certainly results in a circular reference being > present > >> in > >>>> the object graph, but it probably shouldn't be a problem for the > actual > >>>> operation since we're only updating a single row, right? > >>>> > >>>> Cheers, > >>>> - hugi > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>>> On 8 Aug 2024, at 18:10, Andrus Adamchik <aadamc...@gmail.com> > wrote: > >>>>> > >>>>> Hi Maik, > >>>>> > >>>>> Could you provide an example of a failing graph? > >>>>> > >>>>> Thanks, > >>>>> Andrus > >>>>> > >>>>>> On Aug 7, 2024, at 7:31 AM, Maik Musall <m...@selbstdenker.ag> > wrote: > >>>>>> > >>>>>> Hi everyone, > >>>>>> > >>>>>> we upgraded an application from Cayenne 4.1.1 to 4.2.1, and now > we’re > >>>> getting more cyclic graph errors from AshwoodEntitySorter. Years back > we > >>>> already had a similar problem, but @SortWeight didn’t help and > >>>> GraphBasedDbRowOpSorter wasn’t ready. The latter is now in 4.2 stable > >> but > >>>> fails to save even simpler graphs, so unfortunately not a solution. We > >> had > >>>> been able to get stable operation by fetching PK’s from PostgreSQL > >>>> sequences (Oracle-style) instead of having Cayenne generate them, and > >> lived > >>>> with the performance penalty associated with that, but the problem > came > >>>> back with 4.2 despite that. Not reliably reproducible though, happens > >> every > >>>> now and then. Any thoughts? > >>>>>> > >>>>>> Thanks > >>>>>> Maik > >>>>>> > >>>>> > >>>> > >>>> > >>> > >>> -- > >>> Best regards, > >>> Nikita Timofeev > >> > >> > > > > -- > > Best regards, > > Nikita Timofeev > > -- Best regards, Nikita Timofeev