What is the relation between dfc.date_format and dm_LogPurge? This is the question we had to answer as we hit an issue. An issue with the dm_LogPurge job.
As usual once a repository has been created we are configuring several Documentum jobs for the housekeeping.
One of them is the dm_LogPurge. It is configured to run once a day with a cutoff_days of 90 days.
So all ran fine until we did another change.
On request of an application team we had to change the dfc.date_format to dfc.date_format=dd/MMM/yyyy HH:mm:ss to allow the D2 clients to use Months in letters and not digits.
This change fulfilled the application requirement but since that day, the dm_LogPurge job started to remove too many log files (to not write ALL).
So let’s explain how we proceed to find out the reason of the issue and more important the solution to avoid it.
We have been informed not by seeing that too many files have been removed but by checking the repository log file. BTW, this file is checked automatically using nagios with our own dbi scripts. So in the repository log file we had errors like:
2016-04-11T20:30:41.453453 16395 01xxxxxx80028223 [DM_OBJ_MGR_E_FETCH_FAIL]error: "attempt to fetch object with handle 06xxxxxx800213d2 failed " 2016-04-11T20:30:41.453504 16395 01xxxxxx80028223 [DM_SYSOBJECT_E_CANT_GET_CONTENT]error: "Cannot get format for 0 content of StateOfDocbase sysobject. " 2016-04-11T20:26:10.157989 14679 01xxxxxx80028220 [DM_OBJ_MGR_E_FETCH_FAIL]error: "attempt to fetch object with handle 06xxxxxx800213c7 failed " 2016-04-11T20:26:10.158059 14679 01xxxxxx80028220 [DM_SYSOBJECT_E_CANT_GET_CONTENT]error: "Cannot get format for 0 content
Based on the time stamp, I saw that the issue could be related to the dm_LogPurge. So I checked the job log file as well the folders which are cleaned out. In the folder all old log files were removed:
[dmadmin@content_server_01 log]$ date Wed Apr 13 06:28:35 UTC 2016 [dmadmin@content_server_01 log]$ pwd $DOCUMENTUM/dba/log [dmadmin@content_server_01 log]$ ls -ltr REPO1* lrwxrwxrwx. 1 dmadmin dmadmin 34 Oct 22 09:14 REPO1 -> $DOCUMENTUM/dba/log/<hex docbaseID>/ -rw-rw-rw-. 1 dmadmin dmadmin 8540926 Apr 13 06:28 REPO1.log
To have more information, I set the trace level of the dm_LogPurge job to 10 and analyzed the trace file.
In the trace file we had:
[main] com.documentum.dmcl.impl.DmclApiNativeAdapter@9276326.get( "get,c,sessionconfig,r_date_format ") ==> "31/1212/1995 24:00:00 " [main] com.documentum.dmcl.impl.DmclApiNativeAdapter@9276326.get( "get,c,08xxxxxx80000362,method_arguments[ 1] ") ==> "-cutoff_days 90 "
So why did we have 31/1212/1995 ?
Using API I confirmed an issue related to the date format
API> get,c,sessionconfig,r_date_format ... 31/1212/1995 24:00:00 API> ?,c,select date(now) as dateNow from dm_server_config datenow ------------------------- 14/Apr/2016 08:36:52 (1 row affected)
Date format? So as all our changes are documented, I easily found that we changed the dfc_date_format for the D2 application.
By cross-checking with another installation, used by another application where we did not change the dfc.date_format, I could confirm that the issue was related to this dfc parameter change.
Without dfc.date_format in dfc.properties:
API> get,c,sessionconfig,r_date_format ... 12/31/1995 24:00:00 API> ?,c,select date(now) as dateNow from dm_server_config datenow ------------------------- 4/14/2016 08:56:13 (1 row affected)
Just to be sure that I did not miss something, I checked also if not all log files were removed after starting manually the job. They were still there.
Now the solution would be to rollback the dfc.date_format change but this would only help the platform but not the application team. As the initial dfc.date_format change was validated by EMC we had to find a solution for both teams.
After investigating we found the final solution:
Add dfc.date_format=dd/MMM/yyyyy HH:mm:ss in the dfc.properties file of the ServerApps (in the JMS directly so!)
With this solution the dm_LogPurge job does not remove too many files and the Application Team can still use the Month written in letters in its D2 applications.