Skip to content

Commit 94dd013

Browse files
authored
add job deletion for succeded and failed jobs (#53)
1 parent fe43511 commit 94dd013

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

backend/src/main/kotlin/me/sujanpoudel/playdeals/DIConfigurer.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.sujanpoudel.playdeals
22

3+
import com.fasterxml.jackson.databind.DeserializationFeature
34
import com.fasterxml.jackson.databind.ObjectMapper
45
import com.fasterxml.jackson.databind.SerializationFeature
56
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
@@ -129,7 +130,8 @@ fun configureDI(
129130
.useJobActivator(instance())
130131
.useBackgroundJobServer(
131132
BackgroundJobServerConfiguration.usingStandardBackgroundJobServerConfiguration()
132-
.andDeleteSucceededJobsAfter(Duration.ofHours(6))
133+
.andDeleteSucceededJobsAfter(Duration.ofMinutes(10))
134+
.andPermanentlyDeleteDeletedJobsAfter(Duration.ofMinutes(10))
133135
.andWorkerCount(1)
134136
.andPollIntervalInSeconds(10)
135137
)
@@ -154,7 +156,8 @@ fun configureDI(
154156
bindSingleton {
155157
AndroidAppExpiryCheckScheduler(
156158
repository = instance(),
157-
requestScheduler = instance()
159+
requestScheduler = instance(),
160+
storageProvider = instance()
158161
)
159162
}
160163
bindSingleton {
@@ -193,5 +196,6 @@ private fun configureObjectMapper(): ObjectMapper {
193196
registerKotlinModule()
194197
registerModule(JavaTimeModule())
195198
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
199+
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
196200
}
197201
}

backend/src/main/kotlin/me/sujanpoudel/playdeals/jobs/AndroidAppExpiryCheckScheduler.kt

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,22 @@ package me.sujanpoudel.playdeals.jobs
22

33
import me.sujanpoudel.playdeals.common.SIMPLE_NAME
44
import me.sujanpoudel.playdeals.common.loggingExecutionTime
5+
import me.sujanpoudel.playdeals.logger
56
import me.sujanpoudel.playdeals.repositories.DealRepository
67
import org.jobrunr.jobs.lambdas.JobRequest
8+
import org.jobrunr.jobs.states.StateName
79
import org.jobrunr.scheduling.JobRequestScheduler
810
import org.jobrunr.scheduling.RecurringJobBuilder
11+
import org.jobrunr.storage.StorageProvider
912
import java.time.Duration
13+
import java.time.Instant
14+
import java.time.temporal.ChronoUnit
1015
import java.util.UUID
1116

1217
class AndroidAppExpiryCheckScheduler(
1318
private val repository: DealRepository,
14-
private val requestScheduler: JobRequestScheduler
19+
private val requestScheduler: JobRequestScheduler,
20+
private val storageProvider: StorageProvider
1521
) : CoJobRequestHandler<AndroidAppExpiryCheckScheduler.Request>() {
1622

1723
override suspend fun handleRequest(jobRequest: Request): Unit = loggingExecutionTime(
@@ -21,6 +27,10 @@ class AndroidAppExpiryCheckScheduler(
2127
.map { AppDetailScrapper.Request(it.id) }
2228

2329
requestScheduler.enqueue(apps)
30+
31+
val lastUpdatedTime = Instant.now().minus(1, ChronoUnit.HOURS)
32+
val jobs = storageProvider.deleteJobsPermanently(StateName.FAILED, lastUpdatedTime)
33+
logger.info("deleted FAILED `$jobs`")
2434
}
2535

2636
class Request private constructor() : JobRequest {

0 commit comments

Comments
 (0)