0
0
mirror of https://github.com/signalapp/Signal-Server.git synced 2024-09-20 03:52:16 +02:00

Expire in-memory queues after 30 days of inactivity.

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2015-01-03 17:24:35 -08:00
parent 1f0acd0622
commit 08291502eb

View File

@ -27,6 +27,7 @@ import org.whispersystems.textsecuregcm.websocket.WebsocketAddress;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static com.codahale.metrics.MetricRegistry.name;
import static org.whispersystems.textsecuregcm.entities.MessageProtos.OutgoingMessageSignal;
@ -57,14 +58,17 @@ public class StoredMessages {
public void insert(WebsocketAddress address, OutgoingMessageSignal message) {
try (Jedis jedis = jedisPool.getResource()) {
byte[] queue = getKey(address);
StoredMessage storedMessage = StoredMessage.newBuilder()
.setType(StoredMessage.Type.MESSAGE)
.setContent(message.toByteString())
.build();
long queueSize = jedis.lpush(getKey(address), storedMessage.toByteArray());
long queueSize = jedis.lpush(queue, storedMessage.toByteArray());
queueSizeHistogram.update(queueSize);
jedis.expireAt(queue, (System.currentTimeMillis() / 1000) + TimeUnit.DAYS.toSeconds(30));
if (queueSize > 1000) {
jedis.ltrim(getKey(address), 0, 999);
}