Zsolt Miskolczi created HIVE-30024:
--------------------------------------
Summary: Scheduled Query auto-disable failures in HA configurations
Key: HIVE-30024
URL: https://issues.apache.org/jira/browse/HIVE-30024
Project: Hive
Issue Type: Bug
Reporter: Zsolt Miskolczi
Auto-disable fails intermittently on HA configurations, because the query is
not disabled after the given number of failures. Example beeline output from a
test run where 3 failures are expected:
{noformat}
'scheduled_executions.scheduled_execution_id'
'scheduled_executions.schedule_name'
'scheduled_executions.executor_query_id' 'scheduled_executions.state'
'scheduled_executions.start_time' 'scheduled_executions.end_time'
'scheduled_executions.elapsed' 'scheduled_executions.error_message'
'scheduled_executions.last_update_time'
'13' 'sq_ucw'
'host1/hive_20260903173105_818d5ecb-1774-4462-bd48-61938f96f0c0' 'FAILED'
'2026-09-03 17:31:05' '2026-09-03 17:31:05' '0' 'FAILED:
SemanticException [Error 10001]: Line 1:48 Table not found 'tbl_pqa'' 'NULL'
'12' 'sq_ucw'
'host1/hive_20260903172904_2d757695-f189-4eef-9bea-b205aa929a97' 'FAILED'
'2026-09-03 17:29:03' '2026-09-03 17:29:04' '1' 'FAILED:
SemanticException [Error 10001]: Line 1:48 Table not found 'tbl_pqa'' 'NULL'
'11' 'sq_ucw'
'host1/hive_20260903172702_2b06b659-d6df-491c-a13e-42dd174e5797' 'FINISHED'
'2026-09-03 17:27:01' '2026-09-03 17:27:03' '2' 'NULL' 'NULL'
'3' 'sq_ucw'
'host2/hive_20260903173004_b493b2d6-fbcc-4997-8d7e-4555173503d7' 'FAILED'
'2026-09-03 17:30:04' '2026-09-03 17:30:04' '0' 'FAILED:
SemanticException [Error 10001]: Line 1:48 Table not found 'tbl_pqa'' 'NULL'
'2' 'sq_ucw'
'host2/hive_20260903172803_d5fd643e-6902-4502-915c-5bfdc448af55' 'FAILED'
'2026-09-03 17:28:02' '2026-09-03 17:28:03'
'1''scheduled_executions.scheduled_execution_id'
'scheduled_executions.schedule_name'
'scheduled_executions.executor_query_id' 'scheduled_executions.state'
'scheduled_executions.start_time' 'scheduled_executions.end_time'
'scheduled_executions.elapsed' 'scheduled_executions.error_message'
'scheduled_executions.last_update_time'
'13' 'sq_ucw'
'host1/hive_20260903173105_818d5ecb-1774-4462-bd48-61938f96f0c0' 'FAILED'
'2026-09-03 17:31:05' '2026-09-03 17:31:05' '0' 'FAILED:
SemanticException [Error 10001]: Line 1:48 Table not found 'tbl_pqa'' 'NULL'
'3' 'sq_ucw'
'host2/hive_20260903173004_b493b2d6-fbcc-4997-8d7e-4555173503d7' 'FAILED'
'2026-09-03 17:30:04' '2026-09-03 17:30:04' '0' 'FAILED:
SemanticException [Error 10001]: Line 1:48 Table not found 'tbl_pqa'' 'NULL'
'12' 'sq_ucw'
'host1/hive_20260903172904_2d757695-f189-4eef-9bea-b205aa929a97' 'FAILED'
'2026-09-03 17:29:03' '2026-09-03 17:29:04' '1' 'FAILED:
SemanticException [Error 10001]: Line 1:48 Table not found 'tbl_pqa'' 'NULL'
'2' 'sq_ucw'
'host2/hive_20260903172803_d5fd643e-6902-4502-915c-5bfdc448af55' 'FAILED'
'2026-09-03 17:28:02' '2026-09-03 17:28:03' '1'
'11' 'sq_ucw'
'host1/hive_20260903172702_2b06b659-d6df-491c-a13e-42dd174e5797' 'FINISHED'
'2026-09-03 17:27:01' '2026-09-03 17:27:03' '2' 'NULL'
'NULL'{noformat}
Both the test and the actual implementation in ObjectStore expect the IDs to be
an incrementing sequence, but if you check the above output this is not always
the case. The above output is ordered using the ID, and start and end
timestamps should correlate to this, but they don’t.
{noformat}
Sep 03 19:26:00 host2: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:1) thread - renaming accordingly.
Sep 03 19:27:01 host1: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:11) thread - renaming accordingly.
Sep 03 19:28:02 host2: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:2) thread - renaming accordingly.
Sep 03 19:29:03 host1: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:12) thread - renaming accordingly.
Sep 03 19:30:04 host2: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:3) thread - renaming accordingly.
Sep 03 19:31:05 host1: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:13) thread - renaming accordingly.
Sep 03 19:32:05 host2: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:4) thread - renaming accordingly.
Sep 03 19:33:06 host1: Starting Scheduled Query Executor(schedule:sq_ucw,
execution_id:14) thread - renaming accordingly.
Sep 03 19:37:15 host1: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:21) thread - renaming accordingly.
Sep 03 19:38:17 host2: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:22) thread - renaming accordingly.
Sep 03 19:39:18 host1: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:23) thread - renaming accordingly.
Sep 03 19:40:19 host1: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:24) thread - renaming accordingly.
Sep 03 19:41:19 host2: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:25) thread - renaming accordingly.
Sep 03 19:42:20 host1: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:26) thread - renaming accordingly.
Sep 03 19:43:20 host2: Starting Scheduled Query Executor(schedule:sq_wrn,
execution_id:27) thread - renaming accordingly.{noformat}
It shows that for the first scheduled query the two nodes use their own
distinct ID ranges. Gemini theorized, the evidence and the DataNucleus
documentation supports it, that this could be due to ID pre-allocation. From
the DataNucleus JDO Mapping Guide (v6.0)
:[https://www.datanucleus.org/products/accessplatform_6_0/jdo/mapping.html#value_generation]
It looks there are two possible solution:
- disable pre-allocation
- order by based on an other property that is deterministic, instead of the Id
itself (maybe end_time can be a proper candidate)
Related code:
[https://github.com/apache/hive/blob/bfe74f9b3f92188095d50cf103b86431f8aaa821/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java#L2956]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)