[
https://issues.apache.org/jira/browse/IMPALA-12827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17820307#comment-17820307
]
Quanlong Huang commented on IMPALA-12827:
-----------------------------------------
Thanks to [~csringhofer] 's pointers, here is a test to reproduce the issue.
Add this custom-cluster test into
tests/custom_cluster/test_events_custom_configs.py
{code:python}
@CustomClusterTestSuite.with_args(catalogd_args="--hms_event_polling_interval_s=100")
def test_commit_compaction_with_abort_txn(self, unique_database):
"""Use a long enough polling interval to allow Hive statements to finish
before
processing the ABORT_TXN event"""
from tests.util.acid_txn import AcidTxn
tbl = unique_database + ".part_table"
acid = AcidTxn(self.hive_client)
self.run_stmt_in_hive(
"create transactional table if not exists {} (i int) partitioned by
(year int)".format(tbl))
# Allocate a write id on this table and abort the txn
txn_id = acid.open_txns()
acid.allocate_table_write_ids(txn_id, unique_database, "part_table")
acid.abort_txn(txn_id)
# Insert some rows and trigger compaction
for i in range(2):
self.run_stmt_in_hive(
"insert into {} partition(year=2024) values (1),(2),(3)".format(tbl))
self.run_stmt_in_hive(
"alter table {} partition(year=2024) compact 'major' and
wait".format(tbl))
# Make Impala loads the table so the latest valid writeIdList is loaded
self.client.execute("invalidate metadata " + tbl)
self.client.execute("describe " + tbl)
# Process the ABORT_TXN event
EventProcessorUtils.wait_for_event_processing(self, timeout=200)
assert EventProcessorUtils.get_event_processor_status() == "ACTIVE" {code}
Add this to $HADOOP_CONF_DIR/hive-site.xml and restart Hive
{code:xml}
<property>
<name>metastore.housekeeping.threads.on</name>
<value>true</value>
</property>{code}
Then run the test. It will fail as
{noformat}
tests/custom_cluster/test_events_custom_configs.py:1174: in
test_commit_compaction_with_abort_txn
EventProcessorUtils.wait_for_event_processing(self, timeout=200)
tests/util/event_processor_utils.py:93: in wait_for_event_processing
EventProcessorUtils.wait_for_synced_event_id(timeout, current_event_id)
tests/util/event_processor_utils.py:65: in wait_for_synced_event_id
.format(status, error_msg))
E Exception: Event processor is not working. Status: ERROR. Error msg:
2024-02-24T17:46:54.742
E Unexpected exception received while processing event
E java.lang.IllegalStateException
E at
com.google.common.base.Preconditions.checkState(Preconditions.java:496)
E at
org.apache.impala.hive.common.MutableValidReaderWriteIdList.addAbortedWriteIds(MutableValidReaderWriteIdList.java:276)
E at org.apache.impala.catalog.HdfsTable.addWriteIds(HdfsTable.java:3099)
E at
org.apache.impala.catalog.CatalogServiceCatalog.addWriteIdsToTable(CatalogServiceCatalog.java:3966)
E at
org.apache.impala.catalog.events.MetastoreEvents$AbortTxnEvent.addAbortedWriteIdsToTables(MetastoreEvents.java:3044)
E at
org.apache.impala.catalog.events.MetastoreEvents$AbortTxnEvent.process(MetastoreEvents.java:3030)
E at
org.apache.impala.catalog.events.MetastoreEvents$MetastoreEvent.processIfEnabled(MetastoreEvents.java:682)
E at
org.apache.impala.catalog.events.MetastoreEventsProcessor.processEvents(MetastoreEventsProcessor.java:1211)
E at
org.apache.impala.catalog.events.MetastoreEventsProcessor.processEvents(MetastoreEventsProcessor.java:978)
E at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
E at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
E at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
E at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
E at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
E at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
E at java.lang.Thread.run(Thread.java:750)
E
E Notification event is null{noformat}
> Precondition was hit in MutableValidReaderWriteIdList
> -----------------------------------------------------
>
> Key: IMPALA-12827
> URL: https://issues.apache.org/jira/browse/IMPALA-12827
> Project: IMPALA
> Issue Type: Bug
> Reporter: Csaba Ringhofer
> Assignee: Sai Hemanth Gantasala
> Priority: Critical
> Labels: ACID, catalog
>
> The callstack below led to stopping metastore event processor during an abort
> transaction event:
> {code}
> MetastoreEventsProcessor.java:899] Unexpected exception received while
> processing event
> Java exception follows:
> java.lang.IllegalStateException
> at
> com.google.common.base.Preconditions.checkState(Preconditions.java:486)
> at
> org.apache.impala.hive.common.MutableValidReaderWriteIdList.addAbortedWriteIds(MutableValidReaderWriteIdList.java:274)
> at org.apache.impala.catalog.HdfsTable.addWriteIds(HdfsTable.java:3101)
> at
> org.apache.impala.catalog.CatalogServiceCatalog.addWriteIdsToTable(CatalogServiceCatalog.java:3885)
> at
> org.apache.impala.catalog.events.MetastoreEvents$AbortTxnEvent.addAbortedWriteIdsToTables(MetastoreEvents.java:2775)
> at
> org.apache.impala.catalog.events.MetastoreEvents$AbortTxnEvent.process(MetastoreEvents.java:2761)
> at
> org.apache.impala.catalog.events.MetastoreEvents$MetastoreEvent.processIfEnabled(MetastoreEvents.java:522)
> at
> org.apache.impala.catalog.events.MetastoreEventsProcessor.processEvents(MetastoreEventsProcessor.java:1052)
> at
> org.apache.impala.catalog.events.MetastoreEventsProcessor.processEvents(MetastoreEventsProcessor.java:881)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:750)
> {code}
> Precondition:
> https://github.com/apache/impala/blob/2f14fd29c0b47fc2c170a7f0eb1cecaf6b9704f4/fe/src/main/java/org/apache/impala/hive/common/MutableValidReaderWriteIdList.java#L274
> I was not able to reproduce this so far.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]