mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-04 06:53:12 +00:00
faster retention policy when error and use of detach finalize when needed (#2966)
This commit is contained in:
parent
71946b911f
commit
6ae46c5fff
@ -24,6 +24,7 @@ const
|
|||||||
|
|
||||||
# Retention policy
|
# Retention policy
|
||||||
WakuArchiveDefaultRetentionPolicyInterval* = chronos.minutes(30)
|
WakuArchiveDefaultRetentionPolicyInterval* = chronos.minutes(30)
|
||||||
|
WakuArchiveDefaultRetentionPolicyIntervalWhenError* = chronos.minutes(1)
|
||||||
|
|
||||||
# Metrics reporting
|
# Metrics reporting
|
||||||
WakuArchiveDefaultMetricsReportInterval* = chronos.minutes(30)
|
WakuArchiveDefaultMetricsReportInterval* = chronos.minutes(30)
|
||||||
@ -193,6 +194,9 @@ proc periodicRetentionPolicy(self: WakuArchive) {.async.} =
|
|||||||
(await policy.execute(self.driver)).isOkOr:
|
(await policy.execute(self.driver)).isOkOr:
|
||||||
waku_archive_errors.inc(labelValues = [retPolicyFailure])
|
waku_archive_errors.inc(labelValues = [retPolicyFailure])
|
||||||
error "failed execution of retention policy", error = error
|
error "failed execution of retention policy", error = error
|
||||||
|
await sleepAsync(WakuArchiveDefaultRetentionPolicyIntervalWhenError)
|
||||||
|
## in case of error, let's try again faster
|
||||||
|
continue
|
||||||
|
|
||||||
await sleepAsync(WakuArchiveDefaultRetentionPolicyInterval)
|
await sleepAsync(WakuArchiveDefaultRetentionPolicyInterval)
|
||||||
|
|
||||||
|
|||||||
@ -1326,7 +1326,16 @@ proc removePartition(
|
|||||||
"ALTER TABLE messages DETACH PARTITION " & partitionName & " CONCURRENTLY;"
|
"ALTER TABLE messages DETACH PARTITION " & partitionName & " CONCURRENTLY;"
|
||||||
debug "removeOldestPartition", query = detachPartitionQuery
|
debug "removeOldestPartition", query = detachPartitionQuery
|
||||||
(await self.performWriteQuery(detachPartitionQuery)).isOkOr:
|
(await self.performWriteQuery(detachPartitionQuery)).isOkOr:
|
||||||
return err(fmt"error in {detachPartitionQuery}: " & $error)
|
if ($error).contains("FINALIZE"):
|
||||||
|
## We assume the database is suggesting to use FINALIZE when detaching a partition
|
||||||
|
let detachPartitionFinalizeQuery =
|
||||||
|
"ALTER TABLE messages DETACH PARTITION " & partitionName & " FINALIZE;"
|
||||||
|
debug "removeOldestPartition detaching with FINALIZE",
|
||||||
|
query = detachPartitionFinalizeQuery
|
||||||
|
(await self.performWriteQuery(detachPartitionFinalizeQuery)).isOkOr:
|
||||||
|
return err(fmt"error in FINALIZE {detachPartitionFinalizeQuery}: " & $error)
|
||||||
|
else:
|
||||||
|
return err(fmt"error in {detachPartitionQuery}: " & $error)
|
||||||
|
|
||||||
## Drop the partition
|
## Drop the partition
|
||||||
let dropPartitionQuery = "DROP TABLE " & partitionName
|
let dropPartitionQuery = "DROP TABLE " & partitionName
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user