On 2015-02-25, 4:07 PM, "OC" 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?

You?  A weird problem?  I am SHOCKED!  :-)


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,

Why was that?


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?

It is already removed, so it does not remove it again?

That is all that I can think of.

Chuck



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<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com

This email sent to ch...@gevityinc.com<mailto:ch...@gevityinc.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