Exemplo n.º 1
0
 public function saveBlogPost(BlogPostInterface $blog)
 {
     $identifier = $blog->getIdentifier();
     $blogJson = json_encode($blog, JSON_PRETTY_PRINT);
     $obj = new Object($identifier);
     $obj->setContent($blogJson);
     $obj->setContentType('application/json');
     try {
         $this->bucket->put($obj);
     } catch (RiakException $ex) {
         // Retry
         $this->bucket->put($obj);
     }
 }
Exemplo n.º 2
0
 /**
  * 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.}
  *
  * @param string $id
  * @param string $vClock
  * @param array  $objectList
  *
  * @return \Riak\Object
  */
 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;
 }
Exemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 protected function doSave($id, $data, $lifeTime = 0)
 {
     try {
         $object = new Object($id);
         $object->setContent(serialize($data));
         if ($lifeTime > 0) {
             $object->addMetadata(self::EXPIRES_HEADER, (string) (time() + $lifeTime));
         }
         $this->bucket->put($object);
         return true;
     } catch (Exception\RiakException $e) {
         // Do nothing
     }
     return false;
 }