GracePeriod和群集中的Opendaylight捆绑包没有出现

时间:2018-07-03 22:33:36

标签: akka akka-stream apache-karaf opendaylight akka-cluster

我们正在使用ODL Nitrogen版本。当我们执行热启动(即,重新启动Karaf服务器,而没有删除“ KARAF_HOME / data”文件夹)之后,捆绑软件长时间处于“ GracePeriod”状态,因此依赖于此的其他应用程序捆绑软件将失败。但是,当我们启动时karaf处于干净状态(没有数据文件夹),所有捆绑包都正常运行。

我们还注意到,当捆绑包进入故障状态时,netty.tcp端口2550未被绑定。确认此端口也未被其他进程使用。

349 | GracePeriod |  80 | 2.3.3                               | mdsal-eos-binding-adapter
350 | Active      |  80 | 2.3.3                               | mdsal-eos-binding-api
351 | Active      |  80 | 2.3.3                               | mdsal-eos-common-api
352 | Active      |  80 | 2.3.3                               | mdsal-eos-common-spi
376 | GracePeriod |  80 | 2.3.3                               | mdsal-singleton-dom-impl
142 | Active      |  80 | 2.4.20                              | akka-actor
143 | Active      |  80 | 2.4.20                              | akka-cluster
144 | Active      |  80 | 2.4.20                              | akka-osgi
145 | Active      |  80 | 2.4.20                              | akka-persistence
146 | Active      |  80 | 2.4.20                              | akka-protobuf
147 | Active      |  80 | 2.4.20                              | akka-remote
148 | Active      |  80 | 2.4.20                              | akka-slf4j
149 | Active      |  80 | 2.4.20                              | akka-stream
310 | Active      |  80 | 1.6.3                               | org.opendaylight.controller.sal-akka-raft

我们还观察到以下日志持续滚动,并且只有此消息非常频繁地出现。似乎它不允许任何其他捆绑包共同执行。

2018-07-02 22:52:47,299 | WARN  | saction-25-27'}}  | 298 - org.opendaylight.controller.config-manager - 0.7.3 | DeadlockMonitor$DeadlockMonitorRunnable | ModuleIdentifier{factoryName='binding-broker-impl', instanceName='binding-broker-impl'} did not finish after 84984 ms

2018-07-02 22:52:50,717 | ERROR | rint Extender: 3  | 325 - org.opendaylight.controller.sal-distributed-datastore - 1.6.3 | AbstractDataStore | Shard leaders failed to settle in 90 seconds, giving up

Graceperiod捆绑软件的诊断输出

karaf@virtuora>diag 349
mdsal-eos-binding-adapter (349)
-------------------------------
Status: GracePeriod
Blueprint
7/3/18 6:17 PM
Missing dependencies:
(objectClass=org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer) (objectClass=org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService)

karaf@virtuora>diag 376
mdsal-singleton-dom-impl (376)
------------------------------
Status: GracePeriod
Blueprint
7/3/18 6:22 PM
Missing dependencies:
(objectClass=org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService)

请告知我们

  1. 为什么akka无法打开netty tcp端口
  2. 为什么使用DOMEntityOwnershipService和BindingNormalizedNodeSerializer

1 个答案:

答案 0 :(得分:1)

您需要设置SO_REUSEADDR以使端口在关闭后可以直接重用。参见https://docs.oracle.com/javase/7/docs/api/java/net/StandardSocketOptions.html#SO_REUSEADDR 如果未设置此选项,则端口将在一段时间内保持阻塞状态,具体取决于操作系统。

如果可能的话,也不要强行终止进程,因为这不会彻底关闭端口。