Riza Suminto has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/22997 )

Change subject: IMPALA-13801: Support greatest synced event with hierarchical 
metastore event processing
......................................................................


Patch Set 11:

(8 comments)

Thank you for keeping up with my comments.

http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/DbEventExecutor.java
File fe/src/main/java/org/apache/impala/catalog/events/DbEventExecutor.java:

http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/DbEventExecutor.java@317
PS11, Line 317: synchronized (processorLock_) {
              :             if (isTerminating()) return;
              :             Preconditions.checkState(barrierEvents_.poll() == 
barrierEvent);
              :             dbEventExecutor_.decrOutstandingEventCount(1);
              :           }
Should this moved into postProcessEvent()?


http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/DbEventExecutor.java@323
PS11, Line 323: throw new EventProcessException(barrierEvent.getEvent(), e);
In places where EventProcessException is thrown, please leave a comment on what 
will happen next.

I think it will just trigger global IM and reset everything inside 
EventExecutorService?
Is that why the code does not even bother to poll barrierEvents_ and do other 
cleanups?


http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java
File 
fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java:

http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@441
PS9, Line 441: time to dispa
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@502
PS9, Line 502:   long greatestSyncedEventId = p
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java
File fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java:

http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java@628
PS9, Line 628:     // Event creation time. It is initialized in constructor. It 
is not used for
             :     // DerivedMetastoreEvent.
             :     protected final long creationTime_;
             :
             :     // Event dispatch time. It is initialized after dispatching 
event. It is not used for
             :     // DerivedMetastoreEvent
             :     protected long dispatchTime_;
             : 
             :     protected MetastoreEvent(CatalogOpExecutor 
catalogOpExecutor, Metrics metrics,
             :         NotificationEvent event
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java
File fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java:

http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java@628
PS11, Line 628: It is not used for
              :     // DerivedMetastoreEvent.
Even if it is not used, it probably does not hurt to initialize it to 
System.currentTimeMilis().
Thus, it is consistent regardless of type.

Does this means DerivedMetastoreEvent will never reach addToInProgressLog()?


http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEventsProcessor.java
File 
fe/src/main/java/org/apache/impala/catalog/events/MetastoreEventsProcessor.java:

http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEventsProcessor.java@1397
PS11, Line 1397:       dumpEventInfoToLog(event, LocalDateTime.now().toString() 
+ '\n' + msg +
               :           '\n' + ExceptionUtils.getStackTrace(ex));
               :       tryAutoGlobalInvalidateOnFailure();
Have you check inside CatalogD logs if this ever happen? If yes, how often?

Global IM is expensive, and we'll want to minimize it.
We should have metric to track how many time this happen.


http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java
File fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java:

http://gerrit.cloudera.org:8080/#/c/22997/11/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java@332
PS11, Line 332: synchronized (processorLock_) {
              :             if (isTerminating()) return;
              :             Preconditions.checkState(events_.poll() == event);
              :             tableEventExecutor_.decrOutstandingEventCount(1);
              :           }
Should this moved into postProcessEvent()?



--
To view, visit http://gerrit.cloudera.org:8080/22997
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I26240f36aaf85125428dc39a66a2a1e4d3197e85
Gerrit-Change-Number: 22997
Gerrit-PatchSet: 11
Gerrit-Owner: Anonymous Coward <k.venureddy2...@gmail.com>
Gerrit-Reviewer: Anonymous Coward <k.venureddy2...@gmail.com>
Gerrit-Reviewer: Csaba Ringhofer <csringho...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com>
Gerrit-Reviewer: Quanlong Huang <huangquanl...@gmail.com>
Gerrit-Reviewer: Riza Suminto <riza.sumi...@cloudera.com>
Gerrit-Reviewer: Sai Hemanth Gantasala <saihema...@cloudera.com>
Gerrit-Comment-Date: Wed, 25 Jun 2025 22:38:52 +0000
Gerrit-HasComments: Yes

Reply via email to