I am having the same issues trying to connet a Magma Client and a Magma Server in "localhost" using the latest Pharo on Snow Leopard (Mac). It is this issue with NetNameResolver, I couldn't find a work around yet. Forcing '127.0.0.1' for localhost used to work before, but not anymore. Same image and code seemed to run fine under Linux though. Cheers r 2009/11/22 Bart Gauquie <bart.gauquie@gmail.com>
This is related to: http://lists.gforge.inria.fr/pipermail/pharo-project/2009-November/016021.ht...
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