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.