Weizisheng created IMPALA-12181:
-----------------------------------

             Summary: Catalogd can't process hms event once adding an already 
exists partition
                 Key: IMPALA-12181
                 URL: https://issues.apache.org/jira/browse/IMPALA-12181
             Project: IMPALA
          Issue Type: Bug
          Components: Catalog, Frontend
    Affects Versions: Impala 3.4.0
            Reporter: Weizisheng


Add a already exists parttion from Hive using 
{code:java}
alter table xxx add if not exists partition (ds="***"){code}
Impala will received 2 events, the 1st one contains no partition and the 2nd 
one contains the existing partition but with null parameters which will cause 
NPE, then event process status turns to ERROR...
{code:java}
I0526 17:14:57.637362  2146 MetastoreEventsProcessor.java:482] Received 2 
events. Start event id : 12
I0526 17:14:57.652266  2146 MetastoreEvents.java:233] Total number of events 
received: 2 Total number of events filtered out: 0
I0526 17:14:57.652372  2146 MetastoreEvents.java:366] EventId: 13 EventType: 
ADD_PARTITION Partition list is empty. Ignoring this event.
E0526 17:14:57.654448  2146 MetastoreEventsProcessor.java:527] Unexpected 
exception received while processing event
Java exception follows:
java.lang.NullPointerException
    at java.util.HashMap.putMapEntries(HashMap.java:501)
    at java.util.HashMap.putAll(HashMap.java:785)
    at 
org.apache.impala.catalog.events.MetastoreEvents$AddPartitionEvent.getSelfEventContext(MetastoreEvents.java:1320)
    at 
org.apache.impala.catalog.events.MetastoreEvents$MetastoreEvent.isSelfEvent(MetastoreEvents.java:425)
    at 
org.apache.impala.catalog.events.MetastoreEvents$AddPartitionEvent.process(MetastoreEvents.java:1333)
    at 
org.apache.impala.catalog.events.MetastoreEvents$MetastoreEvent.processIfEnabled(MetastoreEvents.java:311)
    at 
org.apache.impala.catalog.events.MetastoreEventsProcessor.processEvents(MetastoreEventsProcessor.java:615)
    at 
org.apache.impala.catalog.events.MetastoreEventsProcessor.processEvents(MetastoreEventsProcessor.java:513)
    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:748)
E0526 17:14:57.654541  2146 MetastoreEventsProcessor.java:637] Notification 
event is null
W0526 17:14:58.654865  2146 MetastoreEventsProcessor.java:506] Event processing 
is skipped since status is ERROR. Last synced event id is 13 {code}
PS:

before reporting this issue i've already found IMPALA-8847 and seems it's been 
fixed in Impala-3.3.0. I'm using Impala-3.4.0 with Hive-3.1.0

From 
[https://github.com/apache/impala/commit/0ff4f45#diff-531be00fa82d527a36363426497585e5cfcfaabba18766ef875d609c8151975fR1372]

, IMPALA-8847 Ignore such events when {{addedPartitions_.isEmpty()}} is ture. 
But as i said, hms will generate 2 events. The 1st event can be ignore, the 2nd 
one will be handled...



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to