From a835524484b7b5b5d983a86dd969e8c921bad8f6 Mon Sep 17 00:00:00 2001 From: Gabriel Jenik Date: Thu, 21 Jul 2016 14:37:12 -0300 Subject: [PATCH 1/2] Fix: after batch write fails seeking UnprocessedItems Only seek for UnprocessedItems if there is any. --- DynamoDBWrapper.php | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/DynamoDBWrapper.php b/DynamoDBWrapper.php index 1791bf9..07880d8 100644 --- a/DynamoDBWrapper.php +++ b/DynamoDBWrapper.php @@ -1,5 +1,7 @@ client = DynamoDbClient::factory($args); + } + } + + public static function createFromClient($client) + { + $dyn = new DynamoDBWrapper(); + $dyn->client = $client; + + return $dyn; } public function get($tableName, $key, $options = array()) @@ -117,7 +130,7 @@ public function count($tableName, $keyConditions, $options = array()) public function scan($tableName, $filter, $limit = null) { if (empty($filter)) { - $scanFilter = null; + $scanFilter = array(); } else { $scanFilter = $this->convertConditions($filter); } @@ -212,9 +225,12 @@ protected function batchWrite($requestType, $tableName, $items) )); // if some items not processed, try again as next request - $unprocessedRequests = $result->getPath("UnprocessedItems/{$tableName}"); - if (count($unprocessedRequests) > 0) { - $requests = array_merge($requests, $unprocessedRequests); + if (count($result->UnprocessedItems) > 0) + { + $unprocessedRequests = $result->getPath("UnprocessedItems/{$tableName}"); + if (count($unprocessedRequests) > 0) { + $requests = array_merge($requests, $unprocessedRequests); + } } } @@ -442,7 +458,7 @@ protected function convertItems($items) /** * convert string attribute paramter to array components. - * + * * @param string $attribute double colon separated string "::" * @return array parsed parameter. [0]=, [1]= */ From 62be23e9cd2876ab024fd822bdc7f13b2413853b Mon Sep 17 00:00:00 2001 From: Gabriel Jenik Date: Thu, 21 Jul 2016 14:40:19 -0300 Subject: [PATCH 2/2] Update DynamoDBWrapper.php --- DynamoDBWrapper.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DynamoDBWrapper.php b/DynamoDBWrapper.php index 07880d8..1911518 100644 --- a/DynamoDBWrapper.php +++ b/DynamoDBWrapper.php @@ -225,7 +225,8 @@ protected function batchWrite($requestType, $tableName, $items) )); // if some items not processed, try again as next request - if (count($result->UnprocessedItems) > 0) + $unprocessedItems = $result->getPath("UnprocessedItems"); + if ($unprocessedItems && count($unprocessedItems) > 0) { $unprocessedRequests = $result->getPath("UnprocessedItems/{$tableName}"); if (count($unprocessedRequests) > 0) {