From 25e22c07d0ad72590695df53b2a3b310592d7549 Mon Sep 17 00:00:00 2001 From: Conatum Date: Wed, 22 Dec 2021 13:20:27 +0200 Subject: [PATCH] sharding (tickets): Filter expiring tickets. Only expire tickets which are on this shard. `THIS_SHARD` application is a no-op when unsharded. --- bot/data/conditions.py | 5 +++-- bot/modules/moderation/tickets/Ticket.py | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bot/data/conditions.py b/bot/data/conditions.py index 52999504..a314616e 100644 --- a/bot/data/conditions.py +++ b/bot/data/conditions.py @@ -80,8 +80,9 @@ class SHARDID(Condition): self.shard_count = shard_count def apply(self, key, values, conditions): - conditions.append("({} >> 22) %% {} = {}".format(key, self.shard_count, _replace_char)) - values.append(self.shardid) + if self.shard_count > 1: + conditions.append("({} >> 22) %% {} = {}".format(key, self.shard_count, _replace_char)) + values.append(self.shardid) THIS_SHARD = SHARDID(sharding.shard_number, sharding.shard_count) diff --git a/bot/modules/moderation/tickets/Ticket.py b/bot/modules/moderation/tickets/Ticket.py index 4d7ec5ec..afea1eef 100644 --- a/bot/modules/moderation/tickets/Ticket.py +++ b/bot/modules/moderation/tickets/Ticket.py @@ -6,6 +6,7 @@ import datetime import discord from meta import client +from data.conditions import THIS_SHARD from settings import GuildSettings from utils.lib import FieldEnum, strfdelta, utc_now @@ -283,7 +284,8 @@ class Ticket: # Get all expiring tickets expiring_rows = data.tickets.select_where( - ticket_state=TicketState.EXPIRING + ticket_state=TicketState.EXPIRING, + guildid=THIS_SHARD ) # Create new expiry tasks