Infrastructure at your Service

Morgan Patou

Documentum – RCS/CFS Upgrade in silent fails with IndexOutOfBoundsException

Several years ago, I wrote a series of blogs regarding the silent installation of Documentum Components, including for a RCS/CFS (HA part of a Repository). In there, I described the process and gave an example of properties file, with all the parameters that are needed and a quick explanation for each of them. As I described in the previous blogs, and that is true for most of Documentum components, in case you want to upgrade instead of installing from scratch, then you more or less just have to change the “CREATE” action to “UPGRADE“. There is, however, a small specificity for the Remote Content Server and that is the point of this blog.

Trying to upgrade a RCS/CFS by reusing the install silent properties file with the UPGRADE action will give something like that (with DEBUG logs enabled):

[[email protected] ~]$ cat $DM_HOME/install/logs/install.log
12:41:07,100 DEBUG [main]  - ###################The variable is: LOG_IS_READY, value is: true
12:41:07,100 DEBUG [main]  - ###################The variable is: FORMATED_PRODUCT_VERSION_NUMBER, value is: 20.2.0000.0110
12:41:07,101  INFO [main] com.documentum.install.shared.installanywhere.actions.InitializeSharedLibrary - The product name is: CfsConfigurator
12:41:07,101  INFO [main] com.documentum.install.shared.installanywhere.actions.InitializeSharedLibrary - The product version is: 20.2.0000.0110
12:41:07,101  INFO [main]  -
...
12:41:07,224 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Start to resolve variable
12:41:07,225 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Start to check condition
12:41:07,225 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Start to setup
12:41:07,225 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - *******************Start action com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName***********************
12:41:07,230 ERROR [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Index -1 out of bounds for length 3
java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 3
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
        at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
        at java.base/java.util.Objects.checkIndex(Objects.java:372)
        at java.base/java.util.ArrayList.get(ArrayList.java:459)
        at com.documentum.install.multinode.cfs.common.services.DiServerContentServers.getServer(DiServerContentServers.java:192)
        at com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName.setup(DiWAServerCfsTestServerConfigObjectName.java:23)
        at com.documentum.install.shared.installanywhere.actions.InstallWizardAction.install(InstallWizardAction.java:73)
        at com.zerog.ia.installer.actions.CustomAction.installSelf(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.an(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.al(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.am(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runNextInstallPiece(Unknown Source)
        at com.zerog.ia.installer.ConsoleBasedAAMgr.ac(Unknown Source)
        at com.zerog.ia.installer.AAMgrBase.runPreInstall(Unknown Source)
        at com.zerog.ia.installer.LifeCycleManager.consoleInstallMain(Unknown Source)
        at com.zerog.ia.installer.LifeCycleManager.executeApplication(Unknown Source)
        at com.zerog.ia.installer.Main.main(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.zerog.lax.LAX.launch(Unknown Source)
        at com.zerog.lax.LAX.main(Unknown Source)
12:41:07,233  INFO [main]  - The INSTALLER_UI value is SILENT
12:41:07,233  INFO [main]  - The KEEP_TEMP_FILE value is true
...
[[email protected] ~]$

 

This error shows that the installer is failing while trying to get some details of the repository to upgrade. The exception stack isn’t very clear about what exactly it is failing to retrieve: docbase name, dm_server_config name, hostname, service name or something else. Since I don’t have access to the source code, I worked with OpenText on the SR#4593447 to get the insight of what is missing. Turns out that it is actually the Service Name that cannot be found on the properties file. When a RCS/CFS is installed, it will use the property called “SERVER.DOCBASE_SERVICE_NAME” which is described in the previous blog about silent installation. This is the only parameter required for the Service Name. In case of an upgrade, you could think that the installer would be smart enough to go fetch the value from the server.ini directly or, at least, take the same parameter than during installation but that’s not the case. In fact, it only relies on the properties file and it uses another parameter that is only required for upgrade/delete: “SERVER.COMPONENT_NAME“.

Therefore, if you want to upgrade a RCS/CFS, you will need to provide the Service Name for the “SERVER.COMPONENT_NAME” parameter (same value as “SERVER.DOCBASE_SERVICE_NAME“). It’s not a problem to put that in both install and upgrade properties file, you can put as much as you want in these, if Documentum doesn’t recognize the parameter, it will just ignore it. The OpenText Engineers weren’t able to find the reason why there are two different parameters for the same purpose but that comes from way back apparently…

Anyway, once you add the parameter with its value and start again the upgrade of the RCS/CFS, it should work properly:

[[email protected] ~]$ cat $DM_HOME/install/logs/install.log
13:27:16,953 DEBUG [main]  - ###################The variable is: LOG_IS_READY, value is: true
13:27:16,953 DEBUG [main]  - ###################The variable is: FORMATED_PRODUCT_VERSION_NUMBER, value is: 20.2.0000.0110
13:27:16,954  INFO [main] com.documentum.install.shared.installanywhere.actions.InitializeSharedLibrary - The product name is: CfsConfigurator
13:27:16,954  INFO [main] com.documentum.install.shared.installanywhere.actions.InitializeSharedLibrary - The product version is: 20.2.0000.0110
13:27:16,954  INFO [main]  -
...
13:27:17,091 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Start to resolve variable
13:27:17,091 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Start to check condition
13:27:17,091 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - Start to setup
13:27:17,091 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - *******************Start action com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName***********************
13:27:17,096 DEBUG [main]  - ###################The variable is: SERVER.SERVER_INI_FILE_NAME, value is: server_cs-2_Repo1.ini
13:27:17,097 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsTestServerConfigObjectName - *******************************end of action********************************
13:27:17,100 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo - Start to resolve variable
13:27:17,100 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo - Start to check condition
13:27:17,100 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo - Start to setup
13:27:17,100 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo - *******************Start action com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo***********************
13:27:17,100 DEBUG [main]  - ###################The variable is: SERVER.DOCBASE_HOME, value is: $DOCUMENTUM/dba/config/Repo1
13:27:17,101 DEBUG [main]  - ###################The variable is: common.old.aek.key.name, value is: aek.key
13:27:17,101 DEBUG [main]  - ###################The variable is: common.aek.key.name, value is: aek.key
13:27:17,101 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo - The aek passphrase is ***************
13:27:17,101 DEBUG [main] com.documentum.install.multinode.cfs.installanywhere.actions.DiWAServerCfsLoadAEKInfo - *******************************end of action********************************
...
[[email protected] ~]$

 

It’s not always easy to work with silent installation of Documentum because the documentation for that part is quite poor at the moment, this parameter is not documented anywhere for example. I mean, none of the parameters are documented for the CS part but at least there is a kind of “template” usually, under $DM_HOME/install/silent/templates. Unfortunately, this parameter doesn’t appear anyway. So, yes, it might be a little bit difficult but once you have it working, you can gain a lot so it’s still worth to sweat a little.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Morgan Patou
Morgan Patou

Technology Leader ECM & Senior Consultant