Fixes toward bug #248:
* Bug fix: Don't delete the Flow entries while processing the list
of all Flow entries. Instead, add them to a list, and process
that list after all other processing is done.
* Add a workaround when encountering some bogus Flow Entry
entries from the database. Apparatenly, sometimes the
Flow Entries obtained by the getAllFlowEntries() method
are bogus. E.g., the object is non-null, but fetching (some of)
its attributes returns null pointers. Those attributes
(e.g., Flow Entry ID) should always be set.
This seems to happen only with multiple ONOS instances running:
- 100 flows are installed
- The flows are deleted (or "cleared") by using the web/delete_flow.py
or web/clear_flow.py scripts.
- While the flows are in the process of deletion/cleanip,
the periodic mapReader() thread on some of the remote ONOS instances
shows tens of bogus Flow Entries. If mapReader() ignores
those entries, on the next iteration (after 3 seconds or so)
the entries are not there.
As a work-around, for now the bogus (i.e., with null attributes)
flow entries are ignored. A separate bug will be opened to trace
the more generic problem: why the database objects are bogus.
1 file changed