Cluster computing 引线切换后Opendaylight数据树中毒

Cluster computing 引线切换后Opendaylight数据树中毒,cluster-computing,apache-karaf,opendaylight,Cluster Computing,Apache Karaf,Opendaylight,我们正在使用ODL的氮版本(SR1)。我们正在尝试2节点集群,当follower成为leader(在运行服务器5-6小时后)时,我们在karaf.log中观察到以下异常。发生以下异常时,我们无法访问MDSAL进行任何读/写操作 我们调用SwitchAllLocalShardState API,根据“Akka成员已删除”事件将跟随者更改为新的领导者 1) “中毒”和“无进展例外”指的是什么 2) 我们作为参数传递给switchAllLocalShardState的“TERM”是否为 引起这个问题。

我们正在使用ODL的氮版本(SR1)。我们正在尝试2节点集群,当follower成为leader(在运行服务器5-6小时后)时,我们在karaf.log中观察到以下异常。发生以下异常时,我们无法访问MDSAL进行任何读/写操作

我们调用SwitchAllLocalShardState API,根据“Akka成员已删除”事件将跟随者更改为新的领导者

1) “中毒”和“无进展例外”指的是什么

2) 我们作为参数传递给switchAllLocalShardState的“TERM”是否为 引起这个问题。如果是,请解释术语的意义 也让我们知道为什么我们只有在 长时间运行服务器


NoProgressException表示您已启用最初在氮气中引入的新的基于tell的。它的设计目的是对瞬时通信故障具有更强的恢复能力,但仍处于试验阶段,并且自2003年以来已进行了修复。我建议禁用它


此外,还有一种更好的方法来实现2节点主/次节点,方法是使次节点不投票,然后在主节点失败时将次节点切换为投票,从而将次节点提升为领导节点。这在“地理冗余”部分的在线群集指南中有记录,该指南对6个节点进行了描述,但您可以将其用于2个节点-相同的概念。

NoProgressException表示您已启用最初在Non中引入的基于tell的新功能。它的设计目的是对瞬时通信故障具有更强的恢复能力,但仍处于试验阶段,并且自2003年以来已进行了修复。我建议禁用它


此外,还有一种更好的方法来实现2节点主/次节点,方法是使次节点不投票,然后在主节点失败时将次节点切换为投票,从而将次节点提升为领导节点。这在地理冗余部分的在线群集指南中有记录,该部分描述了6个节点的群集,但您可以将其用于2个节点-相同的概念。

对NoProgressException和AbstractClientConnection的引用表明您启用了群集数据存储的基于tell的协议(基本上是实验性的)。我不太熟悉基于tell的代码,但我相信NoProgressException意味着事务操作超时。还有什么是“SwitchAllLocalShardState”API?@TomPantelis:谢谢您的及时回复。在JMXbean函数中切换AllLocalShardState以更改所有碎片的碎片状态。我们使用这个JMX Mbean来改变状态,请告诉我们是否有其他方法。我忘记了。我从来没用过。有一种更好的方法可以实现2节点主/次节点,方法是使次节点不投票,然后在主节点失败时将次节点切换为投票,从而将次节点提升为领导节点。这在地理冗余部分的在线集群指南中有记录,该指南描述了6个节点,但您可以将其用于2个节点-相同的概念..感谢@TomPantelis,在将协议更改为“Ask”后,我们没有发现此问题在org.opendaylight.controller.cluster.datastore.cfg中,对NoProgressException和AbstractClientConnection的引用表明您已经启用了集群数据存储的基于tell的协议(这基本上是实验性的)。我不太熟悉基于tell的代码,但我相信NoProgressException意味着事务操作超时。还有什么是“SwitchAllLocalShardState”API?@TomPantelis:谢谢您的及时回复。在JMXbean函数中切换AllLocalShardState以更改所有碎片的碎片状态。我们使用这个JMX Mbean来改变状态,请告诉我们是否有其他方法。我忘记了。我从来没用过。有一种更好的方法可以实现2节点主/次节点,方法是使次节点不投票,然后在主节点失败时将次节点切换为投票,从而将次节点提升为领导节点。这在地理冗余部分的在线集群指南中有记录,该指南描述了6个节点,但您可以将其用于2个节点-相同的概念。感谢@TomPantelis,在org.opendaylight.controller.cluster.datastore.cfg中将协议更改为“Ask”后,我们没有发现此问题
2018-06-04 11:58:25,452 | ERROR | tAdminThread #20  | 130 - com.fujitsu.fnc.sdn.fw-scheduler-odl - 5.1.0.SNAPSHOT | SchedulerServiceImpl | Get Schedule List Transaction failed : ReadFailedException{message=read execution failed, errorList=[RpcError [message=read execution failed, severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=ReadFailedException{message=read execution failed, errorList=[RpcError [message=read execution failed, severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=org.opendaylight.controller.cluster.access.client.NoProgressException: No progress in 31198 seconds]]}]]}
2018-06-04 11:58:25,452 | WARN  | tAdminThread #12  | 261 - com.fujitsu.fnc.sdnfw.security-odl - 5.1.0.SNAPSHOT | IDMLightServer | getContainer: {}
java.util.concurrent.ExecutionException: ReadFailedException{message=read execution failed, errorList=[RpcError [message=read execution failed, severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=org.opendaylight.controller.cluster.access.client.NoProgressException: No progress in 31198 seconds]]}
        at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.wrapInExecutionException(MappingCheckedFuture.java:65)[583:org.opendaylight.yangtools.util:1.2.1]
        at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.get(MappingCheckedFuture.java:78)[583:org.opendaylight.yangtools.util:1.2.1]
        at com.fujitsu.fnc.sdnfw.aaa.idmlight.impl.IDMLightServer.getUsermgmt(IDMLightServer.java:3056)[261:com.fujitsu.fnc.sdnfw.security-odl:5.1.0.SNAPSHOT]
        at com.fujitsu.fnc.sdnfw.aaa.idmlight.impl.IDMLightServer.init(IDMLightServer.java:1977)[261:com.fujitsu.fnc.sdnfw.security-odl:5.1.0.SNAPSHOT]
        at com.fujitsu.fnc.sdnfw.aaa.idmlight.impl.IDMLightServer.handleEvent(IDMLightServer.java:3251)[261:com.fujitsu.fnc.sdnfw.security-odl:5.1.0.SNAPSHOT]
        at Proxyadd8c855_db4c_4e72_b600_2ca57cba8d4d.handleEvent(Unknown Source)[:]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:415)[393:org.apache.karaf.services.eventadmin:4.0.10]
        at org.apache.felix.eventadmin.impl.tasks.HandlerTask.run(HandlerTask.java:90)[393:org.apache.karaf.services.eventadmin:4.0.10]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_66]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_66]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_66]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_66]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_66]
        Suppressed: java.lang.IllegalStateException: Uncaught exception occured during closing transaction
                at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerTransaction.closeSubtransactions(AbstractDOMBrokerTransaction.java:92)[497:org.opendaylight.controller.sal-distributed-datastore:1.6.1]
                at org.opendaylight.controller.cluster.databroker.DOMBrokerReadOnlyTransaction.close(DOMBrokerReadOnlyTransaction.java:50)[497:org.opendaylight.controller.sal-distributed-datastore:1.6.1]
                at org.opendaylight.controller.md.sal.binding.impl.BindingDOMReadTransactionAdapter.close(BindingDOMReadTransactionAdapter.java:36)[484:org.opendaylight.controller.sal-binding-broker-impl:1.6.1]
                at com.fujitsu.fnc.sdnfw.aaa.idmlight.impl.IDMLightServer.getUsermgmt(IDMLightServer.java:3062)[261:com.fujitsu.fnc.sdnfw.security-odl:5.1.0.SNAPSHOT]
                ... 10 more
        Caused by: java.lang.IllegalStateException: Connection ConnectedClientConnection{client=ClientIdentifier{frontend=member-1-frontend-datastore-config, generation=1}, cookie=0, poisoned=org.opendaylight.controller.cluster.access.client.NoProgressException: No progress in 31198 seconds, backend=ShardBackendInfo{actor=Actor[akka.tcp://opendaylight-cluster-data@u446.nms.fnc.fujitsu.com:2550/user/shardmanager-config/member-2-shard-default-config#-1532234096], sessionId=0, version=BORON, maxMessages=1000, cookie=0, shard=default, dataTree=absent}} has been poisoned
                at org.opendaylight.controller.cluster.access.client.AbstractClientConnection.commonEnqueue(AbstractClientConnection.java:198)[467:org.opendaylight.controller.cds-access-client:1.2.1]