Gergely Farkas created HIVE-29802:
-------------------------------------

             Summary: ProactiveEviction fails with InvalidACLException in 
Kerberos-enabled environments when LLAP daemons are not running
                 Key: HIVE-29802
                 URL: https://issues.apache.org/jira/browse/HIVE-29802
             Project: Hive
          Issue Type: Bug
          Components: llap
            Reporter: Gergely Farkas
            Assignee: Gergely Farkas


When Hive is configured with Kerberos authentication 
(hive.zookeeper.kerberos.enabled=true) and no LLAP daemons have started yet, 
DDL operations such as DROP DATABASE fail with an unhandled RuntimeException.

Root cause:
HS2 connects to ZooKeeper without SASL authentication 
({{LlapZookeeperRegistryImpl}} passes {{saslLoginContextName=null}} for 
non-daemon clients). When no LLAP daemons are registered, the ZK paths (e.g. 
{{/llap-sasl/user-hive}}) do not exist. The {{PathChildrenCache}} (configured 
with {{setCreateParentNodes=true}}) attempts to create them using 
{{CREATOR_ALL_ACL}}, which requires an authenticated identity. ZooKeeper 
rejects this with {{InvalidACLException}}. 
{{ZkRegistryBase.ensureInstancesCache()}} wraps this as a generic 
{{IOException}}, which propagates up through {{ProactiveEviction.evict()}} as 
an uncaught {{RuntimeException}}, causing the calling DDL operation to fail.

Expected behavior:
If no LLAP daemons are registered, proactive cache eviction should be a no-op - 
there is nothing cached to evict.

Stack trace:
{noformat}
  java.lang.RuntimeException: java.io.IOException: 
org.apache.zookeeper.KeeperException$InvalidACLException: KeeperErrorCode = 
InvalidACL for /llap-sasl/user-hive
      at 
org.apache.hadoop.hive.llap.ProactiveEviction.evict(ProactiveEviction.java:...)
      ...
  Caused by: org.apache.zookeeper.KeeperException$InvalidACLException: 
KeeperErrorCode = InvalidACL for /llap-sasl/user-hive
          at org.apache.curator.utils.ZKPaths.mkdirs(ZKPaths.java:...)
{noformat}

Proposed fix:

1. Introduce a {{ClusterNotReadyException}} (extends {{IOException}}) thrown by 
{{ZkRegistryBase.ensureInstancesCache()}} when the cluster is not ready due to 
{{InvalidACLException}}.
2. Catch {{ClusterNotReadyException}} in {{ProactiveEviction.evict()}} and 
return silently.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to