首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用SchedulerStateManagerAdaptor更新Heron拓扑

无法使用SchedulerStateManagerAdaptor更新Heron拓扑
EN

Stack Overflow用户
提问于 2018-07-03 16:55:45
回答 2查看 26关注 0票数 0

当我尝试创建Heron的自定义调度器,并使用SchedulerStateManagerApaptor对象更新拓扑时,发生了以下异常:

代码语言:javascript
复制
Exception in thread java.util.ConcurrentModificationException: The update lock can not be obtained for topology AuroraMonitorSentenceWordCountTopology. Another actor is performing an update on it. Failing this request, try again once current update is complete
    at com.twitter.heron.scheduler.UpdateTopologyManager.updateTopology(UpdateTopologyManager.java:117)
    at zyt.custom.my.scheduler.aurora.AuroraHotEdgeSchedulerWithTxtLog.triggerSchedule(AuroraHotEdgeSchedulerWithTxtLog.java:323)
    at zyt.custom.my.scheduler.aurora.AuroraHotEdgeSchedulerWithTxtLog.access$400(AuroraHotEdgeSchedulerWithTxtLog.java:55)
    at zyt.custom.my.scheduler.aurora.AuroraHotEdgeSchedulerWithTxtLog$2.run(AuroraHotEdgeSchedulerWithTxtLog.java:258)
    at java.lang.Thread.run(Thread.java:748)

实例化SchedulerStateManagerAdaptor对象的代码如下:

代码语言:javascript
复制
Config config = Config.toClusterMode(this.config);
String stateMgrClass = Context.stateManagerClass(config); // get state manager instance
IStateManager stateMgr = null;
try {
    stateMgr = ReflectionUtils.newInstance(stateMgrClass);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
    e.printStackTrace();
}
stateMgr.initialize(config);
return stateManagerAdaptor = new SchedulerStateManagerAdaptor(stateMgr, 1000); // 5000: timeout

如何修复此异常?谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

发布于 2018-07-04 00:16:04

您是否正在尝试创建一个新的Aurora调度程序?

票数 0
EN

Stack Overflow用户

发布于 2018-07-04 02:17:51

根据异常消息,当调度第二个更新操作时,有一个更新操作正在进行。第一个正在进行的操作阻止了第二个操作的进行。

那么,您可以干净利落地尝试更新操作吗?另外,请检查更新完成后,您的实现是否正确地释放了锁?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51150431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档