[CONTROLLER-833] sal-compatiblity does not register some services. Created: 14/Sep/14 Updated: 19/Oct/17 Resolved: 05/May/15 |
|
| Status: | Resolved |
| Project: | controller |
| Component/s: | adsal |
| Affects Version/s: | Helium |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Hideyuki Tai | Assignee: | Hideyuki Tai |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| Issue Links: |
|
||||||||
| External issue ID: | 1866 | ||||||||
| Description |
|
sal-comaptiblity does not register the following services with AD-SAL. + IPluginInReadService Therefore, for example, an AS-SAL application cannot get flow statistics from the MD-SAL OF plugin, because sal-compatibility does not register IPluginInReadService. For instance, we saw the following ERROR message, because sal-compatiblity does not register IPluginInInventoryService with AD-SAL. WARN o.o.c.s.i.internal.ReadService - Plugin OF unavailable |
| Comments |
| Comment by Hideyuki Tai [ 15/Sep/14 ] | ||||||||||
|
Please let me add more information on the first example. More precisely, when an AD-SAL application calls IStatisticsManager.getFlowsNoCache(Node), it fails to get up-to-date flow statistics. The implmentation of IStatisticsManager.getFlowsNoCache(Node) calls IReadService.nonCachedReadAllFlows(Node), and the implementation of IReadService.nonCachedReadAllFlows(Node) calls IPluginInReadService.readAllFlow(Node, boolean). On the other hand, the implementation of IStatisticsManager.getFlows(Node) uses cached data, and does not call methods of IPluginInReadService. The Northbound interface internally calls IStatisticsManager.getFlows(Node), and does not call IStatisticsManager.getFlowsNoCache(Node). | ||||||||||
| Comment by Hideyuki Tai [ 16/Sep/14 ] | ||||||||||
|
Hi Tony, Thank you for updating the bug report. Could you explain why you changed the "Product" of this report from controller to openflowplugin? | ||||||||||
| Comment by Ed Warnicke [ 17/Sep/14 ] | ||||||||||
|
This is very strange, if you look at InventoryAndReadAdapter it implements IPluginInReadService, IPluginInInventoryService and ComponentActivator registers them. Running in karaf: opendaylight-user@root>feature:install odl-adsal-compatibility MD-SAL to AD-SAL Adaptation (193) provides: Which basically shows that those services are in fact present and provided by odl-adsal-compatiblity. | ||||||||||
| Comment by Hideyuki Tai [ 17/Sep/14 ] | ||||||||||
|
(In reply to Ed Warnicke from comment #3) Yes, this is very strange. I've observed the same result Ed got. Running in karaf (RC1): feature:install odl-adsal-compatibility bundle:list -s | grep compat bundle:services 190 MD-SAL to AD-SAL Adaptation (190) provides: The sal-compatibility registers the following two services with dependency manager. However, the correspondent AD-SAL methods are not called. However, I've confirmed that the ReadService.setService method is not called. log:set TRACE org.opendaylight.controller.sal.implementation If the ReadService.setService method is called, I guess I can see the following TRACE message. Received set service request: org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter However, I couldn't see the above line.
We guess that the root cause of this issue is sal-compatibility registers the two services as "global services". On the other hand, AD-SAL openflow plugin registers the above services as "container services" | ||||||||||
| Comment by Hideyuki Tai [ 19/Sep/14 ] | ||||||||||
|
It seems to me that the bug is in sal-compatibility of Controller project. And, there are no analysis from anyone which indicates that the root cause of this issue is in OpenFlow plugin project. Therefore, I've reverted the "Product" of this bug from openflowplugin to controller. | ||||||||||
| Comment by Michal Rehak [ 20/Sep/14 ] | ||||||||||
|
https://git.opendaylight.org/gerrit/#/c/11400/ Hi, I pushed a patch which:
But there seems to be no change in output of vtn/../detail url. @Hideyuki: could you please test this patch a check if there is something wrong behind invocation of ReadService.nonCachedReadAllFlows()? Thank you. | ||||||||||
| Comment by Hideyuki Tai [ 21/Sep/14 ] | ||||||||||
|
(In reply to michal rehak from comment #6) (snip) > Hi Michal, I've pulled the above patch, and tested the First, I saw the following TRACE log message. 2014-09-20 20:24:13,151 | TRACE | Local user karaf | ReadService | 175 - org.opendaylight.controller.sal.implementation - 0.4.2.SNAPSHOT | Received set service request: org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter@26b0df73 I think it meant that sal-compatibility correctly registered InventoryAndReadAdapter (which implements IPluginInReadService). Secondly, I didn't see the following WARN message. Plugin OF unavailable I think that indicates that sal-compatibility successfully registered IPluginInInventoryService with AD-SAL. Thirdly, I observed that VTN Manager (an AD-SAL application) successfully got up-to-date flow statistics. Therefore, VTN project would be very happy if controller project merges this patch. Thank you! | ||||||||||
| Comment by Ed Warnicke [ 21/Sep/14 ] | ||||||||||
| Comment by Carol Sanders [ 05/May/15 ] | ||||||||||
|
This bug is part of the project to Move all ADSAL associated component bugs to ADSAL. |