Ken,

On 26. 2. 2015, at 5:14, Ken Anderson <kenli...@anderhome.com> wrote:

> First, why are you expecting the object to be deleted when you just remove it 
> from the relationship?

For it is an owning relationship (and it does work all right in the first 
case). I might be missing some important point here, but I've always thought 
that is sort of the very purpose of owning relationships?

> Second, have you removed calls to lock() and unlock(), or are you not calling 
> them?

I am not. Again I might be missing something, but I understand ERXEC does 
autolock -- even in a background thread -- as needed, albeit possibly not in 
the most efficient manner (e.g., 
http://lists.apple.com/archives/Webobjects-dev/2007/May/msg00578.html).

(Besides frankly, I don't really see the need to lock an EC at all, given the 
EC is created, used and released in one separate thread and never shared anyhow 
with other threads; but then, superfluous locking does not harm anything but 
efficiency, and efficiency is not paramount with background threads.)

Thanks and all the best,
OC

>> On Feb 25, 2015, at 7:07 PM, OC <o...@ocs.cz> wrote:
>> 
>> Hello there,
>> 
>> I've bumped into rather a weird (at least to me) behaviour. Is this normal 
>> and am I just overlooking something by expecting it to work?
>> 
>> I've noticed lately that my background tasks (each of which uses its own EC) 
>> stopped to delete old objects. Pursuing the culprit, I have found that it 
>> began when I (by Ramsey's advice) stopped moving objects betwixt those ECs 
>> using localInstanceIn, replacing it by explicit globalID-based creation 
>> (only, by Chuck's advice, I am using faultForGlobalID instead of 
>> ERXEOGlobalIDUtilities.fetchObjectWithGlobalID).
>> 
>> I am able to repeat the problem e.g., this way:
>> 
>> === launched very early in Application, no session/component created yet ===
>> def ec=ERXEC.newEditingContext()
>> def auction=EOUtilities.objectWithPrimaryKeyValue(ec,'DBAuction',1000003)
>> def records=auction.importedRecords()
>> println "owning rel: 
>> ${auction.ownsDestinationObjectsForRelationshipKey('importedRecords')} 
>> inverse '${auction.inverseForRelationshipKey('importedRecords')}' 
>> #$records.count" // just to make sure it's all right
>> def lr=records.lastObject()
>> println "-- in 'default' EC removing $lr from $auction..."
>> lr.removeObjectFromBothSidesOfRelationshipWithKey(auction,'auction')
>> auction.editingContext().saveChanges() // my delegate logs out all adaptor 
>> ops: this does delete all right
>> 
>> def ec2=ERXEC.newEditingContext(new EOObjectStoreCoordinator())
>> auction=ec2.faultForGlobalID(auction.permanentGlobalID(),ec2) // this is how 
>> I 'move' objects to background tasks...
>> lr=ec2.faultForGlobalID(records.lastObject().permanentGlobalID(),ec2) // ... 
>> is it indeed the right way?
>> println "-- in EC in extra OSC removing $lr from $auction..."
>> lr.removeObjectFromBothSidesOfRelationshipWithKey(auction,'auction')
>> auction.editingContext().saveChanges() // for this one DOES NOT delete, see 
>> the logs below!
>> ===
>> 
>> This code -- along with the logs in 
>> databaseContextWillPerformAdaptorOperations -- prints out this:
>> 
>> ===
>> owning rel: true inverse 'auction' #2
>> -- in 'default' EC removing <DBRecord@1532707037 PK:1004656 /EC:829232957> 
>> from <DBAuction@357286753 PK:1000003 /EC:829232957>...
>> - 1: DELETE on 'DBRecord' (uid = 1004656)
>> -- in EC in extra OSC removing <DBRecord@2038388710 PK:1004657 
>> /EC:489384291> from <DBAuction@325329592 PK:1000003 /EC:489384291>...
>> - 1: UPDATE on 'DBRecord' (uid = 1004657) 
>> 1{auction_id:<com.webobjects.foundation.NSKeyValueCoding$Null>}
>> ===
>> 
>> Does it make any sense?
>> 
>> Note: if I replace the 'lr.removeObjectFromBothSidesOfRelationshipWithKey' 
>> by ec2.deleteObject(lr), it works all right, deleting the record in both 
>> cases.
>> 
>> Thanks,
>> OC
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> 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/kenlists%40anderhome.com
>> 
>> This email sent to kenli...@anderhome.com
> 


 _______________________________________________
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