getPort from frames is buggy...reverting to gremlin
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index 5c01af6..0ab52e2 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -94,8 +94,7 @@
vportDst = conn.utils().searchPort(conn, dpid, port);
if (vportSrc != null && vportDst != null) {
-
-
+
// check if the link exists
List<IPortObject> currLinks = new ArrayList<IPortObject>();
Iterable<IPortObject> currPorts = vportSrc.getLinkedPorts();
@@ -111,13 +110,13 @@
new Object[]{op, lt, vportSrc, vportDst});
}
} else {
- graph.addEdge(null, vportSrc.asVertex(), vportDst.asVertex(), "link");
- graph.stopTransaction(Conclusion.SUCCESS);
+ conn.getFramedGraph().addEdge(null, vportSrc.asVertex(), vportDst.asVertex(), "link");
+ conn.endTx(Transaction.COMMIT);
log.debug("addOrUpdateLink(): link added {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
}
} else {
log.error("addOrUpdateLink(): failed invalid vertices {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
- graph.stopTransaction(Conclusion.FAILURE);
+ conn.endTx(Transaction.ROLLBACK);
}
} catch (TitanException e) {
/*
diff --git a/src/main/java/net/onrc/onos/util/GraphDBConnection.java b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
index 78f26ea..2f30806 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
@@ -5,16 +5,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.esotericsoftware.minlog.Log;
import com.thinkaurelius.titan.core.TitanFactory;
import com.thinkaurelius.titan.core.TitanGraph;
import com.tinkerpop.blueprints.TransactionalGraph;
-import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.TransactionalGraph.Conclusion;
-import com.tinkerpop.blueprints.util.wrappers.event.EventGraph;
+import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.util.wrappers.event.EventTransactionalGraph;
-import com.tinkerpop.blueprints.util.wrappers.event.EventTransactionalIndexableGraph;
-import com.tinkerpop.blueprints.util.wrappers.event.listener.GraphChangedListener;
import com.tinkerpop.frames.FramedGraph;
public class GraphDBConnection {
@@ -85,7 +81,7 @@
return utils;
}
- protected FramedGraph<TitanGraph> getFramedGraph() {
+ public FramedGraph<TitanGraph> getFramedGraph() {
if (isValid()) {
FramedGraph<TitanGraph> fg = new FramedGraph<TitanGraph>(graph);
@@ -121,12 +117,17 @@
}
public void endTx(Transaction tx) {
- switch (tx) {
- case COMMIT:
- graph.stopTransaction(Conclusion.SUCCESS);
- case ROLLBACK:
- graph.stopTransaction(Conclusion.FAILURE);
- }
+ try {
+ switch (tx) {
+ case COMMIT:
+ graph.stopTransaction(Conclusion.SUCCESS);
+ case ROLLBACK:
+ graph.stopTransaction(Conclusion.FAILURE);
+ }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
public void endTx(TransactionHandle tr, Transaction tx) {
diff --git a/src/main/java/net/onrc/onos/util/GraphDBUtils.java b/src/main/java/net/onrc/onos/util/GraphDBUtils.java
index 92b8205..eea57fd 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBUtils.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBUtils.java
@@ -55,24 +55,24 @@
@Override
public IPortObject searchPort(GraphDBConnection conn, String dpid, short number) {
ISwitchObject sw = searchSwitch(conn, dpid);
- if (sw != null) {
-
- IPortObject port = null;
- try {
- port = sw.getPort(number);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return port;
- }
- return null;
- /* GremlinPipeline<Vertex, IPortObject> pipe = new GremlinPipeline<Vertex, IPortObject>();
+// if (sw != null) {
+//
+// IPortObject port = null;
+// try {
+// port = sw.getPort(number);
+// } catch (Exception e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+//
+// return port;
+// }
+// return null;
+ GremlinPipeline<Vertex, IPortObject> pipe = new GremlinPipeline<Vertex, IPortObject>();
pipe.start(sw.asVertex());
pipe.out("on").has("number", number);
FramedVertexIterable<IPortObject> r = new FramedVertexIterable<IPortObject>(conn.getFramedGraph(), (Iterable) pipe, IPortObject.class);
- return r.iterator().hasNext() ? r.iterator().next() : null; */
+ return r.iterator().hasNext() ? r.iterator().next() : null;
}
@Override