Hi all, I'm looking for more information concerning this error. Maybe a course of remedy? (I've not tried to isolate yet in the hope of a better understanding of the problem). Context: I did this process over two MagmaCollection's before succesfully. The process re-index an entire MagmaCollection, using a temporary magma collection for that purpose. The error happened when committing indexes to the new (temporary) magma collection. All the process uses a MagmaSession locally connected.
The code looks like this:
| collection |
self session begin. collection:= self root at: self tempKey put: MagmaCollection new. self indexes do:[:each | collection addIndex: each ]. self session commit
And the stack obtained with the trick of my previous e-mail:
16 June 2009 2:51:36 am
VM: Win32 - a SmalltalkImage Image: Squeak3.9 [latest update: #7067]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir D:\OpusApp Trusted Dir D:\OpusApp\compu Untrusted Dir C:\Documents and Settings\compu\Mis documentos\My Squeak
MagmaSession>>signalExceptionLike: Receiver: a MagmaSession D:\OpusApp\Magma Arguments and temporary variables: anException: MagmaInvalidOid: 1623575456 is not a valid oid. signalableError: MagmaInvalidOid: 1623575456 is not a valid oid. Receiver's instance variables: id: an UUID('2caca4db-5f85-a546-a057-f7978a775e9c') user: a MagmaUser id = Opus serializer: a MaObjectSerializer transaction: a MaTransaction readStrategy: a MaReadStrategy definition: a MagmaRepositoryDefinition preferences: a MagmaPreferences anchor: nil transactionLevel: 1 strongReferences: an OrderedCollection() cache: a Dictionary() guard: a Mutex statistics: a MagmaSessionStatistics primaryLink: a MaLocalServerLink secondaryLink: a MaLocalServerLink allowFailover: true oidCount: 12879073 lastClean: 26265480 requiredProgress: 0
[] in MagmaSession>>submit:to: {[aMagmaRepositoryRequest requiresConnection ifTrue: [self ensureConnected]...]} Arguments and temporary variables: aMagmaRepositoryRequest: a MaReadRequest aMaServerLink: a MaLocalServerLink didTry: false link: a MaLocalServerLink result: MagmaInvalidOid: 1623575456 is not a valid oid. err: nil node: nil
[] in BlockContext>>maOn:do:on:do: {[self value]} Arguments and temporary variables: exc1: MagmaSessionLost block1: [] in MagmaSession>>submit:to: {[:err | MagmaNotification signal: 'Mag...etc... exc2: NetworkError block2: [] in MagmaSession>>submit:to: {[:err | aMagmaRepositoryRequest isConn...etc...
BlockContext>>on:do: Receiver: [] in BlockContext>>maOn:do:on:do: {[self value]} Arguments and temporary variables: exception: MagmaSessionLost handlerAction: [] in MagmaSession>>submit:to: {[:err | MagmaNotification signa...etc... handlerActive: true Receiver's instance variables: sender: BlockContext>>on:do: pc: 29 stackp: 0 nargs: 0 startpc: 27 home: BlockContext>>maOn:do:on:do:
--- The full stack --- MagmaSession>>signalExceptionLike: [] in MagmaSession>>submit:to: {[aMagmaRepositoryRequest requiresConnection ifTrue: [self ensureConnected]...]} [] in BlockContext>>maOn:do:on:do: {[self value]} BlockContext>>on:do: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] in BlockContext>>maOn:do:on:do: {[[self value] on: exc1 do: block1]} BlockContext>>on:do: BlockContext>>maOn:do:on:do: [] in MagmaSession>>submit:to: {[didTry := false. link := aMaServerLink. [aMagmaRepositoryRequest requires...]} BlockContext>>ensure: CursorWithMask(Cursor)>>showWhile: [] in MagmaSession>>submit:to: {[aMagmaRepositoryRequest waitCursor showWhile: [didTry := false. link :...]} Mutex>>critical: MagmaSession>>submit:to: [] in MagmaSession>>secondarySubmit: {[self submit: aMagmaRepositoryRequest to: secondaryLink]} [] in BlockContext>>maOn:do:on:do: {[self value]} BlockContext>>on:do: [] in BlockContext>>maOn:do:on:do: {[[self value] on: exc1 do: block1]} BlockContext>>on:do: BlockContext>>maOn:do:on:do: MagmaSession>>secondarySubmit: MagmaSession>>read: [] in MagmaSession>>realObjectFor: {[result := self read: oid. self statistics clientSideProxyMaterializationTi...]} Mutex>>critical: MagmaSession>>realObjectFor: MagmaMutatingProxy>>mutant MagmaMutatingProxy(MaMutatingProxy)>>mutateAndSend: [] in MagmaMutatingProxy(MaMutatingProxy)>>doesNotUnderstand: #select: {[self maIsMutatingProxy ifTrue: [self mutateAndSend: aMessage] ifFalse: ...]} BlockContext>>on:do: MagmaMutatingProxy(MaMutatingProxy)>>doesNotUnderstand: #select: RecordEventManager>>recordEventsOfKind: SerialManifestation>>issnInternationalRecord SerialManifestation>>issnInternationalRecordDateString MaSearchStringIndex(MagmaCollectionIndex)>>indexObjectFor: MaSearchStringIndex>>canIndex: MaSearchStringIndex(MagmaCollectionIndex)>>validateCanIndex: MaSearchStringIndex(MagmaCollectionIndex)>>indexHashesFor: [] in MagmaCollection>>buildIndexes:ignoring: {[:eachIndex | changes add: oid at: (eachIndex indexHashesFor: eachObject...]} ...etc...
Best regards
Hernan
The code looks like this:
| collection |
self session begin. collection:= self root at: self tempKey put: MagmaCollection new. self indexes do:[:each | collection addIndex: each ]. self session commit
You're sharing the index objects themselves between the two collections. Disaster! Don't do that. Adding a "each copy" should be fine..
- Chris
That solved it. Thanks
Hernán
2009/6/17 Chris Muller asqueaker@gmail.com
The code looks like this:
| collection |
self session begin. collection:= self root at: self tempKey put: MagmaCollection new. self indexes do:[:each | collection addIndex: each ]. self session commit
You're sharing the index objects themselves between the two collections. Disaster! Don't do that. Adding a "each copy" should be fine..
- Chris
magma@lists.squeakfoundation.org