don't GC new users twice
parent
af4efb40b3
commit
e00eca5112
|
@ -97,25 +97,31 @@ final class GarbageCollector(
|
||||||
|
|
||||||
private def isBadAccount(user: User) = user.lameOrTrollOrAlt
|
private def isBadAccount(user: User) = user.lameOrTrollOrAlt
|
||||||
|
|
||||||
private def collect(user: User, email: EmailAddress, msg: => String): Funit =
|
private def collect(user: User, email: EmailAddress, msg: => String): Funit = justOnce(user.id) ?? {
|
||||||
justOnce(user.id) ?? {
|
hasBeenCollectedBefore(user) flatMap {
|
||||||
val armed = isArmed()
|
case true => funit
|
||||||
val wait = (30 + ThreadLocalRandom.nextInt(300)).seconds
|
case _ =>
|
||||||
val message =
|
val armed = isArmed()
|
||||||
s"Will dispose of @${user.username} in $wait. Email: ${email.value}. $msg${!armed ?? " [SIMULATION]"}"
|
val wait = (30 + ThreadLocalRandom.nextInt(300)).seconds
|
||||||
logger.info(message)
|
val message =
|
||||||
noteApi.lichessWrite(user, s"Garbage collected because of $msg")
|
s"Will dispose of @${user.username} in $wait. Email: ${email.value}. $msg${!armed ?? " [SIMULATION]"}"
|
||||||
irc.garbageCollector(message) >>- {
|
logger.info(message)
|
||||||
if (armed) {
|
noteApi.lichessWrite(user, s"Garbage collected because of $msg")
|
||||||
doInitialSb(user)
|
irc.garbageCollector(message) >>- {
|
||||||
system.scheduler
|
if (armed) {
|
||||||
.scheduleOnce(wait) {
|
doInitialSb(user)
|
||||||
doCollect(user)
|
system.scheduler
|
||||||
}
|
.scheduleOnce(wait) {
|
||||||
.unit
|
doCollect(user)
|
||||||
|
}
|
||||||
|
.unit
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private def hasBeenCollectedBefore(user: User): Fu[Boolean] =
|
||||||
|
noteApi.byUserForMod(user.id).map(_.exists(_.text startsWith "Garbage collected"))
|
||||||
|
|
||||||
private def doInitialSb(user: User): Unit =
|
private def doInitialSb(user: User): Unit =
|
||||||
Bus.publish(
|
Bus.publish(
|
||||||
|
|
Loading…
Reference in New Issue