Skip to content

Commit 385dc2c

Browse files
committed
Using resque api to get list of existing deposit jobs
1 parent ef5fac3 commit 385dc2c

File tree

2 files changed

+20
-34
lines changed

2 files changed

+20
-34
lines changed

deposit/src/main/java/edu/unc/lib/deposit/work/DepositSupervisor.java

+15-34
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package edu.unc.lib.deposit.work;
22

33
import java.io.File;
4-
import java.io.IOException;
54
import java.text.MessageFormat;
65
import java.util.Arrays;
76
import java.util.HashMap;
@@ -18,19 +17,17 @@
1817

1918
import net.greghaines.jesque.Job;
2019
import net.greghaines.jesque.client.Client;
20+
import net.greghaines.jesque.meta.QueueInfo;
21+
import net.greghaines.jesque.meta.dao.QueueInfoDAO;
2122
import net.greghaines.jesque.worker.Worker;
2223
import net.greghaines.jesque.worker.WorkerEvent;
2324
import net.greghaines.jesque.worker.WorkerListener;
2425
import net.greghaines.jesque.worker.WorkerPool;
2526

26-
import org.codehaus.jackson.JsonNode;
27-
import org.codehaus.jackson.map.ObjectMapper;
2827
import org.slf4j.Logger;
2928
import org.slf4j.LoggerFactory;
3029
import org.springframework.beans.factory.annotation.Autowired;
3130

32-
import redis.clients.jedis.Jedis;
33-
import redis.clients.jedis.JedisPool;
3431
import edu.unc.lib.deposit.CleanupDepositJob;
3532
import edu.unc.lib.deposit.PrepareResubmitJob;
3633
import edu.unc.lib.deposit.fcrepo3.IngestDeposit;
@@ -81,7 +78,7 @@ public class DepositSupervisor implements WorkerListener {
8178
private WorkerPool cdrMetsDepositWorkerPool;
8279

8380
@Autowired
84-
private JedisPool jedisPool;
81+
private QueueInfoDAO queueDAO;
8582

8683
@Autowired
8784
private DepositEmailHandler depositEmailHandler;
@@ -243,40 +240,24 @@ public void run() {
243240

244241
private Map<String, Set<String>> getQueuedDepositsWithJobs() {
245242
Map<String, Set<String>> depositMap = new HashMap<>();
246-
addQueuedDeposits(
247-
RedisWorkerConstants.RESQUE_QUEUE_PREFIX + RedisWorkerConstants.DEPOSIT_PREPARE_QUEUE, depositMap);
248-
addQueuedDeposits(
249-
RedisWorkerConstants.RESQUE_QUEUE_PREFIX + RedisWorkerConstants.DEPOSIT_DELAYED_QUEUE, depositMap);
250-
addQueuedDeposits(
251-
RedisWorkerConstants.RESQUE_QUEUE_PREFIX + RedisWorkerConstants.DEPOSIT_CDRMETS_QUEUE, depositMap);
243+
addQueuedDeposits(RedisWorkerConstants.DEPOSIT_PREPARE_QUEUE, depositMap);
244+
addQueuedDeposits(RedisWorkerConstants.DEPOSIT_DELAYED_QUEUE, depositMap);
245+
addQueuedDeposits(RedisWorkerConstants.DEPOSIT_CDRMETS_QUEUE, depositMap);
252246
return depositMap;
253247
}
254248

255249
private void addQueuedDeposits(String queueName, Map<String, Set<String>> depositMap) {
256-
Jedis jedis = jedisPool.getResource();
257-
Set<String> queue;
258-
try {
259-
queue = jedis.zrange(queueName, 0, -1);
260-
} catch (Exception e) {
261-
// Resque seems to sometimes switch the type of the queue
262-
LOG.warn("Redis did not return a zset for {}, trying to retrieve as a list", queueName, e);
263-
queue = new HashSet<>(jedis.lrange(queueName, 0, -1));
264-
}
250+
QueueInfo info = queueDAO.getQueueInfo(queueName, 0, 0);
265251

266-
ObjectMapper mapper = new ObjectMapper();
267-
for (String entry : queue) {
268-
try {
269-
JsonNode node = mapper.readTree(entry);
270-
String depositId = node.get("args").get(1).asText();
271-
Set<String> jobs = depositMap.get(depositId);
272-
if (jobs == null) {
273-
jobs = new HashSet<>();
274-
depositMap.put(depositId, jobs);
275-
}
276-
jobs.add(node.get("class").asText());
277-
} catch (IOException e) {
278-
LOG.error("Failed to parse deposit job from resque", e);
252+
for (Job job : info.getJobs()) {
253+
String depositId = (String) job.getArgs()[1];
254+
255+
Set<String> jobs = depositMap.get(depositId);
256+
if (jobs == null) {
257+
jobs = new HashSet<>();
258+
depositMap.put(depositId, jobs);
279259
}
260+
jobs.add(job.getClassName());
280261
}
281262
}
282263

deposit/src/main/resources/service-context.xml

+5
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@
6767
<constructor-arg ref="jedisPool" />
6868
</bean>
6969

70+
<bean id="queueDAO" class="net.greghaines.jesque.meta.dao.impl.QueueInfoDAORedisImpl">
71+
<constructor-arg ref="jesqueConfig" />
72+
<constructor-arg ref="jedisPool" />
73+
</bean>
74+
7075
<bean id="dataSet" class="com.hp.hpl.jena.tdb.TDBFactory" factory-method="createDataset" destroy-method="close">
7176
<constructor-arg value="${deposits.dir}/jena-tdb-dataset"/>
7277
</bean>

0 commit comments

Comments
 (0)