Re: [VOTE] Apache Cayenne 4.2.M1 release

Andrus Adamchik <[email protected]>
Newsgroups gmane.comp.java.cayenne.devel
Message-ID <[email protected]>
Been thinking more about this... This breaks basic commit operations for both Derby and SQLServer, making it a major issue. We've never shipped releases with known bugs like this, even milestones. On the other hand there is a workaround - use an explicit adapter.

I am voting -0, which means that I wouldn't release it like that, but I don't want to veto the release either. If the majority decides we should proceed, so be it.

Andrus


> On Apr 13, 2020, at 2:53 PM, Michael Gentry <[email protected]> wrote:
> 
> Hi Andrus,
> 
> Given this is a milestone release, I think it is fine to release with the
> AutoAdapter issue.  These releases aren't required or expected to be
> production-ready, although that would certainly be nice.  They are for
> finding issues needing to be addressed, and you have.  :-)
> 
> mrg
> 
> 
> On Mon, Apr 13, 2020 at 5:24 AM Andrus Adamchik <[email protected]>
> wrote:
> 
>> 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 <[email protected]>
>> 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 <[email protected]>
>> 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 <[email protected]>
>> 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
>> 
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.