On Fri, Apr 08, 2011 at 10:25:26AM -0700, Andrew Evans wrote: > On 4/5/11 12:24 PM, Ben Pfaff wrote: > > + /* If this is a write-only column and the datum being written is the > > same > > + * as the one already there, just skip the update entirely. This is > > worth > > + * optimizing because we have a lot of columns that get periodically > > + * refreshed into the database but don't actually change that often. > > + * > > + * We don't do this for read/write columns because that would break > > + * atomicity of transactions--some other client might have written a > > + * different value in that column since we read it. */ > > What prevents another client from writing a different value since we > last read the row?
A write-only column is only suitable for a client that owns a particular column. This is documented in ovsdb-idl.h: /* Modes with which the IDL can monitor a column. * * If no bits are set, the column is not monitored at all. Its value will * always appear to the client to be the default value for its type. * * If OVSDB_IDL_MONITOR is set, then the column is replicated. Its value will * reflect the value in the database. If OVSDB_IDL_ALERT is also set, then * ovsdb_idl_run() will return "true", and the value returned by * ovsdb_idl_get_seqno() will change, when the column's value changes. * * The possible mode combinations are: * * - 0, for a column that a client doesn't care about. * * - (OVSDB_IDL_MONITOR | OVSDB_IDL_ALERT), for a column that a client wants * to track and possibly update. * * - OVSDB_IDL_MONITOR, for columns that a client treats as "write-only", * that is, it updates them but doesn't want to get alerted about its own * updates. It also won't be alerted about other clients' updates, so this * is suitable only for use by a client that "owns" a particular column. * * - OVDSB_IDL_ALERT without OVSDB_IDL_MONITOR is not valid. */ _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
