protected function RiakCache::resolveConflict in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php \Doctrine\Common\Cache\RiakCache::resolveConflict()
On-read conflict resolution. Applied approach here is last write wins. Specific needs may override this method to apply alternate conflict resolutions.
{@internal Riak does not attempt to resolve a write conflict, and store it as sibling of conflicted one. By following this approach, it is up to the next read to resolve the conflict. When this happens, your fetched object will have a list of siblings (read as a list of objects). In our specific case, we do not care about the intermediate ones since they are all the same read from storage, and we do apply a last sibling (last write) wins logic. If by any means our resolution generates another conflict, it'll up to next read to properly solve it.}
Parameters
string $id:
string $vClock:
array $objectList:
Return value
\Riak\Object
1 call to RiakCache::resolveConflict()
- RiakCache::doFetch in vendor/
doctrine/ cache/ lib/ Doctrine/ Common/ Cache/ RiakCache.php - Fetches an entry from the cache.
File
- vendor/
doctrine/ cache/ lib/ Doctrine/ Common/ Cache/ RiakCache.php, line 235
Class
- RiakCache
- Riak cache provider.
Namespace
Doctrine\Common\CacheCode
protected function resolveConflict($id, $vClock, array $objectList) {
// Our approach here is last-write wins
$winner = $objectList[count($objectList)];
$putInput = new Input\PutInput();
$putInput
->setVClock($vClock);
$mergedObject = new Object($id);
$mergedObject
->setContent($winner
->getContent());
$this->bucket
->put($mergedObject, $putInput);
return $mergedObject;
}