Skip to content

Commit 56f7fea

Browse files
yud8bjornalm
authored andcommitted
Fix IndexError in HiveServer2 Address Parsing via ZooKeeper
1 parent d136031 commit 56f7fea

File tree

1 file changed

+18
-4
lines changed
  • apps/beeswax/src/beeswax/server

1 file changed

+18
-4
lines changed

apps/beeswax/src/beeswax/server/dbms.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,29 @@ def reset_ha():
9696

9797

9898
def get_zk_hs2():
99-
hiveservers = None
99+
hiveservers = []
100100
zk = KazooClient(hosts=libzookeeper_conf.ENSEMBLE.get(), read_only=True)
101101
zk.start(timeout=ZOOKEEPER_CONN_TIMEOUT.get())
102102
znode = HIVE_DISCOVERY_HIVESERVER2_ZNODE.get()
103+
103104
if zk.exists(znode):
104-
LOG.debug("Selecting up Hive server via the following node {0}".format(znode))
105+
LOG.info("Selecting Hive server via the following node {0}".format(znode))
105106
hiveservers = zk.get_children(znode)
106-
if hiveservers and 'sequence' in hiveservers[0]:
107-
hiveservers.sort(key=lambda x: re.findall(r'sequence=\d+', x)[0])
107+
108+
# Filter nodes that match the expected pattern before sorting
109+
sequence_nodes = [x for x in hiveservers if re.search(r'sequence=\d+', x)]
110+
LOG.info("Selecting Hive server via the following sequence_nodes {0}".format(sequence_nodes))
111+
#['serverUri=dw-dev18:10000;version=3.1.2;sequence=0000000052', 'serverUri=dw-dev17:10000;version=3.1.2;sequence=0000000051']
112+
113+
if sequence_nodes:
114+
# Sort the filtered list based on the sequence number
115+
sequence_nodes.sort(key=lambda x: int(re.findall(r'sequence=(\d+)', x)[0]))
116+
hiveservers = sequence_nodes
117+
else:
118+
LOG.warning("No nodes matching 'sequence=\d+' found under {0}".format(znode))
119+
else:
120+
LOG.error("ZooKeeper node {0} does not exist.".format(znode))
121+
108122
zk.stop()
109123
return hiveservers
110124

0 commit comments

Comments
 (0)