A coprocessor or coprocessors (which implement RegionObserver) could implement propagation constraints in a pluggable manner, is one possibility. Coprocessors also get an ioctl-like interface which could be the channel for attaching constraints to KVs.
> [...] > First, what about attaching metadata (itself KVs) to KVs in > the store, in a way that it is efficient to look up the > metadata for a given KV or set of KVs? > > Second, what about the notion of references? For the case > above specifically, metadata on an "inode" KV that consists > of a list of pointers to other KVs. When deleting the > "inode" KV -- one that fell off the tail of a stack of > versions -- at compaction time, then the store could follow > the pointers and delete the referenced values also. Or > better, decrement a specified Long encoded KV and then take > the delete action on another specified KV (or set of KVs) if > the result <= 0. - Andy