So looks like this will affect users of Derby and SQLServer who are also using 
the AutoAdapter (don't know if anyone still NOT using the AutoAdapter?). I 
suppose we can still release the M1, though it will not be usable for me 
unfortunately until this is fixed.

Thoughts?

Andrus 

> On Apr 13, 2020, at 11:40 AM, Nikita Timofeev <ntimof...@objectstyle.com> 
> wrote:
> 
> Hi Andrus,
> 
> Yes, LinkMove problems related to batch generated keys. The problem is
> with AutoAdapter, it simply doesn't define
> supportsGeneratedKeysForBatchInserts() method.
> DerbyAdapter itself works fine.
> 
> On Sun, Apr 12, 2020 at 11:47 AM Andrus Adamchik <and...@objectstyle.org> 
> wrote:
>> 
>> Still testing the release... As expected 4.2 is no longer a drop-in 
>> replacement of 4.0 for either Agrest or LinkMove (because of the Property 
>> class refactoring). So I made a few tweaks to LM to make it compile [1]. Now 
>> I am getting the following error on commit in a bunch of tests (e.g. 
>> CreateIT) [2].
>> 
>> Is this related to 57332e865f5dabb9c7adef4bac9a61137f6828c4 (batch mode and 
>> PKs on Derby) ?
>> 
>> (Derby version used in tests is 10.14.2.0 - the latest that supports Java 8)
>> 
>> Andrus
>> 
>> 
>>> On Apr 7, 2020, at 2:03 PM, Nikita Timofeev <ntimof...@objectstyle.com> 
>>> wrote:
>>> 
>>> Hi all,
>>> 
>>> Here is another try for the Cayenne 4.2.M1 release.
>>> 
>>> Release notes: 
>>> https://github.com/apache/cayenne/blob/4.2.M1/RELEASE-NOTES.txt
>>> Maven repo: 
>>> https://repository.apache.org/content/repositories/orgapachecayenne-1038/
>>> Assemblies: https://dist.apache.org/repos/dist/dev/cayenne/4.2.M1/
>>> 
>>> Please evaluate and cast your votes.
>>> 
>>> --
>>> Best regards,
>>> Nikita Timofeev
>> 
>> 
>> [1] https://github.com/nhl/link-move/tree/cayenne-4.2 
>> <https://github.com/nhl/link-move/tree/cayenne-4.2>
>> 
>> [2]  org.apache.cayenne.CayenneRuntimeException: [v.4.2.M1 Apr 07 2020 
>> 09:32:02] Mismatching number of generated PKs: expected 2, instead got 1
>> at 
>> org.apache.cayenne.access.flush.FlushObserver.nextGeneratedRows(FlushObserver.java:77)
>> at 
>> org.apache.cayenne.access.DataNodeQueryAction$1.nextGeneratedRows(DataNodeQueryAction.java:77)
>> at 
>> org.apache.cayenne.access.jdbc.BatchAction.processGeneratedKeys(BatchAction.java:288)
>> at 
>> org.apache.cayenne.access.jdbc.BatchAction.runAsBatch(BatchAction.java:133)
>> at 
>> org.apache.cayenne.access.jdbc.BatchAction.performAction(BatchAction.java:94)
>> at 
>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
>> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
>> at 
>> org.apache.cayenne.access.flush.DefaultDataDomainFlushAction.lambda$executeQueries$6(DefaultDataDomainFlushAction.java:175)
>> at java.util.HashMap.forEach(HashMap.java:1288)
>> at 
>> org.apache.cayenne.access.flush.DefaultDataDomainFlushAction.executeQueries(DefaultDataDomainFlushAction.java:174)
>> at 
>> org.apache.cayenne.access.flush.DefaultDataDomainFlushAction.flush(DefaultDataDomainFlushAction.java:89)
>> at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:637)
>> at org.apache.cayenne.access.DataDomain.onSyncNoFilters(DataDomain.java:609)
>> at 
>> org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:835)
>> at 
>> org.apache.cayenne.tx.TransactionFilter.lambda$onSync$0(TransactionFilter.java:61)
>> at 
>> org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInTransaction(DefaultTransactionManager.java:180)
>> at 
>> org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInNewTransaction(DefaultTransactionManager.java:152)
>> at 
>> org.apache.cayenne.tx.DefaultTransactionManager$NestedTransactionHandler.handle(DefaultTransactionManager.java:95)
>> at 
>> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:62)
>> at 
>> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:40)
>> at org.apache.cayenne.tx.TransactionFilter.onSync(TransactionFilter.java:61)
>> at 
>> org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:834)
>> at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:596)
>> at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:737)
>> at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:686)
>> at 
>> com.nhl.link.move.runtime.task.create.CreateSegmentProcessor.commitTarget(CreateSegmentProcessor.java:63)
>> at 
>> com.nhl.link.move.runtime.task.create.CreateSegmentProcessor.process(CreateSegmentProcessor.java:44)
>> at 
>> com.nhl.link.move.runtime.task.create.CreateTask.lambda$createBatchProcessor$1(CreateTask.java:72)
>> at com.nhl.link.move.batch.BatchRunner.run(BatchRunner.java:57)
>> at com.nhl.link.move.runtime.task.create.CreateTask.doRun(CreateTask.java:62)
>> at com.nhl.link.move.runtime.task.BaseTask.run(BaseTask.java:46)
>> at com.nhl.link.move.LmTask.run(LmTask.java:31)
>> at com.nhl.link.move.runtime.task.BaseTask.run(BaseTask.java:39)
>> at com.nhl.link.move.LmTask.run(LmTask.java:19)
>> at com.nhl.link.move.itest.CreateIT.testSync(CreateIT.java:24)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:498)
>> at 
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>> at 
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>> at 
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>> at 
>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>> at 
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>> at 
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>> at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>> at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>> at 
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>> at 
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>> at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
>> at 
>> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
>> 
> 
> 
> -- 
> Best regards,
> Nikita Timofeev

Reply via email to