Parallel Routine Execution Error

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
haider.malik
Participant
Posts: 2
Joined: Tue Oct 18, 2005 1:21 am

Parallel Routine Execution Error

Post by haider.malik »

Hi All,
When i plugin my parallel Routine in my transformer, i am getting this error

Code: Select all

Transformer_2: Failed to load the library "V0S2_PXTest_Transformer_2.dll". Either the directory containing the library file is not on the library search path, or the library was compiled on a system that is incompatible with this system. Could not load "V0S2_PXTest_Transformer_2": The specified module could not be found.
But when i plug the routine off the transformer works perfectly.

Any idea what i am doing wrong. The DLL exists on the server on a specified location

Thanks in advance
Eric
Participant
Posts: 254
Joined: Mon Sep 29, 2003 4:35 am

Post by Eric »

Is this a library or dynamic routine?
How did you compile the routine? (commands?)
Have you set the retrun datatypes correctly in the PxRoutine definition in the DataStage designer?
Have you done this before on Unix?
pneumalin
Premium Member
Premium Member
Posts: 125
Joined: Sat May 07, 2005 6:32 am

Check if the DLL works or not

Post by pneumalin »

I will check if that DLL you just plugin works or not. Since the message shows your job finds the DLL, but fails to load it.
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

I disagree. The final sentence in the error message explicitly states "failed to find". Even though the OP is on Windows, many things are done in a UNIX environment (MKS Toolkit). Check the setting of the LD_LIBRARY_PATH envonronment variable, which is the shared library search path. Or it may just be another example of flakiness in 7.5x2 (the first attempt at PX on Windows).
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
Eric
Participant
Posts: 254
Joined: Mon Sep 29, 2003 4:35 am

Post by Eric »

I disagree. If the dll was missing then the job would not compile and this message looks like a runtime error. The last message is "The specified module could not be found" which normally means that the function within the dll cannot be loaded. This implies that either the dll was not built correctly, compiled with the wrong compiler or that the parallel routine definition in datastage does not match the function in the dll (return types, arg lists etc)
pneumalin
Premium Member
Premium Member
Posts: 125
Joined: Sat May 07, 2005 6:32 am

Agree!

Post by pneumalin »

Eric wrote:I disagree. If the dll was missing then the job would not compile and this message looks like a runtime error. The last message is "The specified module could not be found" which normally means that the function within the dll cannot be loaded. This implies that either the dll was not built correctly, compiled with the wrong compiler or that the parallel routine definition in datastage does not match the function in the dll (return types, arg lists etc)
What Eric is saying is exactly what I propose to do. As a normal practice I used to do, is to test that library to work outside of DataStage when you build a DLL in Window or .so in unix. This will ensure the DLL or .so is properly built using 3rd party compiler, then you can work on DataStage job or environment if anything goes wrong. BTW, it's easy to build a C executable in window or Unix to call the library. I can post my C executable code here if you so desire.

Pneuma.
BrianAtWork
Participant
Posts: 6
Joined: Mon May 17, 2004 10:23 am

C Executable code

Post by BrianAtWork »

I can post my C executable code here if you so desire.
I would be interested in seeing your Code - I've been trying to debug my library using PX, which is time consuming. I'd rather do it in Unix and make sure my code is right before testing in PX.

Thanks!
maffan76
Participant
Posts: 110
Joined: Tue Aug 23, 2005 5:27 am

Post by maffan76 »

All,
I was facing the same problem and i posted the same problem on the forum and was almost stuck for last few weeks, finally i have managed to find the solution, this error comes due to the fact that the SHELL SERACH PATH Environment variable of DS did not have the path for the library i was compiling, i specified the path of my library which contained the functions for parallel routines and it worked like a magic.

If any one is still facing a problem i would love to help him as much as i can as i solved it thru HIT and TRIAL :)
Regards,
Affan
"Questioning is Half Knowledge"
ravivarma20
Participant
Posts: 22
Joined: Tue Sep 28, 2004 9:58 am

Post by ravivarma20 »

Hi Guys,

I am having the similar problem. My Px jobs with routine reference failed to run.

It's throwing the following error:

Code: Select all

Failed to load the library "V0S198_MKG_FDW_MGR_MovementData_Transformer_198.so". Either the directory containing the library file is not on the library search path, or the library was compiled on a system that is incompatible with this system. Could not load "V0S198_MKG_FDW_MGR_MovementData_Transformer_198": /mnt/datastage/7.5/Projects/C40075/C40075_Test/Deployed_Flows/temp/O1447553.MKG_FDW_MGR_MovementData/V0S198_MKG_FDW_MGR_MovementData_Transformer_198.so: undefined symbol: IRITimeConversion__FPcT0. 
Our OS is Redhat linux. In shell search path, I given the path where my C++ object file is sitting,but no luck. It's still throwing the same error and failing.

This is my make file to generate object file

Makefile code:
g++ -O -fPIC -c IRITimeConversion.cc -I.

Am I missing any compile options? Any help would be greately appreciated.

Thanks,
Ravi.
Post Reply