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 9:

(15 comments)

http://gerrit.cloudera.org:8080/#/c/22997/6/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/6/fe/src/main/java/org/apache/impala/catalog/events/DbEventExecutor.java@269
PS6, Line 269: getEventProcessor();
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/9/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/9/fe/src/main/java/org/apache/impala/catalog/events/DbEventExecutor.java@682
PS9, Line 682:     } catch (EventProcessException e) {
             :       LOG.error("Exception occurred for executor: {}", name_);
             :       
eventProcessor_.handleEventProcessException(e.getException(), e.getEvent());
             :     }
What happen if other Exception happen (not an EventProcessException)? How to 
handle them?


http://gerrit.cloudera.org:8080/#/c/22997/6/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/6/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@81
PS6, Line 81:   // In-progress event log. Maintains the metastore events 
waiting to be processed on
            :   // executors. It is a map of metastore event id to the pair of 
metastore event and
            :   // whether it is del
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/6/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@86
PS6, Line 86: ng. The delimite
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/6/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@178
PS6, Line 178:
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/6/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@449
PS6, Line 449: // Reinitialize with the current
> We use the same field to determine the time taken for event dispatch and ev
I strongly suggest using different field for different purpose. See my reason 
here: https://gerrit.cloudera.org/c/22997/9#637


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: dispatch time
"time to dispatch" is better.


http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/EventExecutorService.java@502
PS9, Line 502: private void pruneProcessedLog()
Mark this method synchronized because processedLog_ is mutated below.
Calling synchronized method from another synchronized method should be fine.


http://gerrit.cloudera.org:8080/#/c/22997/6/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/6/fe/src/main/java/org/apache/impala/catalog/events/MetastoreEvents.java@637
PS6, Line 637: protected long recordTime_;
> We use the same field to determine the time taken for event dispatch and ev
I strongly suggest using different field for different purpose. See my reason 
here: https://gerrit.cloudera.org/c/22997/9#637


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:     // To record the current time in milliseconds. It can be 
used to calculate the time
             :     // taken for the particular operation like, event dispatch 
time, processing
             :     // time etc. It is initialized when MetastoreEvent object is 
created. And it is reset
             :     // with new time at the end of dispatch after logging the 
dispatch time. i.e., time
             :     // taken from actual MetastoreEvent object creation until 
all its associated
             :     // DerivedMetastoreEvent are dispatched. A log is added 
after processing the event to
             :     // show the processing time. i.e., time taken after dispatch 
until the actual
             :     // MetastoreEvent (i.e., all its associated 
DerivedMetastoreEvent) is processed.
             :     // This field is not used for DerivedMetastoreEvent.
             :     protected long recordTime_;
The code should be self explanatory.
Reusing 1 field for 2 different purpose will cause potential bug in the future 
if other contributor does not read this documentation.

Please separate it to 2 different fields: creationTime_ and dispatchTime_.
Please guarantee that once they are set, they can not be mutated again.


http://gerrit.cloudera.org:8080/#/c/22997/6/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/6/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java@179
PS6, Line 179:
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/6/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java@249
PS6, Line 249: e void postProcessEvent(MetastoreEve
> We can have DbBarrierEvent that need to ignored. Have refactored now such t
New code in patch set 9 looks OK. Thanks for the explanation.


http://gerrit.cloudera.org:8080/#/c/22997/6/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java@472
PS6, Line 472:       for (Map.Entry<String, TableProcessor> entry : 
tableProcessors_.entrySet()) {
             :         TableProcessor tableProcessor = entry.getValue();
             :         if (!eventProcessor_.canProcessEventInCurrentStatus()) 
break;
             :
> Done
Done


http://gerrit.cloudera.org:8080/#/c/22997/9/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/9/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java@330
PS9, Line 330: if (!isProcessed) return;
Please remind me, what happen in this situation? Is the event retried or 
discarded?


http://gerrit.cloudera.org:8080/#/c/22997/9/fe/src/main/java/org/apache/impala/catalog/events/TableEventExecutor.java@477
PS9, Line 477: } catch (EventProcessException e) {
             :       LOG.error("Exception occurred for executor: {}", name_);
             :       
eventProcessor_.handleEventProcessException(e.getException(), e.getEvent());
             :     }
What happen if other Exception happen (not an EventProcessException)? How to 
handle them?



--
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: 9
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: Tue, 24 Jun 2025 15:45:19 +0000
Gerrit-HasComments: Yes

Reply via email to