cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Some parts of FK are missing in snapshot, join:
Date Tue, 11 Apr 2006 09:20:08 GMT
Mike,

I suspect the unpredictable nature of the error is due to incorrect  
dependency sorting during key generation (this is just a guess, but  
it seems likely). If possible, could you open a Jira issue with a  
DataMap file attached.

Also do you know if this happened with 1.1 or early 1.2 milestones (<  
M10), i.e. before we've changed the commit code?

Andrus


On Apr 11, 2006, at 6:02 AM, Mike Kienenberger wrote:

> Here's a simpler example (from after changing the to-many value).
> This was the second set of objects converted -- the first set
> converted fine.   This data set also converted fine in the previous
> run.  This example was simple enough that I didn't edit any of the
> output below.
>
> There is only WOMS_WORK which inherits from STATUSABLE_WORK which
> inherits from WORK, each of which exist only once.   It's the
> relationship between WOMS_WORK and STATUSABLE_WORK which is involved
> in the error.
>
> Leftover new object: {<ObjectId:WomsWork, TEMP:000005AB83030161>; new;
> [isUrd=>null; statusableWork=>{<ObjectId:StatusableWork,
> TEMP:000006AB83030161>}; isPoles=>null; feeList=>(..); parcel=>?;
> doesBuildingExist=>null; isYardPole=>null; bidPrice=>0;
> cityPermitReceivedDate=>null; isCityInspectionRequired=>null;
> laborEstimate=>0; numberOfMeters=>null; materialsEstimate=>0]}
> Leftover new object: {<ObjectId:Fee, TEMP:000008AB891D0161>; new;
> [feePaymentReceiptList=>(..); womsWorkList=>(..);
> requiredDepositAmountDue=>null; amountDue=>null]}
> Leftover new object: {<ObjectId:FeePaymentReceipt,
> TEMP:000009AB891D0161>; new; [amountPaid=>0; fee=>{<ObjectId:Fee,
> TEMP:000008AB891D0161>}; receiptNumber=>null; datePaid=>null]}
> Leftover new object: {<ObjectId:Work, TEMP:000007AB83030161>; new;
> [workType=>{<ObjectId:WorkType, ID=1042>};
> statusableWorkList=>{<ObjectId:StatusableWork,
> TEMP:000006AB83030161>}; workOptionList=>?; objType=>ENG;
> userHoursList=>?]}
> Leftover new object: {<ObjectId:Fee, TEMP:00000AAB891D0161>; new;
> [feePaymentReceiptList=>?; womsWorkList=>(..);
> requiredDepositAmountDue=>0; amountDue=>null]}
> Leftover new object: {<ObjectId:StatusableWork,
> TEMP:000006AB83030161>; new; [expectedCompletionDate=>null;
> work=>{<ObjectId:Work, TEMP:000007AB83030161>};
> requestedCompDate=>null; workAssigneeList=>?;
> problemDescription=>null; rankList=>?; attachmentList=>?;
> solutionDescription=>null; externalSystemKey=>0;
> statusHistoryList=>?]}
> Leftover modified object: {<ObjectId:WorkType, ID=1042>; modified;
> [isAssignable=>Y; parentWorkType=>{<ObjectId:WorkType, ID=1000>};
> workOptionTypeList=>?; childrenWorkTypeList=>?; description=>null;
> isActive=>Y; statusList=>?; objType=>null; workList=>(..); name=>T&D
> Work Order]}
> --- will run 2 queries.
> --- transaction started.
> SELECT NEXT_ID FROM AUTO_PK_SUPPORT WHERE TABLE_NAME =  
> 'FEE_PAYMENT_RECEIPT'
> === returned 1 row. - took 0 ms.
> UPDATE AUTO_PK_SUPPORT SET NEXT_ID = NEXT_ID + 20 WHERE TABLE_NAME =
> 'FEE_PAYMENT_RECEIPT'
> === updated 1 row.
> org.objectstyle.cayenne.CayenneRuntimeException: [v.1.2-dev April 10
> 2006] Some parts of FK are missing in snapshot, join:
> org.objectstyle.cayenne.map.DbJoin@1786a3c 
> [source=WOMS_WORK_ID,target=ID]
> 	at  
> org.objectstyle.cayenne.access.DataNodePKGenerationAction.appendPkFrom 
> MasterRelationships(DataNodePKGenerationAction.java:250)
> 	at  
> org.objectstyle.cayenne.access.DataNodePKGenerationAction.createPermId 
> sForObjEntity(DataNodePKGenerationAction.java:143)
> 	at  
> org.objectstyle.cayenne.access.DataNodeInsertBucket.createPrimaryKey 
> (DataNodeInsertBucket.java:97)
> 	at org.objectstyle.cayenne.access.DataNodeFlushAction.createPK 
> (DataNodeFlushAction.java:106)
> 	at org.objectstyle.cayenne.access.DataDomainFlushAction.preprocess 
> (DataDomainFlushAction.java:217)
> 	at org.objectstyle.cayenne.access.DataDomainFlushAction.flush 
> (DataDomainFlushAction.java:148)
> 	at org.objectstyle.cayenne.access.DataDomain.onSyncFlush 
> (DataDomain.java:778)
> 	at org.objectstyle.cayenne.access.DataDomain$2.transform 
> (DataDomain.java:749)
> 	at org.objectstyle.cayenne.access.DataDomain.runInTransaction 
> (DataDomain.java:804)
> 	at org.objectstyle.cayenne.access.DataDomain.onSync 
> (DataDomain.java:746)
> 	at org.objectstyle.cayenne.access.DataContext.flushToParent 
> (DataContext.java:1217)
> 	at org.objectstyle.cayenne.access.DataContext.commitChanges 
> (DataContext.java:1121)
>
>
>
> On 4/10/06, Mike Kienenberger <mkienenb@gmail.com> wrote:
>> What would cause the following exception (latest cvs checkout)?
>>
>> It doesn't seem to happen deterministically.   I'm converting data
>> records from one format to another, reading a set of records in, and
>> then creating new set of records to write out.
>>
>> The first record always seems to work.   Then I always get this error
>> soon afterward.  Sometimes on the second set of records, sometimes a
>> few later.   On this particular run, I got it 5 record sets into the
>> conversion.
>>
>> I dumped all of the uncommitted objects in the datacontext before
>> doing the saveChanges, and that's what the "Leftover object" messages
>> are showing.
>>
>> I've edited the attributes, hopefully leaving only the relevent ones.
>>
>> To the best of my knowledge, the Join in question is the relationship
>> from <ObjectId:WomsWork, TEMP:00004C96C5030161> to
>> <ObjectId:StatusableWork, TEMP:00004D96C5030161>, both of which exist
>> and are in state new.
>>
>> This relationship is in my DataMap as
>>
>>         <db-relationship name="statusableWork" source="WOMS_WORK"
>> target="STATUSABLE_WORK" toMany="false">
>>                 <db-attribute-pair source="WOMS_WORK_ID"  
>> target="ID"/>
>>         </db-relationship>
>>
>> The reverse relationship is in another DataMap as
>>
>>         <db-relationship name="womsWork" source="STATUSABLE_WORK"
>> target="WOMS_WORK" toDependentPK="true" toMany="true">
>>                 <db-attribute-pair source="ID"  
>> target="WOMS_WORK_ID"/>
>>         </db-relationship>
>>
>> And the id for WOMS_WORK is dependent on the ID for STATUSABLE work
>> (which is in turn dependent upon the ID for WORK -- vertical
>> inheritance)
>>
>> [I changed toMany from true to false in the second db-relationship as
>> that was an error I just noticed, but it hasn't made any difference].
>>
>> Leftover new object: {<ObjectId:Contact, TEMP:00005496CDEC0161>; new;
>> Leftover new object: {<ObjectId:StatusableWork,
>> TEMP:00005D96CEF60161>; new; [parentWork=>{<ObjectId:Work,
>> TEMP:00004E96C5030161>}; work=>{<ObjectId:Work,
>> TEMP:00005E96CEF60161>}; ]}
>> Leftover new object: {<ObjectId:Work, TEMP:00004E96C5030161>; new;
>> [workType=>{<ObjectId:WorkType, ID=1042>};
>> statusableWorkList=>{<ObjectId:StatusableWork,
>> TEMP:00004D96C5030161>}; ]}
>> Leftover new object: {<ObjectId:StatusableWork,
>> TEMP:00004D96C5030161>; new; [work=>{<ObjectId:Work,
>> TEMP:00004E96C5030161>}; ]}
>> Leftover new object: {<ObjectId:Fee, TEMP:00005296CAEF0161>; new;
>> Leftover new object: {<ObjectId:ContactName, TEMP: 
>> 00005396CDEC0161>; new;
>> Leftover new object: {<ObjectId:Work, TEMP:00005B96CEF60161>; new;
>> [workType=>{<ObjectId:WorkType, ID=1056>};
>> statusableWorkList=>{<ObjectId:StatusableWork,
>> TEMP:00005A96CEF60161>}; ]}
>> Leftover new object: {<ObjectId:StatusableWork,
>> TEMP:00005A96CEF60161>; new; [parentWork=>{<ObjectId:Work,
>> TEMP:00004E96C5030161>}; work=>{<ObjectId:Work,
>> TEMP:00005B96CEF60161>}; ]}
>> Leftover new object: {<ObjectId:FeePaymentReceipt, TEMP: 
>> 00005196CAEF0161>; new;
>> Leftover new object: {<ObjectId:Address, TEMP:00005596CE0C0161>; new;
>> Leftover new object: {<ObjectId:Work, TEMP:00005E96CEF60161>; new;
>> [statusableWorkList=>{<ObjectId:StatusableWork,
>> TEMP:00005D96CEF60161>}; ]}
>> Leftover new object: {<ObjectId:WomsWork, TEMP:00004C96C5030161>;  
>> new;
>> [statusableWork=>{<ObjectId:StatusableWork, TEMP:00004D96C5030161>};
>> ]}
>> Leftover new object: {<ObjectId:StatusHistory, TEMP: 
>> 00004F96C5030161>; new;
>> Leftover new object: {<ObjectId:StatusableWork,
>> TEMP:00005896CE1B0161>; new; [parentWork=>{<ObjectId:Work,
>> TEMP:00004E96C5030161>}; work=>{<ObjectId:Work,
>> TEMP:00005996CE1B0161>}; ]}
>> Leftover new object: {<ObjectId:Phone, TEMP:00005796CE1B0161>; new;
>> Leftover new object: {<ObjectId:WorkAssignee, TEMP:00005C96CEF60161>;
>> new; [statusableWork=>{<ObjectId:StatusableWork,
>> TEMP:00005A96CEF60161>}; seq=>1; role=>{<ObjectId:SecRole,
>> ID=20527>}]}
>> Leftover new object: {<ObjectId:Fee, TEMP:00005096CAEF0161>; new;
>> Leftover new object: {<ObjectId:WorkAssignee, TEMP:00005F96CEF60161>;
>> new; [statusableWork=>{<ObjectId:StatusableWork,
>> TEMP:00005D96CEF60161>}; seq=>1; role=>{<ObjectId:SecRole,
>> ID=21466>}]}
>> Leftover new object: {<ObjectId:Work, TEMP:00005996CE1B0161>; new;
>> [statusableWorkList=>{<ObjectId:StatusableWork,
>> TEMP:00005896CE1B0161>}; ]}
>> Leftover new object: {<ObjectId:Address, TEMP:00005696CE1B0161>; new;
>> Leftover modified object: {<ObjectId:WorkType, ID=1042>; modified;
>> Leftover modified object: {<ObjectId:StateProvince,
>> STATE_PROVINCE_ID=1>; modified;
>> Leftover modified object: {<ObjectId:WorkType, ID=1053>; modified;
>> Leftover modified object: {<ObjectId:WorkType, ID=1057>; modified;
>> Leftover modified object: {<ObjectId:Status, ID=112>; modified;
>> Leftover modified object: {<ObjectId:WorkType, ID=1056>; modified;
>>
>> org.objectstyle.cayenne.CayenneRuntimeException: [v.1.2-dev April 10
>> 2006] Some parts of FK are missing in snapshot, join:
>> org.objectstyle.cayenne.map.DbJoin@ec898a 
>> [source=WOMS_WORK_ID,target=ID]
>>         at  
>> org.objectstyle.cayenne.access.DataNodePKGenerationAction.appendPkFro 
>> mMasterRelationships(DataNodePKGenerationAction.java:250)
>>         at  
>> org.objectstyle.cayenne.access.DataNodePKGenerationAction.createPermI 
>> dsForObjEntity(DataNodePKGenerationAction.java:143)
>>         at  
>> org.objectstyle.cayenne.access.DataNodeInsertBucket.createPrimaryKey( 
>> DataNodeInsertBucket.java:97)
>>         at  
>> org.objectstyle.cayenne.access.DataNodeFlushAction.createPK 
>> (DataNodeFlushAction.java:106)
>>         at  
>> org.objectstyle.cayenne.access.DataDomainFlushAction.preprocess 
>> (DataDomainFlushAction.java:217)
>>         at  
>> org.objectstyle.cayenne.access.DataDomainFlushAction.flush 
>> (DataDomainFlushAction.java:148)
>>         at org.objectstyle.cayenne.access.DataDomain.onSyncFlush 
>> (DataDomain.java:778)
>>         at org.objectstyle.cayenne.access.DataDomain$2.transform 
>> (DataDomain.java:749)
>>         at  
>> org.objectstyle.cayenne.access.DataDomain.runInTransaction 
>> (DataDomain.java:804)
>>         at org.objectstyle.cayenne.access.DataDomain.onSync 
>> (DataDomain.java:746)
>>         at org.objectstyle.cayenne.access.DataContext.flushToParent 
>> (DataContext.java:1217)
>>         at org.objectstyle.cayenne.access.DataContext.commitChanges 
>> (DataContext.java:1121)
>>
>


Mime
View raw message