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:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user