This is an automated email from the ASF dual-hosted git repository. stigahuang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit 367793fa1ee218b77cbb259650b3709e257908bf Author: Sai Hemanth Gantasala <[email protected]> AuthorDate: Fri Jun 23 19:17:58 2023 -0700 IMPALA-12213: Verify if the table exists in the event processor for reload event When a reload event is being processed in the event processor, it is ideal to verify if the table exists before checking if the event is older. In the production use case, it is very likely that create and reload events for a same table comes in the same batch of events and this might lead to null pointer exception while processing reload event since the table does not exist in the cache. Testing: Added an end-to-end test case to simulate the above scenario and verify that event processor is in active state at the end of the test. Change-Id: I6bf7f596154e3695b7eea723d8cd3b0f7bda83cb Reviewed-on: http://gerrit.cloudera.org:8080/20117 Reviewed-by: Impala Public Jenkins <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- .../org/apache/impala/catalog/events/MetastoreEvents.java | 2 +- tests/custom_cluster/test_events_custom_configs.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java b/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java index b9d1334e9..11aa1e407 100644 --- a/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java +++ b/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java @@ -2603,7 +2603,7 @@ public class MetastoreEvents { } private boolean isOlderEvent() { - if (tbl_ instanceof IncompleteTable) { + if (tbl_ == null || tbl_ instanceof IncompleteTable) { return false; } // Always check the lastRefreshEventId on the table first for table level refresh diff --git a/tests/custom_cluster/test_events_custom_configs.py b/tests/custom_cluster/test_events_custom_configs.py index 0a53c31f7..0e8a9cd28 100644 --- a/tests/custom_cluster/test_events_custom_configs.py +++ b/tests/custom_cluster/test_events_custom_configs.py @@ -297,6 +297,20 @@ class TestEventProcessingCustomConfigs(CustomClusterTestSuite): part_events_skipped_after = EventProcessorUtils.get_num_skipped_events() assert part_events_skipped_after > part_events_skipped_before + # Test to verify IMPALA-12213 + table = self.hive_client.get_table(unique_database, test_reload_table) + table.dbName = unique_database + table.tableName = "test_sequence_table" + self.hive_client.create_table(table) + data = FireEventRequestData() + data.refreshEvent = True + req = FireEventRequest(True, data) + req.dbName = unique_database + req.tableName = "test_sequence_table" + self.hive_client.fire_listener_event(req) + EventProcessorUtils.wait_for_event_processing(self) + assert EventProcessorUtils.get_event_processor_status() == "ACTIVE" + @CustomClusterTestSuite.with_args(catalogd_args="--hms_event_polling_interval_s=1") def test_commit_compaction_events(self, unique_database):
