/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @param \Kbrw\RiakBundle\Model\Bucket\Bucket $bucket * @param \Kbrw\RiakBundle\Model\MapReduce\Query $query * @return mixed */ public function mapReduce($cluster, $query) { try { $request = $this->getClient($cluster->getGuzzleClientProviderService(), $this->getConfig($cluster))->post(); $extra = array("method" => "POST"); $ts = microtime(true); $body = $this->getSerializer()->serialize($query, "json"); $extra["serialization_time"] = microtime(true) - $ts; $request->setBody($body, "application/json"); $response = $request->send(); if ($response->getStatusCode() === 200) { $fqcn = $query->getResponseFullyQualifiedClassName(); if (!empty($fqcn)) { $ts = microtime(true); $content = $this->getSerializer()->deserialize($response->getBody(true), $fqcn, "json"); $extra["serialization_time"] = microtime(true) - $ts; $this->logResponse($response, $extra); return $content; } $this->logResponse($response, $extra); return $response->getBody(true); } $this->logResponse($response, $extra); } catch (CurlException $e) { $this->logger->err("Riak is unavailable" . $e->getMessage()); throw new RiakUnavailableException(); } catch (\Exception $e) { $this->logger->err("Unable to execute a mapreduce query. Full message is : \n" . $e->getMessage() . ""); } return null; }
/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @param \Kbrw\RiakBundle\Model\Bucket\Bucket $bucket * @param \Kbrw\RiakBundle\Model\Search\Query | string $query * @return \Kbrw\RiakBundle\Model\Search\Response */ public function search($cluster, $bucket, $query) { if (is_string($query)) { $query = new Query($query); } try { $request = $this->getClient($cluster->getGuzzleClientProviderService(), $this->getConfig($cluster, $bucket, $query))->get(); $extra = array("method" => "GET"); $response = $request->send(); if ($response->getStatusCode() === 200) { $ts = microtime(true); $searchResponse = $this->getSerializer()->deserialize($response->getBody(), 'Kbrw\\RiakBundle\\Model\\Search\\Response', $query->getWt()); $extra["deserialization_time"] = microtime(true) - $ts; if (isset($searchResponse)) { $lists = $searchResponse->getLsts(); $list = reset($lists); $qtime = $list->getSimpleTypeByName("QTime"); $extra["search_time"] = isset($qtime) ? $qtime->getValue() / 1000 : null; } $this->logResponse($response, $extra); return $searchResponse; } $this->logResponse($response, $extra); } catch (CurlException $e) { $this->logger->err("Riak is unavailable" . $e->getMessage()); throw new RiakUnavailableException(); } catch (\Exception $e) { $this->logger->err("Unable to execute a search query. Full message is : \n" . $e->getMessage() . ""); } return new Response(); }
/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @return array<string> */ public function buckets($cluster, $ignore = "_rsid_*") { $bucketNames = array(); $request = $this->getClient($cluster->getGuzzleClientProviderService(), $this->getConfig($cluster, "true"))->get(); $this->logger->debug("[GET] '" . $request->getUrl() . "'"); try { $response = $request->send(); $extra = array("method" => "GET"); if ($response->getStatusCode() === 200) { $ts = microtime(true); $content = json_decode($response->getBody(true)); $extra["deserialization_time"] = microtime(true) - $ts; if (isset($content)) { foreach ($content->{"buckets"} as $bucketName) { if (!fnmatch($ignore, $bucketName)) { $bucketNames[] = $bucketName; } } } } $this->logResponse($response, $extra); } catch (CurlException $e) { $this->logger->err("Riak is unavailable" . $e->getMessage()); throw new RiakUnavailableException(); } catch (\Exception $e) { $this->logger->err("Error while getting buckets" . $e->getMessage()); } return $bucketNames; }
/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @return array<string,string> */ public function status($cluster) { $request = $this->getClient($cluster->getGuzzleClientProviderService(), $this->getConfig($cluster, "true"))->get(); try { $response = $request->send(); $extra = array("method" => "GET"); if ($response->getStatusCode() === 200) { $ts = microtime(true); $content = json_decode($response->getBody(true)); $extra["deserialization_time"] = microtime(true) - $ts; } $this->logResponse($response, $extra); } catch (CurlException $e) { $this->logger->err("Riak is unavailable" . $e->getMessage()); throw new RiakUnavailableException(); } catch (\Exception $e) { $this->logger->err("Error while getting buckets" . $e->getMessage()); } return $content; }
/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @param \Kbrw\RiakBundle\Model\Bucket\Bucket $bucket * @param string $key * @return string */ public function getUri($cluster, $bucket, $key) { $client = $this->getClient($cluster->getGuzzleClientProviderService(), $this->getConfig($cluster, $bucket)); return $client->get($key)->getUrl(); }
/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @param \Kbrw\RiakBundle\Model\Bucket\Bucket $bucket * @return boolean */ public function save($cluster, $bucket) { $request = $this->getClient($cluster->getGuzzleClientProviderService(), $this->getConfig($cluster, $bucket->getName(), null))->put(); try { $extra = array("method" => "PUT"); $ts = microtime(true); $request->setBody($this->serializer->serialize($bucket, "json")); $extra["serialization_time"] = microtime(true); -$ts; $request->setHeader("Content-Type", "application/json"); $response = $request->send(); $this->logResponse($response, $extra); return $response->getStatusCode() == "204"; } catch (CurlException $e) { $this->logger->err("Riak is unavailable" . $e->getMessage()); throw new RiakUnavailableException(); } catch (\Exception $e) { $this->logger->err("Error while setting properties on bucket '" . $bucket->getName() . "'. Full message is : " . $e->getMessage()); } return false; }