Skip to content
Snippets Groups Projects
Commit ce99f7c3 authored by Luhur Abdi Rizal's avatar Luhur Abdi Rizal Committed by Sascha Grossenbacher
Browse files

Issue #3175412 by el7cosmos: Use item_id instead of qid for Queue item

parent 26838ec6
Branches
Tags
1 merge request!8Issue #3175412: Use item_id instead of qid for Queue item
Pipeline #256185 passed with warnings
......@@ -37,18 +37,18 @@ class PhpRedis extends QueueBase {
public function createItem($data) {
$record = new \stdClass();
$record->data = $data;
$record->qid = $this->incrementId();
$record->item_id = $this->incrementId();
// We cannot rely on REQUEST_TIME because many items might be created
// by a single request which takes longer than 1 second.
$record->timestamp = time();
if (!$this->client->hsetnx($this->availableItems, $record->qid, serialize($record))) {
if (!$this->client->hsetnx($this->availableItems, $record->item_id, serialize($record))) {
return FALSE;
}
$start_len = $this->client->lLen($this->availableListKey);
if ($start_len < $this->client->lpush($this->availableListKey, $record->qid)) {
return $record->qid;
if ($start_len < $this->client->lpush($this->availableListKey, $record->item_id)) {
return $record->item_id;
}
return FALSE;
......@@ -92,7 +92,8 @@ class PhpRedis extends QueueBase {
$job = $this->client->hget($this->availableItems, $qid);
if ($job) {
$item = unserialize($job);
$this->client->setex($this->leasedKeyPrefix . $item->qid, $lease_time, '1');
$item->item_id ??= $item->qid;
$this->client->setex($this->leasedKeyPrefix . $item->item_id, $lease_time, '1');
}
}
......@@ -103,16 +104,16 @@ class PhpRedis extends QueueBase {
* {@inheritdoc}
*/
public function releaseItem($item) {
$this->client->lrem($this->claimedListKey, $item->qid, -1);
$this->client->lpush($this->availableListKey, $item->qid);
$this->client->lrem($this->claimedListKey, $item->item_id, -1);
$this->client->lpush($this->availableListKey, $item->item_id);
}
/**
* {@inheritdoc}
*/
public function deleteItem($item) {
$this->client->lrem($this->claimedListKey, $item->qid, -1);
$this->client->hdel($this->availableItems, $item->qid);
$this->client->lrem($this->claimedListKey, $item->item_id, -1);
$this->client->hdel($this->availableItems, $item->item_id);
}
/**
......
......@@ -39,18 +39,18 @@ class Predis extends QueueBase {
// TODO: Fixme
$record = new \stdClass();
$record->data = $data;
$record->qid = $this->incrementId();
$record->item_id = $this->incrementId();
// We cannot rely on REQUEST_TIME because many items might be created
// by a single request which takes longer than 1 second.
$record->timestamp = time();
if (!$this->client->hsetnx($this->availableItems, $record->qid, serialize($record))) {
if (!$this->client->hsetnx($this->availableItems, $record->item_id, serialize($record))) {
return FALSE;
}
$start_len = $this->client->lLen($this->availableListKey);
if ($start_len < $this->client->lpush($this->availableListKey, $record->qid)) {
return $record->qid;
if ($start_len < $this->client->lpush($this->availableListKey, $record->item_id)) {
return $record->item_id;
}
}
......@@ -92,7 +92,8 @@ class Predis extends QueueBase {
$job = $this->client->hget($this->availableItems, $qid);
if ($job) {
$item = unserialize($job);
$this->client->setex($this->leasedKeyPrefix . $item->qid, $lease_time, '1');
$item->item_id ??= $item->qid;
$this->client->setex($this->leasedKeyPrefix . $item->item_id, $lease_time, '1');
}
}
......@@ -103,17 +104,17 @@ class Predis extends QueueBase {
* {@inheritdoc}
*/
public function releaseItem($item) {
$this->client->lrem($this->claimedListKey, -1, $item->qid);
$this->client->lpush($this->availableListKey, $item->qid);
$this->client->lrem($this->claimedListKey, -1, $item->item_id);
$this->client->lpush($this->availableListKey, $item->item_id);
}
/**
* {@inheritdoc}
*/
public function deleteItem($item) {
$this->client->lrem($this->claimedListKey, -1, $item->qid);
$this->client->lrem($this->availableListKey, -1, $item->qid);
$this->client->hdel($this->availableItems, $item->qid);
$this->client->lrem($this->claimedListKey, -1, $item->item_id);
$this->client->lrem($this->availableListKey, -1, $item->item_id);
$this->client->hdel($this->availableItems, $item->item_id);
}
/**
......
......@@ -37,20 +37,20 @@ class ReliablePhpRedis extends ReliableQueueBase {
public function createItem($data) {
$record = new \stdClass();
$record->data = $data;
$record->qid = $this->incrementId();
$record->item_id = $this->incrementId();
// We cannot rely on REQUEST_TIME because many items might be created
// by a single request which takes longer than 1 second.
$record->timestamp = time();
$result = $this->client->multi()
->hsetnx($this->availableItems, $record->qid, serialize($record))
->hsetnx($this->availableItems, $record->item_id, serialize($record))
->lLen($this->availableListKey)
->lpush($this->availableListKey, $record->qid)
->lpush($this->availableListKey, $record->item_id)
->exec();
$success = $result[0] && $result[2] > $result[1];
return $success ? $record->qid : FALSE;
return $success ? $record->item_id : FALSE;
}
/**
......@@ -91,7 +91,8 @@ class ReliablePhpRedis extends ReliableQueueBase {
$job = $this->client->hget($this->availableItems, $qid);
if ($job) {
$item = unserialize($job);
$this->client->setex($this->leasedKeyPrefix . $item->qid, $lease_time, '1');
$item->item_id ??= $item->qid;
$this->client->setex($this->leasedKeyPrefix . $item->item_id, $lease_time, '1');
}
}
......@@ -103,8 +104,8 @@ class ReliablePhpRedis extends ReliableQueueBase {
*/
public function releaseItem($item) {
$this->client->multi()
->lrem($this->claimedListKey, $item->qid, -1)
->lpush($this->availableListKey, $item->qid)
->lrem($this->claimedListKey, $item->item_id, -1)
->lpush($this->availableListKey, $item->item_id)
->exec();
}
......@@ -113,8 +114,8 @@ class ReliablePhpRedis extends ReliableQueueBase {
*/
public function deleteItem($item) {
$this->client->multi()
->lrem($this->claimedListKey, $item->qid, -1)
->hdel($this->availableItems, $item->qid)
->lrem($this->claimedListKey, $item->item_id, -1)
->hdel($this->availableItems, $item->item_id)
->exec();
}
......
......@@ -38,20 +38,20 @@ class ReliablePredis extends ReliableQueueBase {
public function createItem($data) {
$record = new \stdClass();
$record->data = $data;
$record->qid = $this->incrementId();
$record->item_id = $this->incrementId();
// We cannot rely on REQUEST_TIME because many items might be created
// by a single request which takes longer than 1 second.
$record->timestamp = time();
$pipe = $this->client->pipeline();
$pipe->hsetnx($this->availableItems, $record->qid, serialize($record));
$pipe->hsetnx($this->availableItems, $record->item_id, serialize($record));
$pipe->lLen($this->availableListKey);
$pipe->lpush($this->availableListKey, $record->qid);
$pipe->lpush($this->availableListKey, $record->item_id);
$result = $pipe->execute();
$success = $result[0] && $result[2] > $result[1];
return $success ? $record->qid : FALSE;
return $success ? $record->item_id : FALSE;
}
/**
......@@ -92,7 +92,8 @@ class ReliablePredis extends ReliableQueueBase {
$job = $this->client->hget($this->availableItems, $qid);
if ($job) {
$item = unserialize($job);
$this->client->setex($this->leasedKeyPrefix . $item->qid, $lease_time, '1');
$item->item_id ??= $item->qid;
$this->client->setex($this->leasedKeyPrefix . $item->item_id, $lease_time, '1');
}
}
......@@ -104,8 +105,8 @@ class ReliablePredis extends ReliableQueueBase {
*/
public function releaseItem($item) {
$this->client->pipeline()
->lrem($this->claimedListKey, -1, $item->qid)
->lpush($this->availableListKey, $item->qid)
->lrem($this->claimedListKey, -1, $item->item_id)
->lpush($this->availableListKey, $item->item_id)
->execute();
}
......@@ -114,9 +115,9 @@ class ReliablePredis extends ReliableQueueBase {
*/
public function deleteItem($item) {
$this->client->pipeline()
->lrem($this->claimedListKey, -1, $item->qid)
->lrem($this->availableListKey, -1, $item->qid)
->hdel($this->availableItems, $item->qid)
->lrem($this->claimedListKey, -1, $item->item_id)
->lrem($this->availableListKey, -1, $item->item_id)
->hdel($this->availableItems, $item->item_id)
->execute();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment