Uploaded image for project: 'sfc'
  1. sfc
  2. SFC-167

RSP is not found

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • None
    • unspecified
    • General
    • None
    • Operating System: All
      Platform: All

    • 7039

      We are having a blocking issue in a OPNFV SFC test case with the classifier (we are using old netvirt “odl-ovsdb-openstack” and the official SR0 of Boron). We don’t understand why but the first time we create a classification rule, no classification flows appear in the pipeline (table=11 only has the default flow pointing to table=21). However, if we delete that rule and create a new one, then it works.

      These are the logs we get in karaf.log the first time we try (not working):

      http://pastebin.com/akTeSrz6

      These are the logs we get in karaf.log the second time we try (after deleting the previous classifier rule. This works!):

      http://pastebin.com/P8LQwUiN

      As you can observe, both fail to get a rsp when trying getRenderedServicePath but the second time we try, it seems as if it tries again to get the rsp and gets it. Note, that before the creation of the classifier was triggered, I queried ODL to check if the RSP was there and yes, it was there. Here are two screenshots with the stack at the moment when it tries to read the rsp from md-sal:

      Not working: https://www.dropbox.com/s/38dy03nnxiclbv3/capture%20-%20not%20working.PNG?dl=0

      Working: https://www.dropbox.com/s/9y8uhv5u96xyrb8/Capture%20-%20working%20%281%29.PNG?dl=0

      That is line 71 of SfcUtils.java:

      return mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, getRspId(rspName));

      The “capture – not working” shows the stack when it will return rsp = null. The “capture working” shows the stack when it returns a correct rsp and consequently, correct flows rules are written in the pipeline. Observe that when it works, the call was triggered from “removeClassifierRules” and when it does not work, the call is triggered by “addClassifierRules”. In other words, the log output rsp=null is a result of calling the method “addClassifierRules”, whereas the log output where rsp is not null is a result of calling the method “removeClassifierRules”. As you can see in the second logs, I don’t understand why but when we create the second classifier, both methods are called, first “addClassifierRules” and afterwards “removeClassifierRules”.

      I also noticed that when I remove a classifier rule, it does not get deleted from the pipeline unless I create a classifier rule. So it is as if the deletion task is pending until a creation task appears and then, the creation task checks if there are any deletion tasks to be done.

      So, my hypothesis is: the code only gets the right rsp when removing the classifier rules. This removal action is triggered when calling the creation of rules and then it removes the rules which must be removed and adds the appropriate rules. When we try the first time, as there is nothing to be deleted, it does not work because only the method “addClassifierRules” is called and that one, for unkown reasons to me, fails to get the rsp.

            Unassigned Unassigned
            mbuil@suse.com Manuel Buil
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: