Speed up flow installation
diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
index c562556..59e6f46 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
@@ -131,14 +131,9 @@
//
boolean processed_measurement_flow = false;
Iterable<IFlowEntry> allFlowEntries =
- conn.utils().getAllFlowEntries(conn);
+ conn.utils().getAllSwitchNotUpdatedFlowEntries(conn);
for (IFlowEntry flowEntryObj : allFlowEntries) {
counterAllFlowEntries++;
- String switchState = flowEntryObj.getSwitchState();
- if ((switchState == null) ||
- (! switchState.equals("FE_SWITCH_NOT_UPDATED"))) {
- continue; // Ignore the entry: nothing to do
- }
String dpidStr = flowEntryObj.getSwitchDpid();
if (dpidStr == null)
diff --git a/src/main/java/net/onrc/onos/util/GraphDBConnection.java b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
index 4d23b0d..d5fe4c6 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
@@ -68,6 +68,10 @@
graph.createKeyIndex("flow_entry_id",
Vertex.class);
}
+ if (!s.contains("switch_state")) {
+ graph.createKeyIndex("switch_state",
+ Vertex.class);
+ }
graph.stopTransaction(Conclusion.SUCCESS);
eg = new EventTransactionalGraph<TitanGraph>(graph);
}
diff --git a/src/main/java/net/onrc/onos/util/GraphDBUtils.java b/src/main/java/net/onrc/onos/util/GraphDBUtils.java
index 7ed51b9..2dac008 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBUtils.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBUtils.java
@@ -194,6 +194,13 @@
return fg.getVertices("type", "flow_entry", IFlowEntry.class);
}
+
+ @Override
+ public Iterable<IFlowEntry> getAllSwitchNotUpdatedFlowEntries(GraphDBConnection conn) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ //TODO: Should use an enum for flow_switch_state
+ return fg.getVertices("switch_state", "FE_SWITCH_NOT_UPDATED", IFlowEntry.class);
+ }
@Override
public Iterable<ISwitchObject> getActiveSwitches(GraphDBConnection conn) {
diff --git a/src/main/java/net/onrc/onos/util/IDBUtils.java b/src/main/java/net/onrc/onos/util/IDBUtils.java
index 51948a2..4aa8168 100644
--- a/src/main/java/net/onrc/onos/util/IDBUtils.java
+++ b/src/main/java/net/onrc/onos/util/IDBUtils.java
@@ -37,4 +37,6 @@
ISwitchObject newSwitch(GraphDBConnection conn);
void removePort(GraphDBConnection conn, IPortObject port);
void removeSwitch(GraphDBConnection conn, ISwitchObject sw);
+ Iterable<IFlowEntry> getAllSwitchNotUpdatedFlowEntries(
+ GraphDBConnection conn);
}