Hi All,
I tried to run two sub jobs in parallel as shown in the image. Both the tOracleOutput components
are connecting to different tables in the same database(but they do not use a tOracleConnection).
Then I checked the 'Multi thread execution' option in the Run View of the job and started running the job.
Only one of the jobs ran successfully and the other failed with the following error. Does anyone has a solution for this?
Exception in component tOracleOutput_3
java.sql.SQLException: Invalid number format for port number
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:525)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at test.data_mig_demo_0_1.DATA_MIG_DEMO.tOracleInput_4Process(DATA_MIG_DEMO.java:5885)
at test.data_mig_demo_0_1.DATA_MIG_DEMO$3.run(DATA_MIG_DEMO.java:7176)
Caused by: oracle.net.ns.NetException: Invalid number format for port number
at oracle.net.resolver.AddrResolution.resolveSimple(AddrResolution.java:499)
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:396)
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:630)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:206)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 8 more
Hi, Could you please try to add another tSetGlobalVar_3 in your tOracleOutput_3 subjob with same setting(Host, port...)so that in case that tOracleOutput_3 can not get the global variable when the whole job is under the condition of Multi thread execution. (The 3 subjobs will be executed in a same time). Best regards Sabrina
Yes, my port is correct and this works file when 'multi thread execution' is unchecked. I read the database configurations (including the port) from a property file and save it in globalMap and utilize them. I have attached my whole job.
Hi Sabrina, I tried it with tLogRow instead of tOracleOutput_3 and now it works (with 'Multi thread execution' enabled). I wonder how it happens. Could you please explain it for me? Thanks, Thivanka.
Hi,
From your screenshot, it seems you mask your oralce info with variable? Is it working well when you input DB parameter directly instead of using variable?
Have you checked component reference
TalendHelpCenter:tSetGlobalVar Did you press Ctrl Space bar on your keyboard and select the relevant global parameter? ((String)globalMap.get(?targetDBHost?))?
Best regards
Sabrina
Hi Sabrina,
Yes, it worked parallely when I directly use the DB parameters instead using variable. I cant figure out why it does not work once I use the variables.
Yes, I pressed CTRL+SPACE and selected it.
To add that it works when I uncheck the 'Multi Thread Execution' option with variables in the configurations. The error comes only when I check that option.
Hi,
Should it be ((String)globalMap.get(?targetDBHost?)) in variable list? Why there is missing start/end quote in your screenshot?
Best regards
Sabrina