summaryrefslogtreecommitdiff
path: root/ovsdb/monitor.h
diff options
context:
space:
mode:
authorHan Zhou <hzhou8@ebay.com>2019-02-28 09:15:18 -0800
committerBen Pfaff <blp@ovn.org>2019-02-28 10:26:18 -0800
commit9167cb52fa8708ff524be9fc41a8f5ccdfa0a15d (patch)
tree2f80a6ffbb23578fb1a512d263e0c735738851c8 /ovsdb/monitor.h
parent695e815027945cbefe3619fc3fc0c93942a1beb8 (diff)
downloadopenvswitch-9167cb52fa8708ff524be9fc41a8f5ccdfa0a15d.tar.gz
ovsdb-monitor: Support monitor_cond_since.
Support the new monitor method monitor_cond_since so that a client can request monitoring start from a specific point instead of always from beginning. This will reduce the cost at scenarios when server is restarted/failed-over but client still has all existing data. In these scenarios only new changes (and in most cases no change) needed to be transfered to client. When ovsdb-server restarted, history transactions are read from disk file; when ovsdb-server failed over, history transactions exists already in the memory of the new server. There are situations that the requested transaction may not be found. For example, a transaction that is too old and has been discarded from the maintained history list in memory, or the transactions on disk has been compacted during ovsdb compaction. In those situations the server fall backs to transfer all data start from begining. For more details of the protocol change, see Documentation/ref/ovsdb-server.7.rst. This change includes both server side and ovsdb-client side changes with the new protocol. IDLs using this capability will be added in future patches. Now the feature takes effect only for cluster mode of ovsdb-server, because cluster mode is the only mode that supports unique transcation uuid today. For other modes, the monitor_cond_since always fall back to transfer all data with found = false. Support for those modes can be added in the future. Signed-off-by: Han Zhou <hzhou8@ebay.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ovsdb/monitor.h')
-rw-r--r--ovsdb/monitor.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/ovsdb/monitor.h b/ovsdb/monitor.h
index 112c67266..1ac9aaf3d 100644
--- a/ovsdb/monitor.h
+++ b/ovsdb/monitor.h
@@ -39,6 +39,8 @@ enum ovsdb_monitor_version {
OVSDB_MONITOR_V1, /* RFC 7047 "monitor" method. */
OVSDB_MONITOR_V2, /* Extension to RFC 7047, see ovsdb-server
man page for details. */
+ OVSDB_MONITOR_V3, /* Extension to V2, see ovsdb-server man
+ page for details. */
/* Last entry. */
OVSDB_MONITOR_VERSION_MAX
@@ -80,6 +82,8 @@ struct json *ovsdb_monitor_get_update(struct ovsdb_monitor *,
enum ovsdb_monitor_version,
struct ovsdb_monitor_change_set **p_mcs);
+const struct uuid *ovsdb_monitor_get_last_txnid(struct ovsdb_monitor *);
+
void ovsdb_monitor_table_add_select(struct ovsdb_monitor *,
const struct ovsdb_table *,
enum ovsdb_monitor_selection);
@@ -89,6 +93,8 @@ bool ovsdb_monitor_needs_flush(struct ovsdb_monitor *,
void ovsdb_monitor_get_initial(struct ovsdb_monitor *,
struct ovsdb_monitor_change_set **);
+void ovsdb_monitor_get_changes_after(const struct uuid *txn_uuid,
+ struct ovsdb_monitor *, struct ovsdb_monitor_change_set **);
void ovsdb_monitor_get_memory_usage(struct simap *);