Locking of procedure libraries and CI/CD

Posted by danielb on 30-Jan-2018 19:56

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.

All Replies

Posted by Mike Fechner on 30-Jan-2018 23:40

Rather than performing your own shadow copying, I’d include a version number or time stamp in the pl file name and dynamically set the PROPATH to include the latest one.
 
That will also allow you to see which version is used in a particular runtime session by looking at the PROPATH.

Posted by jankeir on 31-Jan-2018 02:12

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.

Posted by danielb on 07-Feb-2018 22:00

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.

Thanks again.

This thread is closed