On Jun 12, 2013, at 10:32 AM, Chuck Hill <ch...@global-village.net> wrote:

> 
> On 2013-06-11, at 2:36 PM, Tim Worman wrote:
> 
>> OK, I have successfully committed a record without an exception but it came 
>> at a big price - so I'm gonna do more testing. So, for:
>> 
>> entity PERSON
>> partial entity EMPLOYEE
>> 
>> I try a single change -  setting shouldSync=TRUE
>> 
>> If I remove the partial entity framework from the build path I can save this 
>> change cleanly. When the partial entity framework is in the build path, it 
>> considers all of the partial entities attributes "locked." They are not in 
>> their model though.
> 
> I think that David Aspinall was likely one of the last to work on partials.  
> He is away this week but may be able to shed some light next week.  Did a 
> Wonder update cause this?  If so, you could also look for recent-ish changes 
> to this in Wonder.
> 
> 
> Chuck

Thanks for the appending to the subject - I was just about to do that. Yeah, I 
am on integration so it could be that there's a new problem. I need to look at 
the commits.

I can tell you what I've done to try to work around it. In 
ERXPartialInitializer.initializePartialEntities(EOModelGroup):

I added some code to explicitly setAttributesUsedForLocking(NSArray) with a Set 
comprised of locking attributes in the base and partial entity. It doesn't work 
- in the app right before I save changes, I log out the locking attributes and 
it still includes a bunch of stuff from the partial entity that aren't set to 
lock in the model. In a quick scan I can't find any code (other than what I 
added above) that explicitly sets the locking attributes in the base entity.

Tim

> 
>> All the partial's unique attributes show up in the WHERE clause of the 
>> UPDATE statement. One of these is obviously causing the lock error. Example:
>> 
>> UPDATE PERSON SET should_sync = ? WHERE (person_id = ? AND modify_date = ? 
>> AND comp_time_bal = ? AND emergency_info = ? AND emp_rel_code = ? AND 
>> norm_vac_max is NULL AND out_of_office = ? AND pto_hrs_bal = ? AND 
>> sick_lv_hrs_bal = ? AND start_begin_date is NULL AND start_end_date is NULL 
>> AND start_percent = ? AND vac_hrs_balance = ? AND work_addr_city is NULL AND 
>> work_addr_line1 = ? AND work_addr_line2 is NULL AND work_addr_state is NULL 
>> AND work_addr_zip is NULL)" withBindings: 1:true(shouldSync), 
>> 2:12505(personId), 3:2012-02-14 14:30:15(modifyDate), 4:0.0(compTimeBal), 
>> 5:""(emergencyInfo), 6:""(empRelCode), 7:false(outOfOffice), 
>> 8:0.0(ptoHrsBal), 9:0.0(sickLvHrsBal), 10:0(startPercent), 
>> 11:0.0(vacHrsBalance), 12:""(workAddrLine1)>
>> 
>> Without the partial entity in the build path, the update statement looks 
>> like:
>> 
>> UPDATE PERSON SET should_sync = ? WHERE (person_id = ? AND modify_date = ?)" 
>> withBindings: 1:true(shouldSync), 2:12505(personId), 3:2012-02-14 
>> 14:30:15(modifyDate)>
>> 
>> Which is completely what I'd expect since I only lock on person_id and 
>> modify_date. My assumption is something is wrong in my framework - it 
>> obviously WAS working. I definitely want to rule out a broader problem.
>> 
>> Thanks,
>> 
>> Tim
>> 
>> On Jun 11, 2013, at 1:19 PM, Tim Worman <li...@thetimmy.com> wrote:
>> 
>>> Do you mean in your prototype models or in your entity models? I have only 
>>> ever locked on primary key and modifyDate. I know I mentioned in a previous 
>>> thread that this has always worked well.
>>> 
>>> The FrontBase prototype model only locks on 'id' and 'boolean' attributes. 
>>> The OpenBase attribute model locks every attribute type almost. I'm really 
>>> lost as to what is going on. So, the question is, how can an EO I just 
>>> fetched think it has changed when it has not?
>>> 
>>> Tim
>>> 
>>> On Jun 11, 2013, at 9:54 AM, Chuck Hill <ch...@global-village.net> wrote:
>>> 
>>>> In my models, most attributes are locked.
>>>> 
>>>> Chuck
>>>> 
>>>> 
>>>> On 2013-06-11, at 9:32 AM, Tim Worman wrote:
>>>> 
>>>>> 'Locked' is definitely not enabled for those attributes in the model - or 
>>>>> in partial entity that is built on that entity.
>>>>> 
>>>>> This is the first time I've ever examined the locking in 
>>>>> EOJDBCOpenBasePrototypes. They do look ODD to me. I am using Wonder -> 
>>>>> integration. The MySQL and Oracle prototypes have a ton of locked 
>>>>> attributes as well.
>>>>> 
>>>>> <PastedGraphic-1.png>
>>>>> 
>>>>> On Jun 11, 2013, at 8:38 AM, Chuck Hill <ch...@global-village.net> wrote:
>>>>> 
>>>>>> No, I was just trying to think of anything that might alter the WHERE 
>>>>>> from what you would expect looking at the entity in the EOModel.  
>>>>>> 
>>>>>> Have you double checked that locked did not get turned on these 
>>>>>> attributes in the model?  Are you using prototypes?  Did locking change 
>>>>>> on the prototypes?
>>>>>> 
>>>>>> 
>>>>>> Chuck
>>>>>> 
>>>>>> 
>>>>>> On 2013-06-11, at 8:18 AM, Tim Worman wrote:
>>>>>> 
>>>>>>> Hi Chuck et al:
>>>>>>> 
>>>>>>> I wasn't sure if maybe I was missing something in your question - so, 
>>>>>>> is this locking behavior I should expect when using partials? I don't 
>>>>>>> recall seeing an update statement like that in the past.
>>>>>>> 
>>>>>>> Tim
>>>>>>> 
>>>>>>> On Jun 10, 2013, at 3:38 PM, Tim Worman <li...@thetimmy.com> wrote:
>>>>>>> 
>>>>>>>> Thanks Chuck.
>>>>>>>> 
>>>>>>>> I am using ERXPartials. I've done a couple of deployments including 
>>>>>>>> partial support and it had been working well. This problem just 
>>>>>>>> started recently - really seemed to come out of the blue. The 
>>>>>>>> exception is reproducible in development so there is no other app 
>>>>>>>> touching the database.
>>>>>>>> 
>>>>>>>> Tim
>>>>>>>> UCLA GSE&IS
>>>>>>>> 
>>>>>>>> On Jun 10, 2013, at 3:35 PM, Chuck Hill <ch...@global-village.net> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Are you using inheritance or partials?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 2013-06-10, at 3:33 PM, Tim Worman wrote:
>>>>>>>>> 
>>>>>>>>>> I am suddenly getting strange optimistic locking failures when when 
>>>>>>>>>> updating a row on ec.saveChanges(). At least it seems sudden to me 
>>>>>>>>>> because I can't introspect well enough to see where I caused it. :-) 
>>>>>>>>>> I'm seeing this.
>>>>>>>>>> 
>>>>>>>>>> Jun 10 15:14:02 eTimesheet[55555] INFO  
>>>>>>>>>> er.transaction.adaptor.Exceptions  - Database Exception occured: 
>>>>>>>>>> com.webobjects.eoaccess.EOGeneralAdaptorException: 
>>>>>>>>>> updateValuesInRowDescribedByQualifier -- 
>>>>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel method failed to update row 
>>>>>>>>>> in database.
>>>>>>>>>> 
>>>>>>>>>> So, I logged at the  SQL and capture the userInfo() on the 
>>>>>>>>>> exception. What really caught my eye is the update statement that 
>>>>>>>>>> was produced. The WHERE statement makes it seem like is locking on 
>>>>>>>>>> every attribute in the PERSON entity. My model definitely does not 
>>>>>>>>>> reflect that should be happening.
>>>>>>>>>> 
>>>>>>>>>> UPDATE PERSON SET campus_mail_code = ?, should_sync = ?, 
>>>>>>>>>> person_first_name = ?, start_end_date = ?, norm_vac_max = ?, 
>>>>>>>>>> student_status = ?, start_begin_date = ?, campus_phone = ?, 
>>>>>>>>>> home_dept_code = ?, person_middle_name = ?, email_address_other = ?, 
>>>>>>>>>> emp_status = ?, work_addr_line2 = ?, emp_rel_code = ? WHERE 
>>>>>>>>>> (person_id = ? AND modify_date = ? AND comp_time_bal = ? AND 
>>>>>>>>>> emergency_info = ? AND emp_rel_code = ? AND norm_vac_max is NULL AND 
>>>>>>>>>> out_of_office = ? AND pto_hrs_bal = ? AND sick_lv_hrs_bal = ? AND 
>>>>>>>>>> start_begin_date is NULL AND start_end_date is NULL AND 
>>>>>>>>>> start_percent = ? AND vac_hrs_balance = ? AND work_addr_city is NULL 
>>>>>>>>>> AND work_addr_line1 = ? AND work_addr_line2 is NULL AND 
>>>>>>>>>> work_addr_state is NULL AND work_addr_zip is NULL)
>>>>>>>>>> 
>>>>>>>>>> Can anyone help explain the abnormal growth of my WHERE clause?
>>>>>>>>>> 
>>>>>>>>>> Tim
>>>>>>>>>> UCLA GSE&IS
>>>>>>>>>> ________________________________


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to