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

Opendaylight bundles in GracePeriod and cluster not coming up

我们使用的是 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

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

您也不应尽可能强行终止进程,因为这不会完全关闭端口。