chore_: cleanup `hash_ratchet_encrypted_messages` periodically
closes: #5036
This commit is contained in:
parent
6b680f0722
commit
00ee631a22
|
@ -1278,3 +1278,14 @@ func (s *MessageSender) GetCurrentKeyForGroup(groupID []byte) (*encryption.HashR
|
||||||
func (s *MessageSender) GetKeysForGroup(groupID []byte) ([]*encryption.HashRatchetKeyCompatibility, error) {
|
func (s *MessageSender) GetKeysForGroup(groupID []byte) ([]*encryption.HashRatchetKeyCompatibility, error) {
|
||||||
return s.protocol.GetKeysForGroup(groupID)
|
return s.protocol.GetKeysForGroup(groupID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *MessageSender) CleanupHashRatchetEncryptedMessages() error {
|
||||||
|
monthAgo := time.Now().AddDate(0, -1, 0).Unix()
|
||||||
|
|
||||||
|
err := s.persistence.DeleteHashRatchetMessagesOlderThan(monthAgo)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -372,6 +372,11 @@ func (db RawMessagesPersistence) DeleteHashRatchetMessages(ids [][]byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *RawMessagesPersistence) DeleteHashRatchetMessagesOlderThan(timestamp int64) error {
|
||||||
|
_, err := db.db.Exec("DELETE FROM hash_ratchet_encrypted_messages WHERE timestamp < ?", timestamp)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (db *RawMessagesPersistence) IsMessageAlreadyCompleted(hash []byte) (bool, error) {
|
func (db *RawMessagesPersistence) IsMessageAlreadyCompleted(hash []byte) (bool, error) {
|
||||||
var alreadyCompleted int
|
var alreadyCompleted int
|
||||||
err := db.db.QueryRow("SELECT COUNT(*) FROM message_segments_completed WHERE hash = ?", hash).Scan(&alreadyCompleted)
|
err := db.db.QueryRow("SELECT COUNT(*) FROM message_segments_completed WHERE hash = ?", hash).Scan(&alreadyCompleted)
|
||||||
|
|
|
@ -792,6 +792,7 @@ func (m *Messenger) Start() (*MessengerResponse, error) {
|
||||||
m.startCuratedCommunitiesUpdateLoop()
|
m.startCuratedCommunitiesUpdateLoop()
|
||||||
}
|
}
|
||||||
m.startMessageSegmentsCleanupLoop()
|
m.startMessageSegmentsCleanupLoop()
|
||||||
|
m.startHashRatchetEncryptedMessagesCleanupLoop()
|
||||||
|
|
||||||
if err := m.cleanTopics(); err != nil {
|
if err := m.cleanTopics(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -6006,8 +6007,8 @@ func (m *Messenger) GetDeleteForMeMessages() ([]*protobuf.SyncDeleteForMeMessage
|
||||||
return m.persistence.GetDeleteForMeMessages()
|
return m.persistence.GetDeleteForMeMessages()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) startMessageSegmentsCleanupLoop() {
|
func (m *Messenger) startCleanupLoop(name string, cleanupFunc func() error) {
|
||||||
logger := m.logger.Named("messageSegmentsCleanupLoop")
|
logger := m.logger.Named(name)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
// Delay by a few minutes to minimize messenger's startup time
|
// Delay by a few minutes to minimize messenger's startup time
|
||||||
|
@ -6018,9 +6019,9 @@ func (m *Messenger) startMessageSegmentsCleanupLoop() {
|
||||||
// Set the regular interval after the first execution
|
// Set the regular interval after the first execution
|
||||||
interval = 1 * time.Hour
|
interval = 1 * time.Hour
|
||||||
|
|
||||||
err := m.sender.CleanupSegments()
|
err := cleanupFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("failed to cleanup segments", zap.Error(err))
|
logger.Error("failed to cleanup", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
case <-m.quit:
|
case <-m.quit:
|
||||||
|
@ -6030,6 +6031,14 @@ func (m *Messenger) startMessageSegmentsCleanupLoop() {
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) startMessageSegmentsCleanupLoop() {
|
||||||
|
m.startCleanupLoop("messageSegmentsCleanupLoop", m.sender.CleanupSegments)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) startHashRatchetEncryptedMessagesCleanupLoop() {
|
||||||
|
m.startCleanupLoop("hashRatchetEncryptedMessagesCleanupLoop", m.sender.CleanupHashRatchetEncryptedMessages)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) FindStatusMessageIDForBridgeMessageID(bridgeMessageID string) (string, error) {
|
func (m *Messenger) FindStatusMessageIDForBridgeMessageID(bridgeMessageID string) (string, error) {
|
||||||
return m.persistence.FindStatusMessageIDForBridgeMessageID(bridgeMessageID)
|
return m.persistence.FindStatusMessageIDForBridgeMessageID(bridgeMessageID)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue