When you have an installation with one Content Server (CS) you do not take care where the job will be running. It’s always on your single CS.
But how should you configure the jobs in case you have several CS? Which jobs have to be executed and which one not? Let’s see that in this post.

When you have to run your jobs in a high availability installation you have to configure some files and objects.

Update the method_verb of the dm_agent_exec method:

API> retrieve,c,dm_method where object_name = 'agent_exec_method'
API> get,c,l,method_verb
API> set,c,l,method_verb
SET> ./dm_agent_exec -enable_ha_setup 1
API> get,c,l,method_verb
API> save,c,l
API> reinit,c

 

The java methods have been updated to be restartable:

update dm_method object set is_restartable=1 where method_type='java';

 

On our installation we use jms_max_wait_time_on_failures = 300 instead the default one (3000).
In server.ini (Primary Content Server) and server_HOSTNAME2_REPO01.ini (Remote Content Server), we have:

incremental_jms_wait_time_on_failure=30
jms_max_wait_time_on_failures=300

 

Based on some issues we faced, for instance with the dce_clean job that ran twice when we had both JMS projected to each CS, EMC advised us to each JMS with its local CS only. With this configuration, in case the JMS is down on the primary CS, the job (using a java method) is started on the remote JMS via the remote CS.

Regarding which jobs have to be executed – I am describing only the one which are used for the housekeeping.
So the question to answer is which job does what and what is “touched”, either metadata or/and content.

To verify that, check how many CS are used and where they are installed:

select object_name, r_host_name from dm_server_config
REPO1               HOSTNAME1.DOMAIN
HOSTNAME2_REPO1     HOSTNAME2.DOMAIN

 

Verify on which CS the jobs will run and “classify” them.
Check the job settings:

select object_name, target_server, is_inactive from dm_job

Metadata

The following jobs work only on metadata, they can run anywhere so the target_server has to be empty

 object_name target_server is_inactive
dm_ConsistencyChecker False
dm_DBWarning False
dm_FileReport False
dm_QueueMgt False
dm_StateOfDocbase False

 

Content

The following jobs work only on content.

  object_name  target_server
dm_ContentWarning  [email protected]
dm_ContentWarningHOSTNAME2_REPO1  [email protected]
dm_DMClean [email protected]
dm_DMCleanHOSTNAME2_REPO1  [email protected]

As we are using a NAS for the Data directory which is shared for both servers, only one of the two jobs has to run. Per default the target_server is defined. So for the one which has to run, target_server has to be empty.

  object_name  target_server  is_inactive
dm_ContentWarning False
dm_ContentWarningHOSTNAME2_REPO1  [email protected] True
dm_DMClean False
dm_DMCleanHOSTNAME2_REPO1  [email protected] True

Metadata and Content

These following jobs are working on metadata and content.

   object_name   target_server
dm_DMFilescan  [email protected]
dm_DMFilescanHOSTNAME2_REPO1  [email protected]
dm_LogPurge  [email protected]
dm_LogPurgeHOSTNAME2_REPO1  [email protected]

Filescan scans the NAS content storage. As said above, it is shared and therefore the job only need to be execute once: the target_server has to be empty to be run everywhere.

LogPurge is also cleaning files under $DOCUMENTUM/dba/log and subfolders which are obviously not shared and therefore both dm_LogPurge jobs have to run. You just have to use another start time to avoid an overlap when objects are removed from the repository.

   object_name   target_server   is_inactive
dm_DMFilescan False
dm_DMFilescanHOSTNAME2_REPO1  [email protected] True
dm_LogPurge  [email protected] False
dm_LogPurgeHOSTNAME2_REPO1  [email protected] False

Normally with this configuration your housekeeping jobs should be well configured.

One point you have to take care is when you use DA to configure your jobs. Once you open the job properties, the “Designated Server” is set to one of your server and not to “Any Running Server” which means target_server = ‘ ‘. If you click the OK button, you will set the target server and in case this CS is down, the job will fail because it cannot use the second CS.