-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
issue with getFieldURI in distributed setting #10
Comments
We tried the Example11, where the getFieldURI method is used, and it is working in our setting in Linux as well as in Windows. |
I use ssh. On the machine running the control script, the following ports are open So basically, one the application server, port 6200 is not open, despite appering in the log of the server. I don't know if this is critical. |
I managed to reproduce the error with the demoapp! I put it into a tarball. To run it, you have to set the ip of the nameserver and set some paths in th Config.py file, then start Server1.py in the ServerA directory, then start Server2.py in ServerB, the Example666.py in HQ, the last starting the computations. There is a flag in Example666.py for switching between getField and getFieldURI. If Server1.py runs on a different machine that Example666.py, then the application will hang when it sets the field. Use the -m1 flag for ssh communication. |
Dear Gaston, we hope that we finally solved the issue. Can you, please, try to run the same example using the latest mupif git version? Thank you. |
I manage to run my mupif script on one machine, using two server applications on a different machine, transgferring the fields by getField and setField methods. If I replace the getField method by getFieldURI, the execution hangs in the subsequently called setField method. However, if I run the control script and the two server applications on the same machine, it executes without any problem until the end.
the relevant part in the control script is:
print('$$$ Displacement output')
uri = app1.getFieldURI(FieldID.FID_Displacement,istep.getTime().inUnitsOf('s').getValue())
log.info("URI of problem 1's Displacement field is " + str(uri) )
res1 = Pyro4.Proxy(uri)
#res1 = app1.getField(FieldID.FID_Displacement,istep.getTime().inUnitsOf('s').getValue())
res1.toVTK2('testoutput-d',format='ascii')
print('******** SET FIELD TO SECOND MODEL ')
print('*************************************')
print('$$$ Field 1 time',res1.getTime())
print('$$$ set displacement field to model 2')
app2.setField(res1)
I noticed that I can address field res1 in the controlscript, as in print('$$$ Field 1 time',res1.getTime()), but not in the subsequent setField executed in the API. I noticed that in the API's setField method, the field is treated as an Pyro4.core.Proxy, and subsdequent Field methods do not execute. As mentionned above , the problem does not show up if the control script executes on the same machine as the two application servers!
For information, here are the relevant parts Config.py and two Serverconfig.py Files
The text was updated successfully, but these errors were encountered: