[BUG]MaObjectFiler>>open

Chris Muller chris at funkyobjects.org
Tue Aug 15 19:59:24 UTC 2006


Hi Steve, following Squeak conventions, Magma will gracefully
disconnect sessions and close repositories left open when the image is
saved.  It then reopens those repositories and reconnects those
sessions upon restarting the image.  This process can take some time,
which is where you see the delay for user input.  If the repository is
not in the same place the error you saw will appear.

Disconnecting the sessions and closing the repository as you did and
then saving the image will cause the image to restart quickly in that
state, with them not opened and, therefore, no delay.

Perhaps a progress notifier ("reopening Magma repositories...") of some
kind would be useful; although I am reluctant to hard-code any sort of
UI from Magma.  Any ideas?

 - Chris

--- Steve Moffitt <stevia at citlink.net> wrote:

> Hi -- I started having a significant ( 20 sec ) delay after my image
> has opened til it even begins to respond to any user input. I was
> using 3.8-6665 as image and Unix 3-7-7 as VM. I tried using another
> vm and got this walkback. It appears that on startup it is trying to
> open the repository. Finishing the session  I did myMagmaSession
> disconnect; closeRepository. Is there some way to prevent this ?
> Used MagmaServerLoader17 in new image and it repeated this behaviour
> -- help.
> 
> thanks
> 
> Steve
> 
> 15 August 2006 9:44:41 am
> 
> VM: Mac OS - a SmalltalkImage
> Image: Squeak3.8 [latest update: #6665]
> 
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir Macintosh
> HD:Users:brendamoffitt:Desktop:Larry:Squeak:Squeak3.8
> Trusted Dir Macintosh
> HD:Users:brendamoffitt:Desktop:Larry:Squeak:Squeak3.8
> Untrusted Dir Macintosh
> HD:Users:brendamoffitt:Library:Preferences:Squeak:Internet:My Squeak
> 
> MaObjectFiler>>open
> 	Receiver: a MaObjectFiler
> 	Arguments and temporary variables:
> 
> 	Receiver's instance variables:
> 		directory: 	UnixFileDirectory on '/myRepository'
> 		file: 	nil
> 		preMadeObjectBuffer: 	a MaObjectBuffer
> 	oid : **invalid**
> 	classId : **invalid*...etc...
> 		filePositionIndex: 	nil
> 		usedByteArrays: 	#(a ByteArray(0) a ByteArray(0 0) a ByteArray(0 0
> 0) a ByteArra...etc...
> 		primitiveAttributeAddressesMap: 	a Dictionary('anchorOid'->43->64
> 'booleanFlags'...etc...
> 
> MaObjectFiler class>>open:
> 	Receiver: MaObjectFiler
> 	Arguments and temporary variables:
> 		aFileDirectory: 	UnixFileDirectory on '/myRepository'
> 	Receiver's instance variables:
> 		superclass: 	MaObject
> 		methodDict: 	a MethodDictionary(#anchorOid->a CompiledMethod (3055)
> #anchorOid:-...etc...
> 		format: 	142
> 		instanceVariables: 	#('directory' 'file' 'preMadeObjectBuffer'
> 'filePositionInde...etc...
> 		organization: 	('accessing' anchorOid classDefinitionsOid
> dataFileName definitio...etc...
> 		subclasses: 	nil
> 		name: 	#MaObjectFiler
> 		classPool: 	nil
> 		sharedPools: 	nil
> 		environment: 	a SystemDictionary(lots of globals)
> 		category: 	nil
> 
> MaObjectRepository>>open:
> 	Receiver: a MaObjectRepository
> 	Arguments and temporary variables:
> 		aFileDirectory: 	UnixFileDirectory on '/myRepository'
> 	Receiver's instance variables:
> 		transactionLog: 	a MaTransactionLog
> 		sessions: 	a Dictionary()
> 		filer: 	nil
> 		repositoryController: 	a MagmaRepositoryController
> 		largeCollectionManagers: 	a Dictionary()
> 		systemReadStrategy: 	nil
> 		nextOid: 	nil
> 		recoveryManager: 	nil
> 		commitGuard: 	a Monitor
> 		applyProcess: 	nil
> 		wantsToClose: 	nil
> 
> MaObjectRepository class>>open:controller:
> 	Receiver: MaObjectRepository
> 	Arguments and temporary variables:
> 		aFileDirectory: 	UnixFileDirectory on '/myRepository'
> 		aMaRepositoryController: 	a MagmaRepositoryController
> 	Receiver's instance variables:
> 		superclass: 	MaObject
> 		methodDict: 	a MethodDictionary(#abortTransactionFor:->a
> CompiledMethod (2379) #...etc...
> 		format: 	152
> 		instanceVariables: 	#('transactionLog' 'sessions' 'filer'
> 'repositoryController'...etc...
> 		organization: 	('client-requests' abortTransactionFor:
> fractionLoaded: getTrunkF...etc...
> 		subclasses: 	nil
> 		name: 	#MaObjectRepository
> 		classPool: 	a Dictionary(#RunningTestCases->false #SimulateOutage-
>  >false )
> 		sharedPools: 	nil
> 		environment: 	a SystemDictionary(lots of globals)
> 		category: 	nil
> 
> 
> --- The full stack ---
> MaObjectFiler>>open
> MaObjectFiler class>>open:
> MaObjectRepository>>open:
> MaObjectRepository class>>open:controller:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> MagmaRepositoryController>>privateOpen:
> [] in MagmaRepositoryController>>open {[self privateOpen: directory]}
> BlockContext>>on:do:
> MagmaRepositoryController>>open
> MagmaRepositoryController>>ensureOpen
> [] in MagmaRepositoryController class>>startUp: {[each ensureOpen]}
> BlockContext>>on:do:
> [] in MagmaRepositoryController class>>startUp: {[[each ensureOpen]
> on: MagmaNotification   do: [:noti |     Transcript cr;...]}
> BlockContext>>on:do:
> [] in MagmaRepositoryController class>>startUp: {[:each | [[each
> ensureOpen]   on: MagmaNotification   do: [:noti |     Trans...]}
> Set>>do:
> MagmaRepositoryController class>>startUp:
> MagmaSession class>>startUp:
> [] in SystemDictionary>>send:toClassesNamedIn:with: {[:name |
> class := self     at: name     ifAbsent: [].  class   ifNil:
> [remo...]}
> OrderedCollection>>do:
> SystemDictionary>>send:toClassesNamedIn:with:
> SystemDictionary>>processStartUpList:
> SmalltalkImage>>snapshot:andQuit:embedded:
> SmalltalkImage>>snapshot:andQuit:
> TheWorldMenu>>saveAndQuit
> TheWorldMenu>>doMenuItem:with:
> [] in MenuItemMorph>>invokeWithEvent: {[(selArgCount := selector
> numArgs) = 0   ifTrue: [target perform: selector] ...]}
> BlockContext>>ensure:
> CursorWithMask(Cursor)>>showWhile:
> MenuItemMorph>>invokeWithEvent:
> MenuItemMorph>>mouseUp:
> MenuItemMorph>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> MenuItemMorph(Morph)>>handleEvent:
> MorphicEventDispatcher>>dispatchDefault:with:
> ....etc...
> 
> _______________________________________________
> Magma mailing list
> Magma at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/magma
> 
> 
> 



More information about the Magma mailing list