cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Temp ID issue - Exception
Date Thu, 27 Sep 2007 06:55:20 GMT
Thanks for the info. Looks like it was fixed in August as a part of  
another bugfix, and will be released in M2:

~/work/cayenne: svn diff framework/cayenne-jdk1.4-unpublished/src/ 
main/java/org/apache/cayenne/map/AshwoodEntitySorter.java -r  
551302:565900
Index: framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/ 
cayenne/map/AshwoodEntitySorter.java
===================================================================
--- framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/ 
cayenne/map/AshwoodEntitySorter.java  (revision 551302)
+++ framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/ 
cayenne/map/AshwoodEntitySorter.java  (revision 565900)
@@ -302,16 +302,22 @@
          // find committed snapshot - so we can't fetch from the  
context as it will return
          // dirty snapshot; must go down the stack instead
+
+        // how do we handle this for NEW objects correctly? For now  
bail from the method
+        if (object.getObjectId().isTemporary()) {
+            return null;
+        }
+
          ObjectIdQuery query = new ObjectIdQuery(
                  object.getObjectId(),
                  true,
                  ObjectIdQuery.CACHE);
          QueryResponse response = context.getChannel().onQuery(null,  
query);
          List result = response.firstList();
-        if(result == null || result.size() == 0) {
+        if (result == null || result.size() == 0) {
              return null;
          }
-
+
          DataRow snapshot = (DataRow) result.get(0);
          ObjectId id = snapshot.createTargetObjectId 
(targetEntityName, finalRel);


Andrus

On Sep 27, 2007, at 4:04 AM, Gary Jarrel wrote:

> Although not able to reproduce was able to pull it out one of the  
> log files:
>
> ERROR au.com.jarrel.katya.proc.db.dao.CayenneDataContextInterceptor
> (CayenneDataContextInterceptor.java:49) - Caught exception during
> invocation, will try to roll back
> org.apache.cayenne.CayenneRuntimeException: [v.3.0M1 Jul 27 2007
> 23:05:47] Can't build a query for temporary id:
> <ObjectId:Notification, TEMP:0000034FCA0C0101>
> 	at org.apache.cayenne.query.ObjectIdQuery.createReplacementQuery 
> (ObjectIdQuery.java:120)
> 	at org.apache.cayenne.query.IndirectQuery.getReplacementQuery 
> (IndirectQuery.java:75)
> 	at org.apache.cayenne.query.IndirectQuery.route(IndirectQuery.java: 
> 58)
> 	at org.apache.cayenne.access.DataDomainQueryAction.runQuery 
> (DataDomainQueryAction.java:408)
> 	at org.apache.cayenne.access.DataDomainQueryAction.access$000 
> (DataDomainQueryAction.java:65)
> 	at org.apache.cayenne.access.DataDomainQueryAction$2.transform 
> (DataDomainQueryAction.java:389)
> 	at org.apache.cayenne.access.DataDomain.runInTransaction 
> (DataDomain.java:802)
> 	at  
> org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction( 
> DataDomainQueryAction.java:386)
> 	at  
> org.apache.cayenne.access.DataDomainQueryAction.interceptOIDQuery 
> (DataDomainQueryAction.java:159)
> 	at org.apache.cayenne.access.DataDomainQueryAction.execute 
> (DataDomainQueryAction.java:112)
> 	at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:722)
> 	at org.apache.cayenne.map.AshwoodEntitySorter.findReflexiveMaster 
> (AshwoodEntitySorter.java:309)
> 	at org.apache.cayenne.map.AshwoodEntitySorter.sortObjectsForEntity 
> (AshwoodEntitySorter.java:201)
> 	at  
> org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal 
> (DataDomainInsertBucket.java:86)
> 	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries 
> (DataDomainSyncBucket.java:75)
> 	at org.apache.cayenne.access.DataDomainFlushAction.preprocess 
> (DataDomainFlushAction.java:181)
> 	at org.apache.cayenne.access.DataDomainFlushAction.flush 
> (DataDomainFlushAction.java:133)
> 	at org.apache.cayenne.access.DataDomain.onSyncFlush 
> (DataDomain.java:786)
> 	at org.apache.cayenne.access.DataDomain$2.transform 
> (DataDomain.java:757)
> 	at org.apache.cayenne.access.DataDomain.runInTransaction 
> (DataDomain.java:812)
> 	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:754)
> 	at org.apache.cayenne.access.DataContext.flushToParent 
> (DataContext.java:1157)
> 	at org.apache.cayenne.access.DataContext.commitChanges 
> (DataContext.java:1062)
> 	at au.com.jarrel.katya.proc.db.dao.impl.BaseDaoImpl.commit 
> (BaseDaoImpl.java:89)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at  
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflectio 
> n(AopUtils.java:296)
> 	at  
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoi 
> npoint(ReflectiveMethodInvocation.java:177)
> 	at  
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
> (ReflectiveMethodInvocation.java:144)
> 	at  
> au.com.jarrel.katya.proc.db.dao.CayenneDataContextInterceptor.invoke 
> (CayenneDataContextInterceptor.java:46)
> 	at  
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
> (ReflectiveMethodInvocation.java:166)
> 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke 
> (JdkDynamicAopProxy.java:204)
> 	at $Proxy12.commit(Unknown Source)
> 	at  
> au.com.jarrel.katya.proc.mail.pipeline.command.NotificationSendingComm 
> and.sendAndSaveEmailNotification(NotificationSendingCommand.java:181)
> 	at  
> au.com.jarrel.katya.proc.mail.pipeline.command.NotificationSendingComm 
> and.sendNotification(NotificationSendingCommand.java:59)
> 	at  
> au.com.jarrel.katya.proc.mail.pipeline.command.NotificationSendingComm 
> and.sendNotifications(NotificationSendingCommand.java:53)
> 	at  
> au.com.jarrel.katya.proc.mail.pipeline.command.NotificationSendingComm 
> and.execute(NotificationSendingCommand.java:46)
> 	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java: 
> 190)
> 	at au.com.jarrel.katya.proc.mail.pipeline.SpringPipelineRunner.run 
> (SpringPipelineRunner.java:43)
> 	at au.com.jarrel.katya.james.mailet.PipelineProcessor.service 
> (PipelineProcessor.java:30)
> 	at org.apache.james.transport.LinearProcessor.service 
> (LinearProcessor.java:424)
> 	at org.apache.james.transport.JamesSpoolManager.process 
> (JamesSpoolManager.java:405)
> 	at org.apache.james.transport.JamesSpoolManager.run 
> (JamesSpoolManager.java:309)
> 	at java.lang.Thread.run(Thread.java:595)
>
>
> Hope this is of some value!
>
> Gary
>
> On 9/25/07, Gary Jarrel <garyjarrel@gmail.com> wrote:
>> I will reconfigure the app to use 3.0M1 tonight and post the stack  
>> trace,
>>
>> Sorry for delay!
>>
>> On 9/22/07, Andrus Adamchik <andrus@objectstyle.org> wrote:
>>> A few more questions.
>>>
>>> Could you provide a more complete stack trace (just include the
>>> entire Cayenne part of the stack), as I am wondering where in the
>>> Cayenne code the failing query is fired?
>>>
>>
>


Mime
View raw message