Improve Reliability of Dynamic UDF Resolution in Coral Hive
Opened this issue · 0 comments
1fanwang commented
Problem
The ArtifactsResolver in Coral Hive is getting stuck for extended periods (15+ minutes) when fetching Ivy artifacts during dynamic UDF resolution. This issue is causing significant delays and requiring manual retries of entire translation operations.
Current Behavior
- No timeout mechanism for artifact resolution
- No automatic retry logic
Observed Symptoms
- Log entries showing repeated failed attempts to acquire locks
- Extended periods of inactivity (15+ minutes)
- Eventual failure with "Unable to fetch dependencies" error
Example Log Output
24/05/20 11:32:00 INFO functions.ArtifactsResolver: Reading Ivy settings from: jar:file:/Users/stewang/.gradle/caches/modules-2/files-2.1/com.linkedin.coral/coral-hive/2.2.1/9b95be32614d2247ae7f4b16266bfc514967012b/coral-hive-2.2.1.jar!/ivy.settings.xml
:: problems summary ::
24/05/20 11:48:04 WARN functions.ArtifactsResolver: Unable to fetch dependencies for UDF org.apache.hadoop.hive.ql.udf.generic.GenericUDFReflect: [download failed: com.google.inject.extensions#guice-servlet;3.0!guice-servlet.jar]
:::: ERRORS
impossible to acquire lock for com.google.inject.extensions#guice-servlet;3.0
impossible to acquire lock for com.google.inject.extensions#guice-servlet;3.0
impossible to acquire lock for com.google.inject.extensions#guice-servlet;3.0
impossible to acquire lock for com.google.inject.extensions#guice-servlet;3.0
impossible to acquire lock for com.google.inject.extensions#guice-servlet;3.0
impossible to acquire lock for com.google.inject.extensions#guice-servlet;3.0
Impact
Resolving this issue will:
- Reduce unexpected delays in translation operations
- Improve overall reliability of the Coral Hive module
- Enhance developer experience when working with dynamic UDFs
Additional Context
This issue is particularly impactful when developing tools that rely on Coral's translation capabilities, as it requires retrying entire operations at a higher level.