Hi,
i think there s a problem in the GT.M system when editing routines. As far as i understand a changed routine is only in my local system after doing a zlink. Other users get this change after they left GT.M and logged in back.
So i can't change a data-structure in a routine without making *all* others leave.
i thought about forcing a zlink on all m-jobs via mupip intrpt but i don t know if this is wanted and has no other problems.
Anyone out there with other solution ?
Greets
Jens
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You seem to understand the situation quite well. If another process has already accessed the routine then they will not see your changes until they either ZLINK it explicitly or they exit and restart the application.
One way this is typically handled is to make the change and then have any users that need the change "log off and back on." This, of course, risks having some users running with the old code and some with the new.
There is probably no real good way around this (other than maybe making the change in a test environment, packaging up a new release, logging everyone off and then installing the new version of the application, etc. But, of course, we just don't do things that way in the M-world...)
The mupip intrpt idea has some appeal but keep in mind that if the job already has the routine on the stack it will not be able to ZLINK it. Other alternatives include checking a list of recently modified routines periodically (perhaps when returning to a menu or doing user input) and zlinking new ones.
One way to fix this would be to check the time stamps of the files (maybe only the object files would need to be checked) every time a routine that is not on the stack is referenced but the overhead would be prohibitive.
I guess I am not being as helpful as I hoped. Maybe someone else will have some more useful ideas.
-bob
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
i think there s a problem in the GT.M system when editing routines. As far as i understand a changed routine is only in my local system after doing a zlink. Other users get this change after they left GT.M and logged in back.
So i can't change a data-structure in a routine without making *all* others leave.
i thought about forcing a zlink on all m-jobs via mupip intrpt but i don t know if this is wanted and has no other problems.
Anyone out there with other solution ?
Greets
Jens
Jens:
You seem to understand the situation quite well. If another process has already accessed the routine then they will not see your changes until they either ZLINK it explicitly or they exit and restart the application.
One way this is typically handled is to make the change and then have any users that need the change "log off and back on." This, of course, risks having some users running with the old code and some with the new.
There is probably no real good way around this (other than maybe making the change in a test environment, packaging up a new release, logging everyone off and then installing the new version of the application, etc. But, of course, we just don't do things that way in the M-world...)
The mupip intrpt idea has some appeal but keep in mind that if the job already has the routine on the stack it will not be able to ZLINK it. Other alternatives include checking a list of recently modified routines periodically (perhaps when returning to a menu or doing user input) and zlinking new ones.
One way to fix this would be to check the time stamps of the files (maybe only the object files would need to be checked) every time a routine that is not on the stack is referenced but the overhead would be prohibitive.
I guess I am not being as helpful as I hoped. Maybe someone else will have some more useful ideas.
-bob