I was trying out magma on Pharo. I'm using magma r43final on Pharo1.0rc1 Latest update: #10493 on Windows Vista 64 bit.
In order for the magma client wanting to connect to the server i had to adapt�
NetNameResolver>>useOldNetwork
� ^true
It worked till i tried the new high availability of magma. If i tried with a node to connect to a primary server i always got following error on the secondary node: MagmaSession>>signalExceptionLike with as message: 'a primitive has failed'. After some debugging i figured out that the it in fact was the primary server which sent to the secondary an Error object with message text: 'a primitive has failed'.
in the primary server log:�
MaLocalRequestServer(MaRequestServer)>>processRequest:
� Receiver: a MaLocalRequestServer�
� Arguments and temporary variables:�
� �aMaClientServerRequest: a MaCommitRequest�
� �answer: Error: a primitive has failed
� Receiver's instance variables:�
� �console: a MaRequestServerConsole�
� �processor: a MagmaRepositoryController�
Inspired by some issues mentioned @ google code, I tried to evaluate�
NetNameResolver localHostAddress
on the primary server image. That worked, however trying to print that resulted in 'a primitive has failed'.
Even after the NetNameResolver initializeNetwork suggestions I found.
error:
NetNameResolver class(Object)>>error:
Receiver: NetNameResolver
Arguments and temporary variables:
aString: 'a primitive has failed'
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary()
format: 2
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #NetNameResolver
classPool: a Dictionary(#DefaultHostName->'' #HaveNetwork->true #ResolverBusy->...etc...
sharedPools: nil
environment: Smalltalk
category: #'Network-Kernel'
traitComposition: nil
localSelectors: nil
NetNameResolver class(Object)>>primitiveFailed
Receiver: NetNameResolver
Arguments and temporary variables:
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary()
format: 2
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #NetNameResolver
classPool: a Dictionary(#DefaultHostName->'' #HaveNetwork->true #ResolverBusy->...etc...
sharedPools: nil
environment: Smalltalk
category: #'Network-Kernel'
traitComposition: nil
localSelectors: nil
NetNameResolver class>>primGetNameInfo:flags:
Receiver: NetNameResolver
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary()
format: 2
instanceVariables: nil
organization: ('as yet unclassified')
subclasses: nil
name: #NetNameResolver
classPool: a Dictionary(#DefaultHostName->'' #HaveNetwork->true #ResolverBusy->...etc...
sharedPools: nil
environment: Smalltalk
category: #'Network-Kernel'
traitComposition: nil
localSelectors: nil
SocketAddress>>hostNumber
Receiver: <<error during printing>>
Arguments and temporary variables:
size: nil
name: nil
Receiver's instance variables:
<<error during printing>>
SocketAddress>>printOn:
Receiver: <<error during printing>>
Arguments and temporary variables:
aStream: a LimitedWriteStream ''
Receiver's instance variables:
<<error during printing>>
[] in SocketAddress(Object)>>printStringLimitedTo:
Receiver: <<error during printing>>
Arguments and temporary variables:
s: a LimitedWriteStream ''
Receiver's instance variables:
<<error during printing>>
I then tried to revert the changes to NetNameResolver back to:
useOldNetwork
� � ^UseOldNetwork ~~ false
printing NetNameResolver localHostAddress now nicely printed a ipv6 address. However if i then try to connect to the primary server from the secondary server i get:�
MagmaSession>>signalExceptionLike
MagmaEnvironmentError: magma@PC_XX:51003 could not be made a warm backup because it is not reachable from magma@PC_XX:51001.
Which is again the same ipv6 error. So the problem i'm facing is that either of them work
I can connect with my magma client to the server if i enable ipv4 only, but then high availability dont work and vice verse.
Anyone any id how i can debug the primitive has failed on:
NetNameResolver class>>primGetNameInfo: socketAddress flags: flags
� <primitive: 'primitiveResolverGetNameInfo' module: 'SocketPlugin'>
� �flags == 0 ifTrue: [^self primGetNameInfo: socketAddress
� �flags: SocketAddressInformation numericFlag].
� �self primitiveFailed
further more, why cant the primitiveFailed mention which primitive has failed?
Thanks,
Kind Regards,
Bart
--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
Gravitation is not responsible for people falling in love. - Albert Einstein
_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project