Error in CommData.loadData line 4135, in loadData

Follow me down the rabbit hole as I dig into the inner workings of FDMEE to resolve a somewhat cryptic error message.

Error in CommData.loadData line 4135, in loadData

While testing out some migrated integrations I ran into the following error:

FATAL [AIF]: Error in CommData.loadData
Traceback (most recent call last):
  File "<string>", line 4135, in loadData
RuntimeError: false

This is a new one on me (hence why I am blogging it.) I tried remigrating, checking settings all kinds of stuff but as with most issues I eventually had to dig in to the code. Which first meant finding the code since this is stock FDMEE.

Next I copied the code to Notepad++ (any text editor or code editor such as PyCharm will work but you probably want something with line numbers) and found the line(s) referenced in the error (line 4135).

Carbon

From the code above you can see that the error is raised because result from the aifUtil.callOdiServlet returned either None (aka null) or something other than "true" (probably "false"). Since its a web service call that appears to be failing it highly likely that we have a configuration or infrastructure issue.

I started by tracking down the first paramater webServiceUrl, which I found was being retrieved from a dictionary that was created by the getRuleInfo method.

finding webServiceUrl

Now knowing that getRuleInfo provides the web service url I had notepad++ find all instances of that string in the file, since its python I am looking for the one that is prefixed with def.

When examining the method I quickly found a SQL statement that populates the dictionary.

SQL Statement containing AIF_WEB_SERVICE_URL

I then confirmed that the AIF_WEB_SERVICE_URL was indeed populating the value by examining line 153 ruleInfo["WEB_SERVICE_URL"] = stmtRS.getString("AIF_WEB_SERVICE_URL") which populates the dictionary with the value obtained from the SQL query. Using the query and process id I was able to see that the Web Service URL appeared to be correct.

Well if its got the right URL  and maybe the problem is deeper than ODI or FDMEE are reporting. First I checked to make sure all the same patches were loaded, comparing our working development environment to failing test. Then checked JAR files but nothing made sense. Until I dug into the aif-WebApp.log. There I saw the error I had been seeing in ODI but just a few lines above there was NullPointerException and stack trace.

NullPointerException on CalcScript

Analyzing the error message you can see the null pointer exception stack trace appears to be in reference to executing calculation scripts. I probably should have been more scientific in trying to fix the calculation scripts but I just removed all the scripts from the FDMEE target application corresponding to this rule. Next I re-ran the load rule, SUCCESS! With the load rule now working I added the scripts back one at time just as they were in development, each time executing successfully. I guess something didn't quite import right, but its working now.

Well hopefully you never come across this error but if you do my guess is Google/Bing/Etc will bring you here.