Esempio n. 1
0
 /**
  * @return BlogPostInterface[]
  */
 public function listBlogs()
 {
     $blogList = [];
     // TODO List key is very bad
     $keyList = $this->bucket->getKeyList();
     foreach ($keyList as $key) {
         $blogPost = $this->getBlogPost($key);
         if (isset($blogPost)) {
             $blogList[] = $blogPost;
         }
     }
     return $blogList;
 }
Esempio 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;
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  */
 protected function doFlush()
 {
     try {
         $keyList = $this->bucket->getKeyList();
         foreach ($keyList as $key) {
             $this->bucket->delete($key);
         }
         return true;
     } catch (Exception\RiakException $e) {
         // Do nothing
     }
     return false;
 }