Skip to main content
Question

Fme not reading all the features coming out of sql executor. surprised!!!


f.kemminje
Contributor
Forum|alt.badge.img+11

When I execute the query in TOAD there are 1.6 million records are fetching. But when i used the same query inside fme it fetched only 138000(138 thousand records), And i Am using http caller in this fmw file. Is the http caller culprit here?

fmw screen shot attached.

toad shows 1.47 millon because already 138 k records written to destination and we changed the

flag field nax match status to yes. and in this query we take only nax match status is NULL

explanation :

I used this statement inside fme using executor

next i am creating text string to ingest to HTTP Caller

Httpcaller takes approx 1 second to get the response

everything worked good, fme said successful, No error msg. But only 138 thousand came to destination table. i am really surprised.

how can we fix this issue?

16 replies

david_r
Evangelist
  • May 8, 2018

I would start by further analyzing your data and your workspace, e.g.

  • Are you using the exact same SQL select statement in FME as in TOAD?
  • Are you connecting to the same database instance in FME and in TOAD?
  • If your SQL is dynamic based on incoming attributes, are the attributes always present and do they contain the expected values?
  • Try generating the complete SQL statements in e.g. an AttributeCreator and send the statement to the log and copy/paste to TOAD: does the result there match the result in FME?

Using breakpoints in FME is very helpful when problems like these occur.

For what it's worth, I've never had any problems with the SQLExecutor not returning all the records, even for multi-million record counts.


redgeographics
Celebrity
Forum|alt.badge.img+48

Just a general note: the HTTPCaller will send a call out for every feature that's being passed through it, as soon as the feature passes through it. I've done that with much less features on a server in a local network and effectively did a denial-of-service attack on it. I'm not saying that this is the case here, but it may be. In that case a Decelerator can be used to slow things down (max features per second or a per-feature delay, but with 1.6M features you probably don't want that)


david_r
Evangelist
  • May 8, 2018
redgeographics wrote:

Just a general note: the HTTPCaller will send a call out for every feature that's being passed through it, as soon as the feature passes through it. I've done that with much less features on a server in a local network and effectively did a denial-of-service attack on it. I'm not saying that this is the case here, but it may be. In that case a Decelerator can be used to slow things down (max features per second or a per-feature delay, but with 1.6M features you probably don't want that)

Totally agree. Actually, I once had to do something like that to geocode about a million addresses and it took about 12 days of non-stop processing. I also had to contact the server admin to avoid getting black-listed for this exact reason.

f.kemminje
Contributor
Forum|alt.badge.img+11
  • Author
  • Contributor
  • May 10, 2018

@david_r

David My answers below..

  • Are you using the exact same SQL select statement in FME as in TOAD?
  • yes
  • Are you connecting to the same database instance in FME and in TOAD?
  • yes both are same
  • If your SQL is dynamic based on incoming attributes, are the attributes always present and do they contain the expected values?
  • count of records in the table not changing
  • Try generating the complete SQL statements in e.g. an AttributeCreator and send the statement to the log and copy/paste to TOAD: does the result there match the result in FME?
  • yes matches

Moreover when i remove http caller from my fmw. I am able to receive all the records from sql executor.

When I checked this issue with my colleague , even he had this issue before.

Using breakpoints in FME is very helpful when problems like these occur.

For what it's worth, I've never had any problems with the SQLExecutor not returning all the records, even for multi-million record counts.


f.kemminje
Contributor
Forum|alt.badge.img+11
  • Author
  • Contributor
  • May 10, 2018

Now i used feature holder transformer after sqlexecutor and i got all the 1.6 million records from the sql executor. and it is running now. i need to check whether all the output features from feature holder are going thru http caller or not

it is in the process...

i will tell you the result. will see


takashi
Contributor
Forum|alt.badge.img+19
  • Contributor
  • May 10, 2018
f.kemminje wrote:

@david_r

David My answers below..

  • Are you using the exact same SQL select statement in FME as in TOAD?
  • yes
  • Are you connecting to the same database instance in FME and in TOAD?
  • yes both are same
  • If your SQL is dynamic based on incoming attributes, are the attributes always present and do they contain the expected values?
  • count of records in the table not changing
  • Try generating the complete SQL statements in e.g. an AttributeCreator and send the statement to the log and copy/paste to TOAD: does the result there match the result in FME?
  • yes matches

Moreover when i remove http caller from my fmw. I am able to receive all the records from sql executor.

When I checked this issue with my colleague , even he had this issue before.

Using breakpoints in FME is very helpful when problems like these occur.

For what it's worth, I've never had any problems with the SQLExecutor not returning all the records, even for multi-million record counts.

I'd add another question.

 

  • Did the entire translation complete successfully?

 


david_r
Evangelist
  • May 11, 2018
f.kemminje wrote:

@david_r

David My answers below..

  • Are you using the exact same SQL select statement in FME as in TOAD?
  • yes
  • Are you connecting to the same database instance in FME and in TOAD?
  • yes both are same
  • If your SQL is dynamic based on incoming attributes, are the attributes always present and do they contain the expected values?
  • count of records in the table not changing
  • Try generating the complete SQL statements in e.g. an AttributeCreator and send the statement to the log and copy/paste to TOAD: does the result there match the result in FME?
  • yes matches

Moreover when i remove http caller from my fmw. I am able to receive all the records from sql executor.

When I checked this issue with my colleague , even he had this issue before.

Using breakpoints in FME is very helpful when problems like these occur.

For what it's worth, I've never had any problems with the SQLExecutor not returning all the records, even for multi-million record counts.

Did you check for warnings or other "suspicious" messages in the FME log?

dnaumov
Contributor
Forum|alt.badge.img+8
  • Contributor
  • August 27, 2019

Same issues here. I am reading features from Oracle table using SQL Creator but it is not reading all of the features for whatever reasons. Log file doesn't reports any errors. Has it something to do with the WorkspaceRunner which does some processing and updates the same rows at the end?

Was the root cause found?


sigtill
Contributor
Forum|alt.badge.img+24
  • Contributor
  • August 27, 2019
danaumov wrote:

Same issues here. I am reading features from Oracle table using SQL Creator but it is not reading all of the features for whatever reasons. Log file doesn't reports any errors. Has it something to do with the WorkspaceRunner which does some processing and updates the same rows at the end?

Was the root cause found?

Hi @danaumov - Do you only have a SQLCreator in the workspace? Can you try with an empty workspace and use only an SQLCreator to see if this can read all the features. Also can you paste the complete SQL used here?


sigtill
Contributor
Forum|alt.badge.img+24
  • Contributor
  • August 27, 2019

I would recommend to add a Attributecreator before the SQLExecutor and a Logger also. This way you can see the actual query being used in the logfile on FME Server also:


dnaumov
Contributor
Forum|alt.badge.img+8
  • Contributor
  • August 27, 2019

In the Oracle trace I found this error. ORA-01555: snapshot too old. This is the root cause but strangely FME doesn't pick this up and doesn't report the error in the FME log, quite the opposite it says everything was a success.


sigtill
Contributor
Forum|alt.badge.img+24
  • Contributor
  • August 27, 2019
danaumov wrote:

In the Oracle trace I found this error. ORA-01555: snapshot too old. This is the root cause but strangely FME doesn't pick this up and doesn't report the error in the FME log, quite the opposite it says everything was a success.

@danaumov - did you see this on the "Oracle side" of things? Havent used Oracle a lot so sorry for the stupid questions :).


dnaumov
Contributor
Forum|alt.badge.img+8
  • Contributor
  • August 27, 2019
sigtill wrote:

@danaumov - did you see this on the "Oracle side" of things? Havent used Oracle a lot so sorry for the stupid questions :).

Yes, in the Oracle logs but it doesn't show up in the FME log. Oracle errors usually do show up in FME logs but for whatever reason this one wasn't caught by FME.


david_r
Evangelist
  • August 27, 2019
danaumov wrote:

Yes, in the Oracle logs but it doesn't show up in the FME log. Oracle errors usually do show up in FME logs but for whatever reason this one wasn't caught by FME.

Before we blame FME, don't forget that there's also the added layer of the Oracle client. I'm curious to know if you can execute the same query using e.g. SQLDeveloper on the same client and not get any errors?


dnaumov
Contributor
Forum|alt.badge.img+8
  • Contributor
  • August 27, 2019
david_r wrote:

Before we blame FME, don't forget that there's also the added layer of the Oracle client. I'm curious to know if you can execute the same query using e.g. SQLDeveloper on the same client and not get any errors?

Yes you will get the same error in SQL Developer. It is an Oracle error which has nothing to do with FME but the issue is that FME is not capturing it.


david_r
Evangelist
  • August 27, 2019
danaumov wrote:

Yes you will get the same error in SQL Developer. It is an Oracle error which has nothing to do with FME but the issue is that FME is not capturing it.

That sounds very weird (and a tad unlikely, I must admit). Regardless, it sounds like a case for Safe support.


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings