[NIC-21] VTN Renderer: ERROR messages when an intent is created Created: 18/Feb/16  Updated: 19/Oct/17  Resolved: 24/Feb/16

Status: Resolved
Project: nic
Component/s: General
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Hideyuki Tai Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 5389

 Description   

Version: Beryllium
Feature: odl-nic-renderer-vtn

When I created an intent, I saw the following ERROR messages in the karaf.log file.

2016-02-17 04:54:25,428 | INFO | lt-dispatcher-65 | VTNRendererUtility | 484 - org.opendaylight.nic.vtn-renderer - 1.1.0.SNAPSHOT | The intent status is inserted successfully
2016-02-17 04:54:25,428 | ERROR | lt-dispatcher-17 | LocalThreePhaseCommitCohort | 143 - org.opendaylight.controller.sal-distributed-datastore - 1.3.0.SNAPSHOT | Failed to prepare transaction member-1-txn-141-1455684865427 on backend
org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException: Child (urn:opendaylight:intent?revision=2015-01-22)status is not valid child according to schema.
at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyStructure(AbstractNodeContainerModificationStrategy.java:55)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyStructure(AbstractNodeContainerModificationStrategy.java:53)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.MinMaxElementsValidation.verifyStructure(MinMaxElementsValidation.java:135)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyStructure(AbstractNodeContainerModificationStrategy.java:53)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.StructuralContainerModificationStrategy.verifyStructure(StructuralContainerModificationStrategy.java:104)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.ModifiedNode.seal(ModifiedNode.java:289)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractReadyIterator.process(AbstractReadyIterator.java:45)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.ready(InMemoryDataTreeModification.java:280)[59:org.opendaylight.yangtools.yang-data-impl:0.8.0.SNAPSHOT]
at org.opendaylight.controller.sal.core.spi.data.SnapshotBackedWriteTransaction.ready(SnapshotBackedWriteTransaction.java:139)[115:org.opendaylight.controller.sal-core-spi:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.LocalTransactionFactoryImpl.onTransactionReady(LocalTransactionFactoryImpl.java:84)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.LocalTransactionContext.ready(LocalTransactionContext.java:74)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.LocalTransactionContext.directCommit(LocalTransactionContext.java:85)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.getReadyOrDirectCommitFuture(TransactionProxy.java:275)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.createSingleCommitCohort(TransactionProxy.java:261)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.ready(TransactionProxy.java:228)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.TransactionProxy.ready(TransactionProxy.java:52)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.submit(AbstractDOMBrokerWriteTransaction.java:134)[143:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.doSubmit(AbstractWriteTransaction.java:134)[118:org.opendaylight.controller.sal-binding-broker-impl:1.3.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMWriteTransactionAdapter.submit(BindingDOMWriteTransactionAdapter.java:83)[118:org.opendaylight.controller.sal-binding-broker-impl:1.3.0.SNAPSHOT]
at org.opendaylight.nic.vtn.renderer.VTNRendererUtility.addIntent(VTNRendererUtility.java:172)[484:org.opendaylight.nic.vtn-renderer:1.1.0.SNAPSHOT]
at org.opendaylight.nic.vtn.renderer.VTNIntentParser.rendering(VTNIntentParser.java:228)[484:org.opendaylight.nic.vtn-renderer:1.1.0.SNAPSHOT]
at org.opendaylight.nic.vtn.renderer.VTNRenderer.intentParser(VTNRenderer.java:220)[484:org.opendaylight.nic.vtn-renderer:1.1.0.SNAPSHOT]
at org.opendaylight.nic.vtn.renderer.VTNRenderer.onDataChanged(VTNRenderer.java:124)[484:org.opendaylight.nic.vtn-renderer:1.1.0.SNAPSHOT]

I observed the same ERROR messages on the CSIT for Beryllium VTN Renderer as well.
https://jenkins.opendaylight.org/releng/view/nic/job/nic-csit-1node-vtnrenderer-only-beryllium/28/artifact/karaf.log



 Comments   
Comment by Hideyuki Tai [ 18/Feb/16 ]

I think that the VTN Renderer tried to add an intent into the CONFIGURATION data store.
However, the VTN Renderer set a value into the "status" of the intent.

The ERROR happened at VTNRendererUtility.java:172.

vtn-renderer/src/main/java/org/opendaylight/nic/vtn/renderer/VTNRendererUtility.java

161 public boolean addIntent(Intent intent, Status isStatus) {
162 Intents intents;
163 List<Intent> listOfIntents = listIntents();
164 try {
165 InstanceIdentifier<Intents> identifier = InstanceIdentifier.builder(Intents.class).build();
166 Intent intentData = new IntentBuilder().setId(intent.getId()).setStatus(isStatus).build();
167
168 listOfIntents.add(intentData);
169 intents = new IntentsBuilder().setIntent(listOfIntents).build();
170 WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
171 tx.put(LogicalDatastoreType.CONFIGURATION, identifier, intents);
172 tx.submit();

However, according to the intent.yang, the "status" is not configurable.

intent-api/src/main/yang/intent.yang

23 grouping intent {
24 description "An intent specifies two subjects and a list of actions that specific
25 the desired connectivity state between those subjects.";
(snip)
32 leaf status {
33 type enumeration

{ 34 enum "pending"; 35 enum "completed-success"; 36 enum "completed-error"; 37 }

38 config false;

I think that's why the ERROR happened.

First of all, I think the VTN Renderer should add operatinal intent information into the OPERATIONAL data store.

Comment by Hideyuki Tai [ 24/Feb/16 ]

The following patches fixed the bug.

https://git.opendaylight.org/gerrit/#/c/35338/ (master)
https://git.opendaylight.org/gerrit/#/c/34991/ (stable/beryllium)

Generated at Wed Feb 07 20:26:00 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.