[ 
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]

Reply via email to