Notes
The RHT library is unaware of any internal structure in the keys
and values it stores and exactly replicates (byte-for-byte) inserted
keys and values at each of a rht's replicas. The user specifies
how keys should be locally compared to one another at replica creation
through rht_create. By default, the total size of each
key-value pair inserted into the dictionary must be smaller than
approximately 100KB. To alter this compile-time limitation, please
contact Spread Concepts.
Of all the rht_* functions, only rht_strerror is completely
non-blocking. All of the other function calls can block based on
thread contention over a lock and/or network I/O. In particular,
the query functions (rht_size, rht_get, etc.)
will, by default, block until any previous updates (inserts or deletes)
generated at this replica have been incorporated into the rht. This
enforces causality.
For example, if a thread puts a key-value pair into a replica and
then takes a snapshot, then any remaining effect of that put update
will be reflected in the returned snapshot. This functionality can
be overridden if such causality is not necessary by specifying the
RHT_DIRTY_READ flag in the function call. |