Chapter 8. Upgrading Fuse Standalone on Karaf The Fuse on Apache Karaf upgrade mechanism enables you to apply fixes to an Apache Karaf container without needing to reinstall an updated version of Fuse on Karaf. It also allows you to roll back the upgrade, if the upgrade causes problems with your deployed applications. The upgrade installer file is the same file that you use to install Fuse on Apache Karaf. Note To obtain the upgrade installer file, go to the Downloads page of the Red Hat customer portal and download the latest version of the installation archive for Fuse on Apache Karaf (for example, fuse-karaf-7.13.0.fuse-7_13_0-00012-redhat-00001.zip ). Section 8.1, "Impact of upgrading Fuse on Karaf" Section 8.2, "Upgrading Fuse Standalone on Karaf" Section 8.3, "Rolling back an upgrade for Fuse on Karaf" 8.1. Impact of upgrading Fuse on Karaf The upgrade mechanism can make updates to any installation files including bundle JARs and static files (including, for example, configuration files under the etc/ directory). The Fuse on Apache Karaf upgrade process: Updates any files, including bundle JARs, configuration files, and any static files. Patches both the current container instance (and its runtime storage under the data/ directory) and the underlying installation. Hence, patches are preserved after deleting a container instance. Updates all of the files related to Karaf features, including the features repository files and the features themselves. Hence, any features installed after the rollup patch will reference the correct patched dependencies. If necessary, updates configuration files (for example, files under etc/ ), automatically merging any configuration changes you have made with the configuration changes made by the patch. If merge conflicts occur, see the patch log for details of how they are handled. Most of the merge conflicts are resolved automatically. For example, the patch mechanism detects conflicts at property level for the property files. It detects whether it was a user or patch that changed any property. The change is preserved, if only one side changed the property. Tracks all of the changes made to the installation (including to static files), so that it is possible to roll back the patch. Note The rollup patching mechanism uses an internal git repository (located under patches/.management/history ) to track the changes made. 8.2. Upgrading Fuse Standalone on Karaf The following instructions guide you through upgrading Fuse on Apache Karaf. Ensure all prerequisites are completed before commencing the upgrade procedure. Prerequisites Ensure you have a full backup of your Fuse on Apache Karaf installation before upgrading. Start the container, if it is not already running. Tip If the container is running in the background (or remotely), connect to the container using the SSH console client, bin/client . Add the upgrade installer file to the container's environment by invoking the patch:add command. For example, to add the fuse-karaf-7.13.0.fuse-7_13_0-00012-redhat-00001.zip upgrade installer file: Note The patch:find command can only be used to find and add the latest hot fix patches to the container's environment; it cannot be used to apply full upgrade patches. Procedure Run the patch:update command. There is no need to restart the container. Invoke the patch:list command to display a list of upgrade installers. In this list, the entries under the [name] heading are upgrade IDs. For example: Simulate the upgrade by invoking the patch:simulate command and specifying the upgrade ID for the upgrade that you want to apply, as follows: This generates a log of the changes that will be made to the container when the upgrade is performed, but will not make any actual changes to the container. Review the simulation log to understand the changes that will be made to the container. Upgrade the container by invoking the patch:install command and specifying the upgrade ID for the upgrade that you want to apply. For example: Validate the upgrade, by searching for one of the upgrade artifacts. For example, if you had just upgraded Fuse 7.1.0 to Fuse 7.2.0, you could search for bundles with the build number, 7.2.0.fuse-720035-redhat-00001, as follows: Note After upgrading, you also see the new version and build number in the Welcome banner when you restart the container. 8.3. Rolling back an upgrade for Fuse on Karaf Occasionally an upgrade might not work or might introduce new issues to a container. In these cases, you can easily roll back the upgrade and restore your system to its state using the patch:rollback command. This set of instructions guides you through this procedure. Prerequisites You have recently upgraded Fuse on Karaf. You want to rollback the upgrade. Procedure Invoke the patch:list command to obtain the upgrade ID, UPGRADE_ID , of the most recently installed patch. Invoke the patch:rollback command, as follows: Note In some cases the container needs to restart to roll back the upgrade. In these cases, the container restarts automatically. Due to the highly dynamic nature of the OSGi runtime, during the restart you might see some occasional errors related to incompatible classes. These errors are related to OSGi services that have just started or stopped and can be safely ignored.

Commands:
patch:add file:///path/to/fuse-karaf-7.13.0.fuse-7_13_0-00012-redhat-00001.zip
karaf@root()> patch:update Current patch mechanism version: 7.1.0.fuse-710023-redhat-00001 New patch mechanism version detected: 7.2.0.fuse-720035-redhat-00001 Uninstalling patch features in version 7.1.0.fuse-710023-redhat-00001 Installing patch features in version 7.2.0.fuse-720035-redhat-00001
karaf@root()> patch:list [name] [installed] [rollup] [description] fuse-karaf-7.2.0.fuse-720035-redhat-00001 false true fuse-karaf-7.2.0.fuse-720035-redhat-00001
karaf@root()> patch:simulate fuse-karaf-7.2.0.fuse-720035-redhat-00001 INFO : org.jboss.fuse.modules.patch.patch-management (226): Installing rollup patch "fuse-karaf-7.2.0.fuse-720035-redhat-00001" ========== Repositories to remove (9): - mvn:io.hawt/hawtio-karaf/2.0.0.fuse-710018-redhat-00002/xml/features ========== Repositories to add (9): - mvn:io.hawt/hawtio-karaf/2.0.0.fuse-720044-redhat-00001/xml/features ========== Repositories to keep (10): - mvn:org.apache.activemq/artemis-features/2.4.0.amq-711002-redhat-1/xml/features ========== Features to update (100): [name] [version] [new version] aries-blueprint 4.2.0.fuse-710024-redhat-00002 4.2.0.fuse-720061-redhat-00001 ========== Bundles to update as part of features or core bundles (100): [symbolic name] [version] [new location] io.hawt.hawtio-log 2.0.0.fuse-710018-redhat-00002 mvn:io.hawt/hawtio-log/2.0.0.fuse-720044-redhat-00001 ========== Bundles to reinstall as part of features or core bundles (123): [symbolic name] [version] [location] com.fasterxml.jackson.core.jackson-annotations 2.8.11 mvn:com.fasterxml.jackson.core/jackson-annotations/2.8.11 Simulation only - no files and runtime data will be modified. karaf@root()>
karaf@root()> patch:install fuse-karaf-7.13.0.fuse-7_13_0-00012-redhat-00001
karaf@root()> bundle:list -l | grep 7.2.0.fuse-720035-redhat-00001 22 │ Active │ 80 │ 7.2.0.fuse-720035-redhat-00001 │ mvn:org.jboss.fuse.modules/fuse-pax-transx-tm-narayana/7.2.0.fuse-720035-redhat-00001 188 │ Active │ 80 │ 7.2.0.fuse-720035-redhat-00001 │ mvn:org.jboss.fuse.modules.patch/patch-commands/7.2.0.fuse-720035-redhat-00001
patch:rollback UPGRADE_ID