Skip to content

Commit 6c5510c

Browse files
authored
add clean tables email_sending_log, operation_checkpoint, sysadmin_extra_userloginlog (#878)
* add clean tables email_sending_log, operation_checkpoint, sysadmin_extra_userloginlog * update
1 parent 2c85319 commit 6c5510c

2 files changed

Lines changed: 50 additions & 2 deletions

File tree

dtable_events/app/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ def get_llm_prices(models):
169169
CLEAN_DB_KEEP_AUTO_RULES_TASK_LOG_DAYS = configs.get('CLEAN_DB_KEEP_AUTO_RULES_TASK_LOG_DAYS', default=30)
170170
CLEAN_DB_KEEP_USER_ACTIVITY_STATISTICS_DAYS = configs.get('CLEAN_DB_KEEP_USER_ACTIVITY_STATISTICS_DAYS', default=0)
171171
CLEAN_DB_KEEP_DTABLE_APP_PAGES_OPERATION_LOG_DAYS = configs.get('CLEAN_DB_KEEP_DTABLE_APP_PAGES_OPERATION_LOG_DAYS', default=14)
172+
CLEAN_DB_KEEP_EMAIL_SENDING_LOG_DAYS = configs.get('CLEAN_DB_KEEP_EMAIL_SENDING_LOG_DAYS', default=30)
173+
CLEAN_DB_KEEP_SYSADMIN_EXTRA_USERLOGINLOG_DAYS = configs.get('CLEAN_DB_KEEP_SYSADMIN_EXTRA_USERLOGINLOG_DAYS', default=30)
172174

173175
# email syncer
174176
EMAIL_SYNCER_ENABLED = configs.get('EMAIL_SYNCER_ENABLED', default=True)

dtable_events/tasks/clean_db_records_worker.py

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
CLEAN_DB_KEEP_ACTIVITIES_DAYS, CLEAN_DB_KEEP_OPERATION_LOG_DAYS, CLEAN_DB_KEEP_DELETE_OPERATION_LOG_DAYS, \
1212
CLEAN_DB_KEEP_DTABLE_DB_OP_LOG_DAYS, CLEAN_DB_KEEP_NOTIFICATIONS_USERNOTIFICATION_DAYS, \
1313
CLEAN_DB_KEEP_DTABLE_NOTIFICATIONS_DAYS, CLEAN_DB_KEEP_SESSION_LOG_DAYS, CLEAN_DB_KEEP_AUTO_RULES_TASK_LOG_DAYS, \
14-
CLEAN_DB_KEEP_USER_ACTIVITY_STATISTICS_DAYS, CLEAN_DB_KEEP_DTABLE_APP_PAGES_OPERATION_LOG_DAYS
14+
CLEAN_DB_KEEP_USER_ACTIVITY_STATISTICS_DAYS, CLEAN_DB_KEEP_DTABLE_APP_PAGES_OPERATION_LOG_DAYS, \
15+
CLEAN_DB_KEEP_EMAIL_SENDING_LOG_DAYS, CLEAN_DB_KEEP_SYSADMIN_EXTRA_USERLOGINLOG_DAYS
1516
from dtable_events.db import init_db_session_class
1617

1718
__all__ = [
@@ -42,6 +43,8 @@ def _parse_config(self):
4243
auto_rules_task_log=CLEAN_DB_KEEP_AUTO_RULES_TASK_LOG_DAYS,
4344
user_activity_statistics=CLEAN_DB_KEEP_USER_ACTIVITY_STATISTICS_DAYS,
4445
dtable_app_pages_operation_log=CLEAN_DB_KEEP_DTABLE_APP_PAGES_OPERATION_LOG_DAYS,
46+
email_sending_log=CLEAN_DB_KEEP_EMAIL_SENDING_LOG_DAYS,
47+
sysadmin_extra_userloginlog=CLEAN_DB_KEEP_SYSADMIN_EXTRA_USERLOGINLOG_DAYS
4548
)
4649

4750
def start(self):
@@ -70,9 +73,11 @@ class RetentionConfig:
7073
dtable_notifications: int = 30
7174
session_log: int = 30
7275
auto_rules_task_log: int = 30
76+
dtable_app_pages_operation_log: int = 14
77+
email_sending_log: int = 60
78+
sysadmin_extra_userloginlog: int = 60
7379
# Disabled by default
7480
user_activity_statistics: int = 0
75-
dtable_app_pages_operation_log: int = 14
7681

7782

7883
class CleanDBRecordsTask(Thread):
@@ -104,6 +109,9 @@ def timed_job():
104109
clean_auto_rules_task_log(session, self.retention_config.auto_rules_task_log)
105110
clean_user_activity_statistics(session, self.retention_config.user_activity_statistics)
106111
clean_dtable_app_pages_operation_log(session, self.retention_config.dtable_app_pages_operation_log)
112+
clean_email_sending_log(session, self.retention_config.email_sending_log)
113+
clean_operation_checkpoint(session)
114+
clean_sysadmin_extra_userloginlog(session, self.retention_config.sysadmin_extra_userloginlog)
107115
except:
108116
logging.exception('Could not clean database')
109117
finally:
@@ -270,3 +278,41 @@ def clean_dtable_app_pages_operation_log(session, keep_days: int):
270278
session.commit()
271279

272280
logging.info('Removed %d entries from "dtable_app_pages_operation_log"', result.rowcount)
281+
282+
283+
def clean_email_sending_log(session, keep_days: int):
284+
if keep_days <= 0:
285+
logging.info('Skipping "email_sending_log" since retention time is set to %d', keep_days)
286+
return
287+
288+
logging.info('Cleaning "email_sending_log" table (older than %d days)', keep_days)
289+
290+
sql = 'DELETE FROM `email_sending_log` WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL :days DAY)'
291+
result = session.execute(text(sql), {'days': keep_days})
292+
session.commit()
293+
294+
logging.info('Removed %d entries from "email_sending_log"', result.rowcount)
295+
296+
297+
def clean_operation_checkpoint(session):
298+
logging.info('Cleaning "operation_checkpoint" whose dtables not existing')
299+
300+
sql = 'DELETE oc FROM `operation_checkpoint` oc LEFT JOIN `dtables` d ON oc.dtable_uuid=d.uuid WHERE d.uuid IS NULL'
301+
result = session.execute(text(sql))
302+
session.commit()
303+
304+
logging.info('Removed %d entries from "operation_checkpoint"', result.rowcount)
305+
306+
307+
def clean_sysadmin_extra_userloginlog(session, keep_days: int):
308+
if keep_days <= 0:
309+
logging.info('Skipping "sysadmin_extra_userloginlog" since retention time is set to %d', keep_days)
310+
return
311+
312+
logging.info('Cleaning "sysadmin_extra_userloginlog" table (older than %d days)', keep_days)
313+
314+
sql = 'DELETE FROM `sysadmin_extra_userloginlog` WHERE `login_date` < DATE_SUB(NOW(), INTERVAL :days DAY)'
315+
result = session.execute(text(sql), {'days': keep_days})
316+
session.commit()
317+
318+
logging.info('Removed %d entries from "sysadmin_extra_userloginlog"', result.rowcount)

0 commit comments

Comments
 (0)