We are looking at moving from individual R-code files on disk to procedure libraries (possibly even shared PLs), however the biggest hurdle we have with that is continuous deployment. Progress sessions will lock the PL files as soon as they get accessed, so they cannot be changed while the process is running.
Has anyone had to solve this issue before? What techniques or options are there for replacing PL files while the progress session is running?
We have thought about, on session startup, performing some sort of manual shadow-copy process, then add the copies to the propath. We can the replace the masters, and restart at will, but we would prefer a Progress-default option.
Any help or options are appreciated.
Our application uses the shadow copy technique (it was like that when I started), it works fine as long as you have only a single instance of the application running, but as soon as you start a second instance and the .pl has changed since the first one started you will run into problems. We solved this by putting a folder in front of the propath that contains the updated .r files during the day and only replace the .pl on sunday. In hindsight I can tell you Mike's suggestion sounds a hell of a lot better. For appservers it's probably also the only decent way to use .pl's that can be updated without shutting down everything.
Thanks [mention:6e3b17cb0ff148039a2aabb4c7834ce4:e9ed411860ed4f2ba0265705b8793d05] and [mention:8313c90573ca4178b78df0c43030f0d7:e9ed411860ed4f2ba0265705b8793d05]. It sounds like that needs to be the path we head down. The concept of a "hotfix" folder in the front of the propath to allow for quick code changes sounds useful, although it does mean that the build needs to produce 2 lots of separate artifacts. Something to investigate, anyway.
I'm planning on using a manifest.json file that is produced from the CI/CD tool, which contains the references/filenames/version numbers of the PL files we can use.