[
https://issues.apache.org/jira/browse/DRILL-5044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15705310#comment-15705310
]
ASF GitHub Bot commented on DRILL-5044:
---------------------------------------
Github user arina-ielchiieva commented on a diff in the pull request:
https://github.com/apache/drill/pull/669#discussion_r89994171
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateFunctionHandler.java
---
@@ -175,22 +175,20 @@ private void initRemoteRegistration(List<String>
functions,
List<Jar> remoteJars =
remoteRegistry.getRegistry(version).getJarList();
validateAgainstRemoteRegistry(remoteJars, jarManager.getBinaryName(),
functions);
jarManager.copyToRegistryArea();
- boolean cleanUp = true;
List<Jar> jars = Lists.newArrayList(remoteJars);
jars.add(Jar.newBuilder().setName(jarManager.getBinaryName()).addAllFunctionSignature(functions).build());
Registry updatedRegistry =
Registry.newBuilder().addAllJar(jars).build();
try {
remoteRegistry.updateRegistry(updatedRegistry, version);
- cleanUp = false;
} catch (VersionMismatchException ex) {
+ jarManager.deleteQuietlyFromRegistryArea();
--- End diff --
1. I guess having fixed number of retries is enough. Having retry and wait
logic, may lead us to the point where user will have to wait for a long time
till registration completes in case of busy system. With only retry logic we
notify user pretty quickly that the system is busy and it's up to the user to
decide when to try to register the function again,
2. Totally agree about recursion, since user may modify number of retry
attempts, it's much better to have while loop to avoid stack overflow.
> After the dynamic registration of multiple jars simultaneously not all UDFs
> were registered
> -------------------------------------------------------------------------------------------
>
> Key: DRILL-5044
> URL: https://issues.apache.org/jira/browse/DRILL-5044
> Project: Apache Drill
> Issue Type: Bug
> Components: Functions - Drill
> Affects Versions: 1.9.0
> Reporter: Roman
> Assignee: Arina Ielchiieva
>
> I tried to register 21 jars simultaneously (property 'udf.retry-attempts' =
> 30) and not all jars were registered. As I see in output, all function were
> registered and /staging directory was empty, but not all of jars were moved
> into /registry directory.
> For example, after simultaneously registration I saw "The following UDFs in
> jar test-1.1.jar have been registered: [test1(VARCHAR-REQUIRED)" message, but
> this jar was not in /registry directory. When I tried to run function test1,
> I got this error: "Error: SYSTEM ERROR: SqlValidatorException: No match found
> for function signature test1(<CHARACTER>)". And when I tried to reregister
> this jar, I got "Jar with test-1.1.jar name has been already registered".
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)