1

I'm spinning up a Windows Container image (provided my MS here) containing the Self-Hosted Integration Runtime to be able to use ADF in a on-premise situation. It ran smoothly until I needed to use Parquet files.

When I pointed the output to a .parquet I got a Data Factory task failure pointing the absence of Java in the Integration Runtime container.

ErrorCode=JreNotFound,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Java Runtime Environment cannot be found on the Self-hosted Integration Runtime machine. It is required for parsing or writing to Parquet/ORC files. Make sure Java Runtime Environment has been installed on the Self-hosted Integration Runtime machine.,Source=Microsoft.DataTransfer.Common,''Type=System.DllNotFoundException,Message=Unable to load DLL 'jvm.dll': The specified module could not be found.

I took the path of modifying the build.ps1 file to install and configure the dependencies during container image creation. These are the steps taken:

  • Install Microsoft Visual C++ 2010 Service Pack 1 (here)

  • Instal JDK provided from Microsoft OpenJDK 17.0.6 LTS - 64bits MSI (here)

  • Manually set JAVA_HOME environment variable: setx -m JAVA_HOME "C:\Program Files\Microsoft\jdk-17.0.6.10-hotspot" (As for as I got SHIR will look in the registry for JRE location and in case it is not found it will look JAVA_HOME env var).

Java seems to be working fine, since when I run java -version it returns me the following output.

openjdk version "17.0.6" 2023-01-17 LTS
OpenJDK Runtime Environment Microsoft-7209853 (build 17.0.6+10-LTS)
OpenJDK 64-Bit Server VM Microsoft-7209853 (build 17.0.6+10-LTS, mixed mode, sharing)

Everything seems to be Ok but I keep getting the error I mentioned above. I tried to install JRE7, JRE8, configure registry keys, but nothing seems to work.

Andre.Santarosa
  • 1,150
  • 1
  • 9
  • 22

5 Answers5

5

Until now we were using Java 17 (Microsoft OpenJDK) and unfortunately the newest auto-update broke the loading of the jvm.dll from that distro.

For us the following combination works:

Integration Runtime: 5.26.8431.1 + Java (Adoptium): jdk8u362-b09

Make sure that you select the "Set JAVA_HOME variable" and/or the "JavaSoft Registry keys" feature when installing. Also don't forget to restart the IR afterwards:

C:\Program Files\Microsoft Integration Runtime\5.0\Shared\diacmd.exe -r

Microsoft statement:

Workaround: Customers impacted by this issue could use one of following alternatives:

Option 1: Downgrade to SHIR version 5.25.8410.1, where Microsoft build of OpenJDK is applicable. Option 2: If you'd prefer to stay at newer version of SHIR, switch to use Oracle JDK (e.g. jdk-8u341-windows-x64) or OpenJDK implementations of other providers like Eclipse Temurin.

ferhorv
  • 71
  • 4
1

We are experiencing the exact same issue since our production environments have been upgraded from 5.24x to 5.26x. Looking at the release notes for the Integration Runtime upgrades found here: release notes

You can see that there are known issues regarding "finding" dll files. They dont specify which files have issues though.

We attempted upgrading to the newest version 5.28x, but that still gives us the same issues.

We are currently downgrading to 5.27.8441.3 download link. I will update my response if that solved the issue.

UPDATE: We have attempted the current version: 5.28.8473.1 a previous version: 5.27.8441.3 another previous version: 5.26.8431.1.

all not fixing the issue. I have raised a ticket with Support, and am currently downgrading to our known working version: 5.24.8369.1.

I will update again if this version is actually still working.

UPDATE2: @FlodenH our release pipeline is still running (+- 10 more minutes) but someone told me it works for him again using this older version.

You can download any version by changing this url:

https://download.microsoft.com/download/E/4/7/E4771905-1079-445B-8BF9-8A1A075D8A10/IntegrationRuntime_VERSION.msi?update=1

so for the working version it should be: link

UPDATE3: I can confirm that version: 5.24.8369.1 works. Download link can be found above. A ticket was raised with Microsoft and they are investigating it on the newer version, but for now this version is the only one that works for parquet convertion.

  • Hello, @Wesley! With things like that on the road we ended up deciding to not go forward with this approach, but I`m very thankful for all the updates and hope they fix this quickly lol, I'll mark your answer as "the one". Thank you once again PS: If you could update this after MS answer it would be great for us to know what happened – Andre.Santarosa Mar 29 '23 at 09:40
  • Thanks for that @Andre.Santarosa. I will update the answer as soon as MS updates me. Hopefully they manage to fix it so we can all upgrade to newer versions if we use parquet convertion. – Wesley Teunissen Mar 29 '23 at 12:44
  • 2
    Microsoft came back to us, suggesting we either downgrade to 5.24xx (or 5.25xx which should also be working). We ended up going back to 5.24xx since we knew that was working, and wont upgrade to 5.25xx for now. The other option they gave was actually to move to a different java provider like Temurin (version 11). which is something @aledeniz is suggesting below. We tried this on our dev machine, recreating the VM, installing temurin (version 11) and installing the newest 5.28xx version of the integration runtime. We ended up with the same errors, so for now we leave it as is... – Wesley Teunissen Mar 30 '23 at 09:28
0

I have found some links which might help or answer your question.

https://learn.microsoft.com/en-us/troubleshoot/azure/general/error-run-copy-activity-azure

https://learn.microsoft.com/en-us/answers/questions/532391/azure-pipeline-issue

https://learn.microsoft.com/en-us/answers/questions/582143/pipeline-fail-during-the-sink-of-a-copy-data-to-pa

Could this be something about registry?

or could this be ?

64-bit JRE for 64-bit ADF Integration Runtime should be installed in the folder: C:\Program Files\Java\

The folder is not C:\Program Files (x86)\Java\

  • According to MS it first checks the Registry, if not if found it gets the content of JAVA_HOME, so it should be fine. I tried changing the installation directory to Java and got no success also – Andre.Santarosa Mar 13 '23 at 20:52
0

We had the same issue, and in our case, we managed to work around it with a registry change. Basically, we added REG_SZ values for "CurrentVersion" under HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit and HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment.

At the end the JavaSoft.reg file we applied looked like this:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]
"CurrentVersion"="1.8"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8]
"JavaHome"="C:\\Program Files\\Temurin\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\8.0.362.9]
"JavaHome"="C:\\Program Files\\Temurin\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
"CurrentVersion"="1.8"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8]
"JavaHome"="C:\\Program Files\\Temurin\\jre"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\8.0.352.8]
"JavaHome"="C:\\Program Files\\Temurin\\jre"

Before merging this .reg file, we did not have the "CurrentVersion" values under the two keys.

That said, please note that the current documentation from Microsoft is actually requesting Temurin 11. Verbatim from the Prerequisites section at https://learn.microsoft.com/en-us/azure/data-factory/create-self-hosted-integration-runtime?tabs=data-factory:

Java Runtime (JRE) version 11 from a JRE provider such as Eclipse Temurin. Ensure that the JAVA_HOME environment variable is set to the JDK folder (and not just the JRE folder) you may also need to add the bin folder to your system's PATH environment variable.

Please also note while troubleshooting via the Sysinternals Procmon64.exe tool, we noticed the Integration Runtime process was unable to find 2 files, jvm.dll, which was addressed from the registry change described above, and msvcr100.dll. We tried to work around or fix also the finding of the latter, but we gave up as we noticed that didn't had any impact in our scenarios. Just manually copying msvcr100.dll from %SystemRoot%/System32 into C:\Program Files\Temurin\bin would work around the issue, if that impacts you, but I wouldn't recommend that solution (if you use Temurin 8, I would suggest evaluating to upgrade to Temurin 11).

aledeniz
  • 431
  • 3
  • 13
0

For us the following combination works:

  • Integration runtime: 5.26.8431.1
  • Java OpenJDK11U-jdk_x64_windows_hotspot_11.0.18_10
  • PATH environement variable: C:\Program Files\Eclipse Adoptium\jdk-11.0.18.10-hotspot\bin;C:\Program Files\Eclipse Adoptium\jdk-11.0.18.10-hotspot\bin\server;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH\
  • Registry: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\11 and Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\11.0.18.10 (no other key under JavaSoft)
Piter
  • 1
  • 1