Kyle Upton kupton@baymicrosystems.com
Lance Richardson lrichard@redhat.com
Lars Kellogg-Stedman lars@redhat.com
+Lei Huang huang.f.lei@gmail.com
Leo Alterman lalterman@nicira.com
Lilijun jerry.lilijun@huawei.com
Linda Sun lsun@vmware.com
dbmon = ovsdb_monitor_add(m->dbmon);
if (dbmon != m->dbmon) {
/* Found an exisiting dbmon, reuse the current one. */
- ovsdb_monitor_remove_jsonrpc_monitor(m->dbmon, m);
+ ovsdb_monitor_remove_jsonrpc_monitor(m->dbmon, m, m->unflushed);
ovsdb_monitor_add_jsonrpc_monitor(dbmon, m);
m->dbmon = dbmon;
}
{
json_destroy(m->monitor_id);
hmap_remove(&m->session->monitors, &m->node);
- ovsdb_monitor_remove_jsonrpc_monitor(m->dbmon, m);
+ ovsdb_monitor_remove_jsonrpc_monitor(m->dbmon, m, m->unflushed);
free(m);
}
void
ovsdb_monitor_remove_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
- struct ovsdb_jsonrpc_monitor *jsonrpc_monitor)
+ struct ovsdb_jsonrpc_monitor *jsonrpc_monitor,
+ uint64_t unflushed)
{
struct jsonrpc_monitor_node *jm;
/* Find and remove the jsonrpc monitor from the list. */
LIST_FOR_EACH(jm, node, &dbmon->jsonrpc_monitors) {
if (jm->jsonrpc_monitor == jsonrpc_monitor) {
+ /* Release the tracked changes. */
+ struct shash_node *node;
+ SHASH_FOR_EACH (node, &dbmon->tables) {
+ struct ovsdb_monitor_table *mt = node->data;
+ ovsdb_monitor_table_untrack_changes(mt, unflushed);
+ }
list_remove(&jm->node);
free(jm);
struct ovsdb_jsonrpc_monitor *jsonrpc_monitor);
void ovsdb_monitor_remove_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
- struct ovsdb_jsonrpc_monitor *jsonrpc_monitor);
-
-void ovsdb_monitor_remove_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
- struct ovsdb_jsonrpc_monitor *jsonrpc_monitor);
+ struct ovsdb_jsonrpc_monitor *jsonrpc_monitor,
+ uint64_t unflushed);
void ovsdb_monitor_add_table(struct ovsdb_monitor *m,
const struct ovsdb_table *table);