Error in Recruitment – Build Applicant Search February 3, 2011Posted by Duncan in PeopleTools, Recruitment, Troubleshooting, Verity.
This probably won’t help a great many people, but for the small minority it does help it might save them a lot of time …
There’s a problem with the Applicant Search process in HR9.1 (we’re currently on MP2). When you build the Applicant Index it starts the HRS_SRCH_IDX process. This App Engine starts one or more HRS_SRCH_APP processes. Sometimes HRS_SRCH_APP runs to Success, other times it doesn’t. Initially we thought this was down to locking (if there are more than one running simultaneously one was trying to delete from a table that the other was inserting into), however we set the concurrency to 1 and this was still occurring.
Examining the log files we could see that it loops through all languages in the system (regardless of how many languages had been installed) and creates a subdirectory under ps_cfg_home\data\search\HRS_ResumeText\<env-name>\ for each language. The process gets as far as Italian and then fails (it creates an ITA directory and all the containing files, but does not create JPN – the next language).
We checked out
customer connection My Oracle Support and there wasn’t a great deal. The only relevant post we could find was this one which suggested deleting the JPN language from PSLANGUAGES (and I suspect all of those following JPN). Unfortunately we need multi-language support so this wasn’t a viable option for us. There wasn’t anything on Google either so we were on our own.
Looking through the log files we found this:
mkvdk - Verity, Inc. Version 6.2.0 (_nti40, Jan 30 2008)
Error E0-1509 (Drvr): dlopen() returned: <nil>
Error E0-1510 (Drvr): Error loading driver library 'D:\ps_home\verity\winx86\_nti40\bin\locbasis.dll'
Error E0-1203 (Language): Error reading language definition file: D:/ps_home/verity/winx86/common/japanb/loc00.lng
Error E0-1230 (Language): Could not create locale japanb
Error (): Fatal error - exiting
mkvdk: VDK error -200: couldn't create VDK session
Both of the files referenced in the error message (locbasis.dll and loc00.lng) are present and read/write to the Process Scheduler user account though, so this wasn’t much help.
The code in the App Engine calls a fair sized chunk of Application Package PeopleCode, but eventually I found the logic that creates the directories/Verity Search collections. The last command issued before the error was:
bin\server\winx86\mkvdk -create -collection -locale japanb d:\ps_cfg_home\data\search\HRS_ResumeText\TST\JPN -logfile d:\ps_cfg_home\data\search\HRS_ResumeText\TST\veritybuild.log
When I run this in a command prompt window (after setting the ps_home env var) I get the following error message:
The program cannot start because MSVCP71.dll is missing from your computer.
Interesting, so I have a missing dll. Using Process Monitor (the SysInternals one, not PeopleSoft Process Monitor) I can see that it’s looking for the dll in ‘<ps_home>\verity\winx86\_nti40\bin\’.
Once I located a copy of the DLL and copied it there the HRS_SRCH_APP process ran fine and the directories were created for all languages.
So why is this file missing? I believe it’s an issue of Oracle assuming that Microsoft bundles it in Windows, and Microsoft no longer doing so. See this from Microsoft:
The shared CRT DLL has been distributed by Microsoft in the past as a shared system component. This may cause problems when you run applications that are linked to a different version of the CRT on computers that do not have the correct versions of the CRT DLL installed. This is commonly referred to as the “DLL Conflict” problem. To address this issue, the CRT DLL is no longer considered a system file, therefore, distribute the CRT DLL with any application that relies on it.