You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I found that on Mac OSX (not tested on Windows), when I disconnect from the network (not internet, but local network) I receive the following error:
Traceback (most recent call last):
File "start.py", line 23, in <module>
asys = ActorSystem('multiprocTCPBase')
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/actors.py", line 640, in __init__
systemBase, capabilities, logDefs)
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/actors.py", line 678, in _startupActorSys
systemBase = sbc(self, logDefs=logDefs)
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/system/multiprocTCPBase.py", line 28, in __init__
super(ActorSystemBase, self).__init__(system, logDefs)
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/system/multiprocCommon.py", line 82, in __init__
self.mpcontext)
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/system/transport/TCPTransport.py", line 275, in __init__
templateAddr = ActorAddress(TCPv4ActorAddress(None, 0, external = externalAddr))
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/system/transport/IPBase.py", line 275, in __init__
external)
File "/Users/username/project/venv/lib/python3.7/site-packages/thespian/system/transport/IPBase.py", line 171, in __init__
raise RuntimeError('Unable to determine valid external socket address.')
RuntimeError: Unable to determine valid external socket address.
So I went into IPBase.py and printed out the baseaddr it was receiving on line 110.
classIPActorAddress(object):
def__init__(self, af, socktype, proto, baseaddr, port, external=False):
"""If external is "truthy", this should be an address that is reachable from external nodes. If external is false, this is usually an address that is going to be listened on locally. For example, "0.0.0.0" can be used for a non-external listen-any address, but cannot be used for sending messages. A "truthy" value of external can be an external address to try. Using the address of the Convention Leader (if any) is recommended to ensure that the address chosen is appropriate for the network supporting the Convention. By default, the address is Go Daddy's public webserver address. """print(baseaddr)
Here is where it differs between Mac and Linux. On my Mac, the baseaddr is None. On Linux, the baseaddr prints None and then this class is instantiated again and it prints 127.0.0.1 as expected and it will cycle between printing None and 127.0.0.1 many times but the actor system appears to be working as expected at this point.
Then I went into TCPTransport.py and printed out the value of externalAddr on line 275. Both Mac and Linux give me the same result of ('', 1900) when disconnected from networks.
classTCPTransport(asyncTransportBase, wakeupTransportBase):
"A transport using TCP IPv4 sockets for communications."def__init__(self, initType, *args):
super(TCPTransport, self).__init__()
ifisinstance(initType, ExternalInterfaceTransportInit):
# External process that is going to talk "in". There is# no parent, and the child is the systemAdmin.capabilities, logDefs, concurrency_context=argsadminRouting=Falseself.txOnly=False# communications from outside-in are always local and therefore not restricted.convAddr=capabilities.get(CONV_ADDR_IPV4_CAPABILITY, '')
ifisinstance(convAddr, list):
convAddr=convAddr[0]
ifconvAddrandtype(convAddr) ==type( (1,2) ):
externalAddr=convAddreliftype(convAddr) ==type("") and':'inconvAddr:
externalAddr=convAddr.split(':')
externalAddr=externalAddr[0], int(externalAddr[1])
else:
externalAddr= (convAddr, capabilities.get('Admin Port', DEFAULT_ADMIN_PORT))
print('externalAddr:', externalAddr) # <================ HERE IS THE PRINT STATEMENT====================templateAddr=ActorAddress(TCPv4ActorAddress(None, 0, external=externalAddr))
self._adminAddr=TCPTransport.getAdminAddr(capabilities)
self._parentAddr=NoneisAdmin=False
This is the extent to which I have debugged this issue due to project deadlines but I figured I'd make you aware of this issue. In the mean time, I am going to switch my development environment to Linux.
Thank you for your time.
The text was updated successfully, but these errors were encountered:
Similar to #28
I found that on Mac OSX (not tested on Windows), when I disconnect from the network (not internet, but local network) I receive the following error:
So I went into
IPBase.py
and printed out thebaseaddr
it was receiving on line 110.Here is where it differs between Mac and Linux. On my Mac, the
baseaddr
isNone
. On Linux, thebaseaddr
printsNone
and then this class is instantiated again and it prints127.0.0.1
as expected and it will cycle between printingNone
and127.0.0.1
many times but the actor system appears to be working as expected at this point.Then I went into
TCPTransport.py
and printed out the value ofexternalAddr
on line 275. Both Mac and Linux give me the same result of('', 1900)
when disconnected from networks.This is the extent to which I have debugged this issue due to project deadlines but I figured I'd make you aware of this issue. In the mean time, I am going to switch my development environment to Linux.
Thank you for your time.
The text was updated successfully, but these errors were encountered: