zhuangchong commented on a change in pull request #4645:
URL:
https://github.com/apache/incubator-dolphinscheduler/pull/4645#discussion_r567773059
##########
File path:
dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
##########
@@ -129,9 +134,20 @@ private void runSender() {
if (alertPluginManager == null ||
alertPluginManager.getAlertChannelMap().size() == 0) {
logger.warn("No Alert Plugin . Can not send alert info. ");
} else {
- List<Alert> alerts = alertDao.listWaitExecutionAlert();
- alertSender = new AlertSender(alerts, alertDao,
alertPluginManager);
- alertSender.run();
+ InterProcessMutex mutex = null;
+ try {
+ logger.error("创建分布式锁 : ");
+ mutex = zookeeperClient.getAlertLockPath();
+ mutex.acquire();
+ List<Alert> alerts = alertDao.listWaitExecutionAlert();
+ alertSender = new AlertSender(alerts, alertDao,
alertPluginManager);
+ alertSender.run();
+ } catch (Exception e) {
+ logger.error("alert server with error : ", e);
+ } finally {
+ zookeeperClient.release(mutex);
+
+ }
Review comment:
Distributed locking is so granularity that only one alert-server is
active at any one time. If this is the case, it feels unnecessary to deploy
multiple nodes of this alert-server. Alert-server distributed locks are at
least task-level granularity.
---
分布式锁的粒度很大,同一时间只有一个alert-server在工作,如果是这样,感觉这个alert-server的多节点部署没有必要。alert-server
分布式锁的粒度至少是到任务级别的。
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]