High-level description
The "owner" of a given data object is defined as the (logical) host that is responsible for applying operations on that object. All requests for nanotransaction executions for a given object must be directed to its owner. Furthermore, data movement requests should be sent to its owner.
The current version of the ownership tracking module is v0.
Properties
A host can be in either of two states of ownership for a given data object:
- The host maintains strong ownership of the object, meaning that no ownership changes are allowed at the present moment. This is our way of preventing object thrashing through constant movement. In the absence of requests to renew a host's strong ownership "lease", this mode of ownership expires after a configurable amount of time.
- The host maintains weak ownership of the object. This happens after the strong ownership TTL mentioned above expires. At this point, the owning host may be asked to perform an operation on the given object if there is no scheduling pressure to relocate the given object (given that we want to minimize data movement), but ownership can change hands if need be.