[
https://issues.apache.org/jira/browse/GRIFFIN-200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16633571#comment-16633571
]
Nikolay Sokolov commented on GRIFFIN-200:
-----------------------------------------
I'd like to bring up few more design aspects:
* Should hooks by synchronous or asynchronous?
* Whether exceptions thrown are able to interrupt action execution?
* Whether single or multiple hooks should be supported?
For example, synchronous interrupting hooks could be useful for job validations
(one would want to limit frequency of job runs, or validate naming conventions).
Synchronous interrupting option feels like the most generic one; also it
follows Hive model, which should be familiar to most of data engineers. To
simplify typical use cases, standard implementations or abstract classes could
be provided. For example, AbstractAsyncHook, SpringIntegrationHook, and so on.
Most of users would go with this option, however advanced users would still
have possibility of deeper integration.
> Lifecycle hooks support
> -----------------------
>
> Key: GRIFFIN-200
> URL: https://issues.apache.org/jira/browse/GRIFFIN-200
> Project: Griffin (Incubating)
> Issue Type: New Feature
> Reporter: Nikolay Sokolov
> Assignee: William Guo
> Priority: Minor
>
> In some environments, users might want to perform certain actions
> before/after job is created, before/after job is activated, before/after job
> is deleted, and so on.
> To fullfill that need, some hook plugin mechanism can be provided, similar to
> what Hive is doing. User would place respective jar files into Service module
> classpath at deployment time, and would specify class names using some
> annotation or using property listing class names (particular mechanism is yet
> to be determined).
> Proposed signature:
> {code:none}
> public interface JobLifecycleHook {
> void beforeAddJob(AbstractJob js) throws Exception;
> void afterAddJob(AbstractJob js) throws Exception;
> void beforeOnAction(AbstractJob job, String action) throws Exception;
> void afterOnAction(AbstractJob job, String action) throws Exception;
> void beforeDeleteJob(AbstractJob job) throws Exception;
> void afterDeleteJob(AbstractJob job) throws Exception;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)