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...
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@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@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
magma@lists.squeakfoundation.org