sharding (tickets): Filter expiring tickets.

Only expire tickets which are on this shard.
`THIS_SHARD` application is a no-op when unsharded.
This commit is contained in:
2021-12-22 13:20:27 +02:00
parent 1c05d7a880
commit 25e22c07d0
2 changed files with 6 additions and 3 deletions

View File

@@ -80,8 +80,9 @@ class SHARDID(Condition):
self.shard_count = shard_count self.shard_count = shard_count
def apply(self, key, values, conditions): def apply(self, key, values, conditions):
conditions.append("({} >> 22) %% {} = {}".format(key, self.shard_count, _replace_char)) if self.shard_count > 1:
values.append(self.shardid) conditions.append("({} >> 22) %% {} = {}".format(key, self.shard_count, _replace_char))
values.append(self.shardid)
THIS_SHARD = SHARDID(sharding.shard_number, sharding.shard_count) THIS_SHARD = SHARDID(sharding.shard_number, sharding.shard_count)

View File

@@ -6,6 +6,7 @@ import datetime
import discord import discord
from meta import client from meta import client
from data.conditions import THIS_SHARD
from settings import GuildSettings from settings import GuildSettings
from utils.lib import FieldEnum, strfdelta, utc_now from utils.lib import FieldEnum, strfdelta, utc_now
@@ -283,7 +284,8 @@ class Ticket:
# Get all expiring tickets # Get all expiring tickets
expiring_rows = data.tickets.select_where( expiring_rows = data.tickets.select_where(
ticket_state=TicketState.EXPIRING ticket_state=TicketState.EXPIRING,
guildid=THIS_SHARD
) )
# Create new expiry tasks # Create new expiry tasks