if (state == null || state != QCacheState.OK) {
log.debug("event=revisibility_check queue_url=" + queueUrl + " shard=" + shard +" queue_cache_state=" + (state==null?"null":state.name()) + " action=do_nothing");
return;
}
boolean brokenJedis = false;
ShardedJedis jedis = null;
List<String> memIds = new LinkedList<String>();
try {
jedis = getResource();
updateExpire(queueUrl, shard, jedis);
long ts1 = System.currentTimeMillis();
Set<String> keys = jedis.hkeys(queueUrl + "-" + shard + "-H");
long ts2 = System.currentTimeMillis();
CQSControllerServlet.valueAccumulator.addToCounter(AccumulatorName.RedisTime, (ts2 - ts1));
log.debug("event=revisibility_check queue_url=" + queueUrl + " shard=" + shard + " invisible_set_size=" + keys.size());
for (String key : keys) {
long ts3 = System.currentTimeMillis();
String val = jedis.hget(queueUrl + "-" + shard + "-H", key);
long ts4 = System.currentTimeMillis();
CQSControllerServlet.valueAccumulator.addToCounter(AccumulatorName.RedisTime, (ts4 - ts3));
if (val == null) {
continue;
}
long visibilityTo = Long.parseLong(val);
if (visibilityTo < System.currentTimeMillis()) {
memIds.add(key);
}
}
//process memIds that should be re-visible
for (String memId : memIds) {
jedis.rpush(queueUrl + "-" + shard + "-Q", memId);
jedis.hdel(queueUrl + "-" + shard + "-H", memId);
}
long ts3 = System.currentTimeMillis();
log.debug("event=revisibility_check queue_url=" + queueUrl + " shard=" + shard + " num_made_revisible=" + memIds.size() + " redisTime=" + CQSControllerServlet.valueAccumulator.getCounter(AccumulatorName.RedisTime) + " responseTimeMS=" + (ts3 - ts0) + " hidden_set_size=" + keys.size());
} catch (Exception e) {
if (e instanceof JedisException) {