Intershop Enfinity pipeline hot deployment

12.06.2012.

This article discusses possibilities of pipeline hot deployment on Intershop Enfinity Suite servers.

There are two ways how pipeline hot deployment may be done depending on the appserver.properties value:
• with automatic pipeline reload
• without automatic pipeline reload
The appserver.properties file is usually found at <eserver>/share/system /config/cluster. The property holding information about automatic pipeline reload is intershop.pipelines.CheckSource.

The main purpose of this property is to check the modification time of pipeline files and reload them if necessary. In case that the property value is to true, the check is enabled and pipeline file changes shall be detected and reloaded dynamically. In other words – after the changed code is copied to <eserver>/cartridges/ target folder, the result of the changes shall be immediately visible. Otherwise, if the value is false, the pipeline files shall not be checked and the server restart will be necessary to apply the changes (e.g. to reload appropriate XML files).

The primary reason for turning off automatic reload is the performance impact on the production environment. Checking of a file timestamp on every request is time consuming and degrades the production server performance. So question is: Is it possible to have the fast server response and eliminate the need for the server restart as a result of a minor change (or bugfix)?

The good news is that the system architecture allows the pipeline deployment with no need to restart application servers in such cases. This is useful especially on a live system when the emergency deployment is necessary during the day and the application requests are increased.

Deployment procedure

The first step is to copy the compiled (built) code from <eserver_source>/ cartridges/ target/ files to the /cartridges/target folder. Remember to copy both xml files which can be found at the following location:

<cartridges>/target/<cartridge>/release/pipelines/<pipeline>.xml and
<cartridges>/target/<cartridge>/release/pipelines/<pipeline>-en_US.xml.

The next step is to trigger pipelines reload on every node in the cluster. THis is performed from the SMC console using the following link:

https://<host:port>/is-bin/INTERSHOP.enfinity/WFS/SMC/en_US/-/USD/ReloadPipelines-Start

After logging in go to page that has possibility to select appserver e.g. Monitoring->OR Mapping->Cache. Choose the application server from the drop down menu for which the reload is to be initiated and apply the change.

In the same browser, trigger the following URL: <paste URL here>. Invoking this URL will trigger the pipeline reload on previously selected appserver node. After the pipeline reload is finished, a simple text status report of all appserver nodes in cluster will be shown. (as a useful control mechanism, node that reloaded pipelines will have slightly higher CPU load than the other nodes in cluster).

This procedure should be executed on each application server to make the changes active on all of them (since they run in separate Java VMs).

After the reload is finished on all appserver nodes, the hot deployment is finished and the changed code is now available to the users without restarting application servers. More information is available in the article discussing Intershop architecture and hot-deployment.